/** ########################################################################## ** Filename : SimpleOs_Time.c ** Project : ** Module : ** Processor : ** Version : 1.0 ** Compiler : ** Date/Time : ** Abstract : ** Contents : ** Note : ** (c) Copyright dmdz Co.,Ltd ** -------------------------------------------------------------------------- ** R E V I S I O N H I S T O R Y ** -------------------------------------------------------------------------- ** Date Ver Author Description ** -20231103- V01-- --Linboyi--- --初版-- ** #########################################################################*/ /***************************************************************************** * I N C L U D E F I L E S *****************************************************************************/ #include "common_types.h" #include "SimpleOs_Cfg.h" #include "SimpleOs.h" /***************************************************************************** * D E F I N E S / M A C R O S *****************************************************************************/ /***************************************************************************** * T Y P E D E F I N I T I O N S *****************************************************************************/ typedef struct { uint16_t usAlarmTime; uint16_t usAlarmCycleTime; } SimpleOsTime_Struct_Type; /***************************************************************************** * G L O B A L V A R I A B L E S * only configuration table allowed here,variables are not allowed! *****************************************************************************/ static SimpleOsTime_Struct_Type SimpleOsTime_Struct[OS_TASK_MAX_NUM]; /***************************************************************************** * C O N S T A N T S *****************************************************************************/ /***************************************************************************** * F U N C T I O N P R O T O T Y P E *****************************************************************************/ static void SimpleOsTime_SetTaskAlarm(uint8_t TaskId,uint16_t deltaTicks,uint16_t cycle); /***************************************************************************** |Prototype : SimpleOsTime_Init |Called by : |Preconditions : |Input parameters : |Output parameters : |Return value : |Description : *****************************************************************************/ void SimpleOsTime_Init(void) { (void)SimpleOsTime_SetTaskAlarm(OS_Task1ms, OS_Task1msDeltaTicks, OS_Task1msCycle); (void)SimpleOsTime_SetTaskAlarm(OS_Task2ms, OS_Task2msDeltaTicks, OS_Task2msCycle); (void)SimpleOsTime_SetTaskAlarm(OS_Task5msA, OS_Task5msADeltaTicks, OS_Task5msACycle); (void)SimpleOsTime_SetTaskAlarm(OS_Task5msB, OS_Task5msBDeltaTicks, OS_Task5msBCycle); (void)SimpleOsTime_SetTaskAlarm(OS_Task5msC, OS_Task5msCDeltaTicks, OS_Task5msCCycle); (void)SimpleOsTime_SetTaskAlarm(OS_Task10msA, OS_Task10msADeltaTicks, OS_Task10msACycle); (void)SimpleOsTime_SetTaskAlarm(OS_Task10msB, OS_Task10msBDeltaTicks, OS_Task10msBCycle); (void)SimpleOsTime_SetTaskAlarm(OS_Task10msC, OS_Task10msCDeltaTicks, OS_Task10msCCycle); (void)SimpleOsTime_SetTaskAlarm(OS_Task10msD, OS_Task10msDDeltaTicks, OS_Task10msDCycle); (void)SimpleOsTime_SetTaskAlarm(OS_Task10msE, OS_Task10msEDeltaTicks, OS_Task10msECycle); } /***************************************************************************** |Prototype : SimpleOsTime_SetTaskAlarm |Called by : |Preconditions : |Input parameters : |Output parameters : |Return value : |Description : *****************************************************************************/ static void SimpleOsTime_SetTaskAlarm(uint8_t TaskId,uint16_t deltaTicks,uint16_t cycle) { if(TaskId < (uint8_t)OS_TASK_MAX_NUM) { SimpleOsTime_Struct[TaskId].usAlarmCycleTime = cycle; SimpleOsTime_Struct[TaskId].usAlarmTime = deltaTicks; } } /***************************************************************************** |Prototype : SimpleOsTime_Callback |Called by : |Preconditions : |Input parameters : |Output parameters : |Return value : |Description : *****************************************************************************/ void SimpleOsTime_Callback(void) { uint8_t TaskId; for(TaskId = 0; TaskId < OS_TASK_MAX_NUM; TaskId ++) { if((uint16_t)0u!= SimpleOsTime_Struct[TaskId].usAlarmTime) { SimpleOsTime_Struct[TaskId].usAlarmTime --; } if((uint16_t)0u== SimpleOsTime_Struct[TaskId].usAlarmTime) { (void)SimpleOs_ActiveTask(TaskId); SimpleOsTime_Struct[TaskId].usAlarmTime = SimpleOsTime_Struct[TaskId].usAlarmCycleTime; } } }