修改任务变量的位置

This commit is contained in:
起床就犯困 2024-12-10 22:25:55 +08:00
parent de2fb8134e
commit 0a1ae49530
3 changed files with 75 additions and 57 deletions

View File

@ -6,42 +6,9 @@
void task_Init(void); void task_Init(void);
/* 控制运行指示灯和喂狗 */
#define runled_reloadVal 1000 /* 任务执行间隔 */
#define runled_offset 0 /* 任务执行偏移量 */
extern STR_TimeSliceOffset m_runled;
void Task_Runled(void);
/* 喂狗 */
#define wdi_reloadVal 1000 /* 任务执行间隔 */
#define wdi_offset 100 /* 任务执行偏移量 */
extern STR_TimeSliceOffset m_wdi;
void Task_wdi(void);
/* 刷新寄存器中的数据 */
#define refreshJudgeData_reloadVal 1000 /* 任务执行间隔 */
#define refreshJudgeData_offset 0 /* 任务执行偏移量 */
extern STR_TimeSliceOffset m_refreshJudgeData;
void Task_refreshJudgeData(void);
/* 启动任务 */
#define startControl_reloadVal 5000 /* 任务执行间隔 */
#define startControl_offset 100 /* 任务执行偏移量 */
extern STR_TimeSliceOffset g_startControl;
void Task_startControl(void);
/* 软启动 */
#define softStart_reloadVal 10 /* 任务执行间隔 */
#define softStart_offset 0 /* 任务执行偏移量 */
extern STR_TimeSliceOffset m_softStart;
void Task_softStart(void);
/* 回路阻抗检测 */
#define impedanceCalculation_reloadVal 100 /* 任务执行间隔 */
#define impedanceCalculation_offset 0 /* 任务执行偏移量 */
extern STR_TimeSliceOffset m_impedanceCalculation;
void Task_impedanceCalculation(void);
void beginStartControlTask(void);

View File

@ -3,6 +3,7 @@
#include "parameter.h" #include "parameter.h"
#include "comm_types.h" #include "comm_types.h"
#include "FM_GPIO.h" #include "FM_GPIO.h"
#include "task.h"
static void stopChargWork(void); static void stopChargWork(void);
@ -405,6 +406,8 @@ void stopChargWork(void)
{ {
EN_PWMOUT_Diseable(); EN_PWMOUT_Diseable();
pwm_Stop(); pwm_Stop();
setMPPT_Mode(noWork);
beginStartControlTask();
} }
/** /**
@ -433,11 +436,9 @@ BOOL stopChargConditions(void)
*/ */
BOOL floatChargConditions(void) BOOL floatChargConditions(void)
{ {
if (g_cfgParameter.constantVoltageChargeV < getBatteryVoltage() if ((g_cfgParameter.constantVoltageChargeV < getBatteryVoltage() && g_cfgParameter.floatI > getChargCurrent())) {
&& g_cfgParameter.floatI > getChargCurrent()) {
return TRUE; return TRUE;
} }
return FALSE; return FALSE;
} }
@ -451,6 +452,10 @@ BOOL floatChargConditions(void)
*/ */
BOOL mpptChargConditions(void) BOOL mpptChargConditions(void)
{ {
if (((g_cfgParameter.constantVoltageChargeV - 0.2f) > getBatteryVoltage())
&& (getChargCurrent() > 0.1f)) {
return TRUE;
}
return FALSE; return FALSE;
} }
@ -464,7 +469,11 @@ BOOL mpptChargConditions(void)
*/ */
BOOL constantVChargConditions(void) BOOL constantVChargConditions(void)
{ {
if ((g_cfgParameter.constantVoltageChargeV < getBatteryVoltage())
&& ((g_cfgParameter.floatI + 0.1) <= getChargBatteryCurrent())) {
return TRUE;
}
return FALSE; return FALSE;
} }
@ -478,7 +487,6 @@ void chargControlMode(void)
{ {
if (stopChargConditions()) { if (stopChargConditions()) {
stopChargWork(); stopChargWork();
setMPPT_Mode(noWork);
} }
if (floatChargConditions()) { if (floatChargConditions()) {

View File

@ -6,6 +6,46 @@
#include "chargControlEnum.h" #include "chargControlEnum.h"
#include "bl_chargControl.h" #include "bl_chargControl.h"
/* 控制运行指示灯和喂狗 */
// #define runled_reloadVal 1000 /* 任务执行间隔 */
static uint16_t runled_reloadVal = 1000; /* 任务执行间隔 */
#define runled_offset 0 /* 任务执行偏移量 */
static STR_TimeSliceOffset m_runled;
static void Task_Runled(void);
/* 喂狗 */
#define wdi_reloadVal 1000 /* 任务执行间隔 */
#define wdi_offset 100 /* 任务执行偏移量 */
static STR_TimeSliceOffset m_wdi;
static void Task_wdi(void);
/* 刷新寄存器中的数据 */
#define refreshJudgeData_reloadVal 1000 /* 任务执行间隔 */
#define refreshJudgeData_offset 0 /* 任务执行偏移量 */
static STR_TimeSliceOffset m_refreshJudgeData;
static void Task_refreshJudgeData(void);
/* 启动任务 */
#define startControl_reloadVal 5000 /* 任务执行间隔 */
#define startControl_offset 100 /* 任务执行偏移量 */
static STR_TimeSliceOffset m_startControl;
static void Task_startControl(void);
/* 软启动 */
#define softStart_reloadVal 1 /* 任务执行间隔 */
#define softStart_offset 0 /* 任务执行偏移量 */
static STR_TimeSliceOffset m_softStart;
static void Task_softStart(void);
/* 回路阻抗检测 */
#define impedanceCalculation_reloadVal 100 /* 任务执行间隔 */
#define impedanceCalculation_offset 0 /* 任务执行偏移量 */
static STR_TimeSliceOffset m_impedanceCalculation;
static void Task_impedanceCalculation(void);
/** /**
* @brief * @brief
* @param None * @param None
@ -17,10 +57,6 @@ void task_Init(void)
TimeSliceOffset_Register(&m_runled, Task_Runled, runled_reloadVal, runled_offset); TimeSliceOffset_Register(&m_runled, Task_Runled, runled_reloadVal, runled_offset);
TimeSliceOffset_Register(&m_wdi, Task_wdi, wdi_reloadVal, wdi_offset); TimeSliceOffset_Register(&m_wdi, Task_wdi, wdi_reloadVal, wdi_offset);
} }
/** /**
@ -29,7 +65,6 @@ void task_Init(void)
* @retval None * @retval None
* *
*/ */
STR_TimeSliceOffset m_runled;
void Task_Runled(void) void Task_Runled(void)
{ {
RUN_LED(); RUN_LED();
@ -40,7 +75,6 @@ void Task_Runled(void)
* @param None * @param None
* @retval None * @retval None
*/ */
STR_TimeSliceOffset m_wdi;
void Task_wdi(void) void Task_wdi(void)
{ {
/* 每天复位一次复位前将电量信息写入flash中 */ /* 每天复位一次复位前将电量信息写入flash中 */
@ -64,14 +98,11 @@ void Task_wdi(void)
* @retval None * @retval None
* *
*/ */
STR_TimeSliceOffset m_refreshJudgeData;
void Task_refreshJudgeData(void) void Task_refreshJudgeData(void)
{ {
/* 获取数据 */ /* 获取数据 */
setInputVoltage(); setInputVoltage();
setHighSideMosTemperature(); setHighSideMosTemperature();
/* 判断有无电池 */ /* 判断有无电池 */
if (getBatteryState() == FALSE && (getChargBatteryCurrent() > 1 || getChargBatteryCurrent() < -1) if (getBatteryState() == FALSE && (getChargBatteryCurrent() > 1 || getChargBatteryCurrent() < -1)
@ -80,7 +111,7 @@ void Task_refreshJudgeData(void)
} }
/* 温度检测 */ /* 温度检测 */
if () { if (1) {
} }
@ -97,20 +128,34 @@ void Task_refreshJudgeData(void)
* @retval None * @retval None
* *
*/ */
STR_TimeSliceOffset g_startControl;
void Task_startControl(void) void Task_startControl(void)
{ {
/* 是否达到启动条件 */
if (getSolarInCircuitVoltage() > g_cfgParameter.startSolarOpenCircuitV) { if (getSolarInCircuitVoltage() > g_cfgParameter.startSolarOpenCircuitV) {
TimeSliceOffset_Unregister(&g_startControl); TimeSliceOffset_Unregister(&m_startControl);
g_startControl.runFlag = 0; m_startControl.runFlag = 0;
/* 判断有无电池 */
if (getOutputVoltage() > 10) { if (getOutputVoltage() > 10) {
setBatteryState(TRUE); setBatteryState(TRUE);
} else { } else {
setBatteryState(FALSE); setBatteryState(FALSE);
} }
/* 启动软起动任务 */
TimeSliceOffset_Register(&m_softStart, Task_softStart, softStart_reloadVal, softStart_offset); TimeSliceOffset_Register(&m_softStart, Task_softStart, softStart_reloadVal, softStart_offset);
} }
} }
/**
* @brief
* @param
* @retval
*/
void beginStartControlTask(void)
{
TimeSliceOffset_Register(&m_wdi, Task_startControl, startControl_reloadVal, startControl_offset);
}
/** /**
* @brief * @brief
@ -118,7 +163,6 @@ void Task_startControl(void)
* @retval * @retval
* *
*/ */
STR_TimeSliceOffset m_softStart;
void Task_softStart(void) void Task_softStart(void)
{ {
static uint16_t num = 0; static uint16_t num = 0;
@ -147,7 +191,7 @@ void Task_softStart(void)
} }
else { else {
setDutyRatio(getDutyRatio() + 0.05f); setDutyRatio(getDutyRatio() + 0.01f);
set_pwmDutyRatio(getDutyRatio()); set_pwmDutyRatio(getDutyRatio());
} }
} }
@ -157,7 +201,6 @@ void Task_softStart(void)
* @param * @param
* @retval * @retval
*/ */
STR_TimeSliceOffset m_impedanceCalculation;
void Task_impedanceCalculation(void) void Task_impedanceCalculation(void)
{ {
static uint8_t num = 0; static uint8_t num = 0;