2025-04-26 16:03:23 +08:00

129 lines
4.8 KiB
C

/** ##########################################################################
** 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;
}
}
}