129 lines
4.8 KiB
C
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;
|
|
}
|
|
}
|
|
} |