249 lines
7.1 KiB
C
249 lines
7.1 KiB
C
|
|
/**
|
|||
|
|
* @auther whlphlg
|
|||
|
|
* @brief sys.c<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>йؿ<EFBFBD><EFBFBD><EFBFBD>ϵͳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĺ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* uwTick <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD> HAL_GetTick() <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD>Ż<EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>uwTick(ֻ<EFBFBD><EFBFBD>)<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD>uwTick<EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* uwTick ÿ<EFBFBD><EFBFBD>1ms<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>Σ<EFBFBD>ֻҪ#include "main.h"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>uwTick<EFBFBD><EFBFBD><EFBFBD><EFBFBD>hal<EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* @changedate 2020.09.13
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
//<2F>û<EFBFBD>include
|
|||
|
|
#include "at32a423.h"
|
|||
|
|
#include "systick.h"
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD>include<64><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
#include "sys.h"
|
|||
|
|
#include "task.h"
|
|||
|
|
|
|||
|
|
typedef struct
|
|||
|
|
{
|
|||
|
|
uint8_t enable_flag; // <20><><EFBFBD><EFBFBD><EFBFBD>Ƿ<C7B7><F1B1BBBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><F1B2BBB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD> (<28><>0Ϊ<30><CEAA><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD>)
|
|||
|
|
uint16_t interval_time; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>м<EFBFBD><D0BC><EFBFBD>ʱ<EFBFBD><CAB1> (<28><>λms)
|
|||
|
|
uint32_t last_time; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> (<28><>λms)
|
|||
|
|
uint8_t ready_flag; // <20><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><>0Ϊ<30><CEAA><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD>)
|
|||
|
|
uint32_t out_time; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱֹͣ<CDA3><D6B9><EFBFBD>ж<EFBFBD><D0B6><EFBFBD>ʱ<EFBFBD><CAB1> (<28><>λms)
|
|||
|
|
int32_t usage_tick; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>δ<EFBFBD><CEB4><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>VAL(CNT)<29>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD>sys.c<><63><EFBFBD><EFBFBD><EFBFBD><EFBFBD> System_RunTask())
|
|||
|
|
float usage_time; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>䣬<EFBFBD><E4A3AC>λΪus<75><73><EFBFBD><EFBFBD>λΪus<75><73><EFBFBD><EFBFBD>λΪus<75><73> (<28><><EFBFBD>㷽<EFBFBD><E3B7BD><EFBFBD><EFBFBD>sys.c<><63><EFBFBD><EFBFBD><EFBFBD><EFBFBD> System_RunTask())
|
|||
|
|
float usage_percent; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD>ռ<EFBFBD><D5BC>cpu<70>İٷֱ<D9B7> (<28><><EFBFBD>㷽<EFBFBD><E3B7BD><EFBFBD><EFBFBD>sys.c<><63><EFBFBD><EFBFBD><EFBFBD><EFBFBD> System_RunTask())
|
|||
|
|
void (*f)(void); // ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>еĺ<D0B5><C4BA><EFBFBD> (<28><>֪<EFBFBD><D6AA><EFBFBD><EFBFBD>ôָ<C3B4><D6B8>sys.c<><63><EFBFBD><EFBFBD><EFBFBD><EFBFBD> System_Init())
|
|||
|
|
}TaskStruct;
|
|||
|
|
|
|||
|
|
TaskStruct task_structs[TASK_NUMBER]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ľṹ<C4BD><E1B9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @auther whlphlg
|
|||
|
|
* @brief ϵͳ<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿһ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ṹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>enable_flag,interval_time,task_priority,f<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD>ص<EFBFBD>Ƭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>0
|
|||
|
|
* @changedate 2020.09.13
|
|||
|
|
*/
|
|||
|
|
void System_TaskInit()
|
|||
|
|
{
|
|||
|
|
task_structs[TASK1].enable_flag=1;
|
|||
|
|
task_structs[TASK1].interval_time=500;
|
|||
|
|
task_structs[TASK1].f=task1;
|
|||
|
|
|
|||
|
|
task_structs[TASK2].enable_flag=1;
|
|||
|
|
task_structs[TASK2].interval_time=10000;
|
|||
|
|
task_structs[TASK2].f=task2;
|
|||
|
|
|
|||
|
|
task_structs[TASK3].enable_flag=1;
|
|||
|
|
task_structs[TASK3].interval_time=500;
|
|||
|
|
task_structs[TASK3].f=task3;
|
|||
|
|
|
|||
|
|
task_structs[TASK4].enable_flag=1;
|
|||
|
|
task_structs[TASK4].interval_time=5;
|
|||
|
|
task_structs[TASK4].f=task4;
|
|||
|
|
|
|||
|
|
task_structs[TASK5].enable_flag=1;
|
|||
|
|
task_structs[TASK5].interval_time=5;
|
|||
|
|
task_structs[TASK5].f=task5;
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @auther whlphlg
|
|||
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͳ<EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD> usage_time,usage_percent,<EFBFBD>ʹ˺<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>ε<EFBFBD>total_usage_time
|
|||
|
|
* @changedate 2020.09.13
|
|||
|
|
*/
|
|||
|
|
int32_t total_usage_tick; // <20><><EFBFBD><EFBFBD><EFBFBD>Ǵ˺<C7B4><CBBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>ε<EFBFBD><CEB5><EFBFBD>tick<63><6B><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>debug
|
|||
|
|
float total_usage_time; // <20><><EFBFBD><EFBFBD><EFBFBD>Ǵ˺<C7B4><CBBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>ε<EFBFBD><CEB5><EFBFBD>ʱ<EFBFBD><CAB1>(<28><>λus)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>debug
|
|||
|
|
int32_t total_usage_tick_max_in1s; // total_usage_tick <20><>ij1<C4B3><31><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>ֵ
|
|||
|
|
float total_usage_time_max_in1s; // total_usage_time <20><>ij1<C4B3><31><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>ֵ
|
|||
|
|
|
|||
|
|
void System_TaskRun()
|
|||
|
|
{
|
|||
|
|
int64_t total_begin_tick = SysTick->VAL - get_system_tick()*(SysTick->LOAD+1); // ˼·ͬ<C2B7><CDAC><EFBFBD><EFBFBD> begin_tick
|
|||
|
|
|
|||
|
|
for(uint8_t i=0;i<TASK_NUMBER;i++)
|
|||
|
|
{
|
|||
|
|
if(task_structs[i].ready_flag)
|
|||
|
|
{
|
|||
|
|
task_structs[i].ready_flag--;
|
|||
|
|
// <20><><EFBFBD><EFBFBD> begin_tick <20>Ĺ<EFBFBD>ʽ = <20><> >0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> - <20><>------ <0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-------<2D><> (begin_tick < 0)
|
|||
|
|
int64_t begin_tick = SysTick->VAL - get_system_tick()*(SysTick->LOAD+1);
|
|||
|
|
|
|||
|
|
task_structs[i].f(); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ṹ<EFBFBD><E1B9B9><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD> usage_tick <20>Ĺ<EFBFBD>ʽ = <20><>ʼ<EFBFBD><CABC>tick - <20><>---------------<2D><><EFBFBD>ڵ<EFBFBD>tick--------------<2D><>(<28><><EFBFBD><EFBFBD>tick<63><6B><EFBFBD>Ǹ<EFBFBD><C7B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ʼ<EFBFBD><CABC>tick > <20><><EFBFBD>ڵ<EFBFBD>tick)
|
|||
|
|
task_structs[i].usage_tick = begin_tick - (SysTick->VAL - get_system_tick()*(SysTick->LOAD+1));
|
|||
|
|
// <20><><EFBFBD><EFBFBD> usage_time <20>Ĺ<EFBFBD>ʽ = <20><>-----------usage_tick----------<2D><> / <20><>1ms<6D><73>tick<63><6B><EFBFBD><EFBFBD>--<2D><> * 1000(<28><>λ<EFBFBD><CEBB><EFBFBD>㣬1ms<6D><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1000us)
|
|||
|
|
task_structs[i].usage_time = (float)task_structs[i].usage_tick / (SysTick->LOAD+1) * 1000.f;
|
|||
|
|
// <20><><EFBFBD><EFBFBD> usage_percent <20>Ĺ<EFBFBD>ʽ = <20><>-----<2D><><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD>(<28><>λHz)-----<2D><> * <20><>---<2D><><EFBFBD><EFBFBD><F1B5A5B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>(<28><>λs)----<2D><> * 100(<28><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>%,<2C><><EFBFBD><EFBFBD>*100)
|
|||
|
|
task_structs[i].usage_percent = 1000.f/task_structs[i].interval_time * task_structs[i].usage_time/1000000.f * 100;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
total_usage_tick = total_begin_tick - (SysTick->VAL - get_system_tick()*(SysTick->LOAD+1)); // ˼·ͬ<C2B7><CDAC><EFBFBD><EFBFBD> usage_tick
|
|||
|
|
total_usage_time = (float)total_usage_tick / (SysTick->LOAD+1) * 1000.f; // ˼·ͬ<C2B7><CDAC><EFBFBD><EFBFBD> usage_time
|
|||
|
|
|
|||
|
|
if(total_usage_tick_max_in1s < total_usage_tick)
|
|||
|
|
{
|
|||
|
|
total_usage_tick_max_in1s = total_usage_tick;
|
|||
|
|
}
|
|||
|
|
if(total_usage_time_max_in1s < total_usage_time)
|
|||
|
|
{
|
|||
|
|
total_usage_time_max_in1s = total_usage_time;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @auther whlphlg
|
|||
|
|
* @brief ϵͳ<EFBFBD><EFBFBD><EFBFBD>£<EFBFBD>ÿ<EFBFBD><EFBFBD>1ms<EFBFBD>ӵδ<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD>жϽ<EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD> (<EFBFBD><EFBFBD>stm32f4xx_it.c<EFBFBD><EFBFBD> System_Update()<EFBFBD>ﱻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
|||
|
|
* ͨ<EFBFBD><EFBFBD>uwTick,enable_flag,stop_time<EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>ȷ<EFBFBD><EFBFBD>ready_flag<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>last_time,stop_time
|
|||
|
|
* ÿ<EFBFBD><EFBFBD>1000ms<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD> total_usage_tick_max_in1s <EFBFBD><EFBFBD> total_usage_time_max_in1s
|
|||
|
|
* @changedate 2020.09.15
|
|||
|
|
*/
|
|||
|
|
void System_TaskUpdate()
|
|||
|
|
{
|
|||
|
|
for(uint8_t i=0;i<TASK_NUMBER;i++)
|
|||
|
|
{
|
|||
|
|
if(task_structs[i].out_time != 0)
|
|||
|
|
{
|
|||
|
|
if(task_structs[i].out_time == 1)
|
|||
|
|
{
|
|||
|
|
Task_InCallback(i); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD>лָ<D0BB><D6B8><EFBFBD><EFBFBD>ָ<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>Ļص<C4BB><D8B5><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
}
|
|||
|
|
task_structs[i].out_time--; //<2F><><EFBFBD><EFBFBD> out_time
|
|||
|
|
}
|
|||
|
|
// ֻ<><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3<EFBFBD><33><EFBFBD><EFBFBD><EFBFBD>ﵽ<EFBFBD><EFB5BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7> ready_flag <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> last_time
|
|||
|
|
if(task_structs[i].enable_flag &&
|
|||
|
|
task_structs[i].out_time == 0 &&
|
|||
|
|
task_structs[i].interval_time<=(get_system_tick()-task_structs[i].last_time))
|
|||
|
|
{
|
|||
|
|
task_structs[i].ready_flag++;
|
|||
|
|
task_structs[i].last_time=get_system_tick();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if(get_system_tick()%1000 == 0) // ÿ<><C3BF>1000ms<6D><73><EFBFBD><EFBFBD>һ<EFBFBD><D2BB> total_usage_tick_max_in1s <20><> total_usage_time_max_in1s
|
|||
|
|
{
|
|||
|
|
total_usage_tick_max_in1s = total_usage_tick;
|
|||
|
|
total_usage_time_max_in1s = total_usage_time;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @auther whlphlg
|
|||
|
|
* @brief <EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣһ<EFBFBD><EFBFBD>ʱ<EFBFBD>䣬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>Ļص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* @changedate 2020.09.13
|
|||
|
|
*/
|
|||
|
|
void System_TaskOut(uint8_t task_number,uint32_t stop_time)
|
|||
|
|
{
|
|||
|
|
task_structs[task_number].out_time = stop_time;
|
|||
|
|
Task_OutCallback(task_number);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @auther whlphlg
|
|||
|
|
* @brief <EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>رգ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>Ļص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* @changedate 2020.09.13
|
|||
|
|
*/
|
|||
|
|
void System_TaskDisable(uint8_t task_number)
|
|||
|
|
{
|
|||
|
|
task_structs[task_number].enable_flag = 0;
|
|||
|
|
Task_DisableCallback(task_number);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @auther whlphlg
|
|||
|
|
* @brief <EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>Ļص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* @changedate 2020.09.13
|
|||
|
|
*/
|
|||
|
|
void System_TaskEnable(uint8_t task_number)
|
|||
|
|
{
|
|||
|
|
task_structs[task_number].enable_flag = 1;
|
|||
|
|
Task_EnableCallback(task_number);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @auther whlphlg
|
|||
|
|
* @brief ϵͳǿ<EFBFBD><EFBFBD>ͣ<EFBFBD><EFBFBD>
|
|||
|
|
* @changedate 2020.09.14
|
|||
|
|
*/
|
|||
|
|
void System_AllTaskDisable()
|
|||
|
|
{
|
|||
|
|
while(1)
|
|||
|
|
{
|
|||
|
|
for(uint8_t i=0;i<TASK_NUMBER;i++)
|
|||
|
|
{
|
|||
|
|
task_structs[i].enable_flag = 0;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @auther whlphlg
|
|||
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ź<EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>
|
|||
|
|
* @changedate 2021.04.15
|
|||
|
|
*/
|
|||
|
|
void System_SoftWatchDogInit(SoftWatchDogStruct *dog,uint32_t time_load,uint8_t default_state)
|
|||
|
|
{
|
|||
|
|
dog->state = default_state;
|
|||
|
|
dog->time_load = time_load;
|
|||
|
|
dog->time_cnt = dog->time_load;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @auther whlphlg
|
|||
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ź<EFBFBD>ι<EFBFBD><EFBFBD>
|
|||
|
|
* @changedate 2021.04.15
|
|||
|
|
*/
|
|||
|
|
void System_SoftWatchDogFeed(SoftWatchDogStruct *dog)
|
|||
|
|
{
|
|||
|
|
dog->state = 1;
|
|||
|
|
dog->time_cnt = dog->time_load;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @auther whlphlg
|
|||
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ź<EFBFBD>״̬
|
|||
|
|
* @changedate 2021.04.15
|
|||
|
|
*/
|
|||
|
|
void System_SoftWatchDogUpdate(SoftWatchDogStruct *dog)
|
|||
|
|
{
|
|||
|
|
if(dog->time_cnt > 0)
|
|||
|
|
{
|
|||
|
|
dog->time_cnt--;
|
|||
|
|
dog->state = 1;
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
dog->time_cnt = 0;
|
|||
|
|
dog->state = 0;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @auther whlphlg
|
|||
|
|
* @brief <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ź<EFBFBD>״̬
|
|||
|
|
* @changedate 2021.04.15
|
|||
|
|
*/
|
|||
|
|
uint8_t System_GetSoftWatchDogState(SoftWatchDogStruct *dog)
|
|||
|
|
{
|
|||
|
|
return dog->state;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|