📄 stimer.c
字号:
#include "config.h"
/*******************************************************************************
程序名:vSoftTimer_Init
说 明:初始化软定时器
********************************************************************************/
void vSoftTimer_Init(void)
{
unsigned char i;
for(i=0; i<MAX_SOFT_TIMER; i++)
{
rSoftTimer[i].chFlag = 0;
rSoftTimer[i].nCountTime = 0;
rSoftTimer[i].Function = NULL;
}
}
/*******************************************************************************
程序名:vSoftTimer_Run
说 明:启动软定时器
********************************************************************************/
void vSoftTimer_Run(unsigned char chIndex, unsigned int nDelayTime, void(* Function)(void))
{
if((nDelayTime != 0) && (Function != NULL))
{
rSoftTimer[chIndex].chFlag = 0x01;
rSoftTimer[chIndex].nCountTime = nDelayTime;
rSoftTimer[chIndex].Function = Function;
}
}
/*******************************************************************************
程序名:vSoftTimer_Stop
说 明:停止软定时器
********************************************************************************/
void vSoftTimer_Stop(unsigned char chIndex)
{
rSoftTimer[chIndex].chFlag = 0x00;
rSoftTimer[chIndex].Function = NULL;
}
/*******************************************************************************
程序名:vSoftTimer_Sub
说 明:软定时器计数加1
********************************************************************************/
void vSoftTimer_Sub(void)
{
unsigned char i;
if(stimer_tick > 98) //48,50, 修正
{
stimer_tick = 0;
for(i=0; i<MAX_SOFT_TIMER; i++)
{
if((rSoftTimer[i].chFlag == 0x01) && (rSoftTimer[i].nCountTime > 0)) rSoftTimer[i].nCountTime--;
}
}
}
/*******************************************************************************
程序名:vSoftTimer_Check
说 明:检查定时器溢出事件
********************************************************************************/
void vSoftTimer_Check(void)
{
unsigned char i;
for(i=0; i<MAX_SOFT_TIMER; i++)
{
if((rSoftTimer[i].chFlag == 0x01) && (rSoftTimer[i].nCountTime == 0) && (rSoftTimer[i].Function != NULL))
{
rSoftTimer[i].Function();
}
}
}
/*******************************************************************************
程序名:vSoftTimer_Null
说 明:清空定时器
********************************************************************************/
void vSoftTimer_Null(unsigned char chIndex)
{
rSoftTimer[chIndex].nCountTime = 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -