App_TimerTreat 定时器中断处理函数
void App_TimerTreat(void) { st_TimerFlag.u16_b100ms = 0; // st_TimerFlag.u16_b20ms = 0; // st_TimerFlag.u16_b10ms = 0; // st_TimerFlag.u16_b4ms = 0; // st_TimerFlag.u16_b5ms = 0; // st_TimerFlag.u16_b1ms = 0; // st_TimerFlag1.u16_b1Second=0;
if (1==CPUTimer_getTimerOverflowStatus(CPUTIMER1_BASE)) //5ms
{
CPUTimer_clearOverflowFlag(CPUTIMER1_BASE);
st_TimerFlag.u16_b1ms=1;
u16_Clk4msCnt++;
if(u16_Clk4msCnt>=4)
{
u16_Clk4msCnt=0;
st_TimerFlag.u16_b4ms=1;
}
u16_Clk10msCnt++;
if(u16_Clk10msCnt>=10)
{
u16_Clk10msCnt=0;
st_TimerFlag.u16_b10ms=1;
}
u16_Clk20msCnt++;
if(u16_Clk20msCnt>=20)
{
u16_Clk20msCnt=0;
st_TimerFlag.u16_b20ms=1;
}
u16_Clk100msCnt++;
if(u16_Clk100msCnt>=100)
{
u16_Clk100msCnt=0;
st_TimerFlag.u16_b100ms=1;
}
u16_Clk1sCnt++;
if(u16_Clk1sCnt>=1000)
{
u16_Clk1sCnt=0;
st_TimerFlag1.u16_b1Second=1;
//LedToggleTimer ++;
}
u16_Clk5msCnt++;
if(u16_Clk5msCnt>=5)
{
u16_Clk5msCnt=0;
st_TimerFlag.u16_b5ms=1;
}
if(SciCommOverTime > 0U) //20230103 by m.h.y SCI通讯超时判断
{
SciCommOverTime--;
}
else
{
SciADataInitProc();//SciRevSta = Sci_IDLE;
}
if(LinSciCommOverTime > 0U) //20230103 by m.h.y LinSCI通讯超时判断
{
LinSciCommOverTime--;
}
else
{
LinSciRevSta = LinSci_IDLE;
}
if(BootJumpDelayTime > 0U)
{
BootJumpDelayTime --;
}
if(LinSCI_ModbusSendDelay > 0U)
{
LinSCI_ModbusSendDelay--;
}
if(EepromWriteWaitTime > 0U)
{
EepromWriteWaitTime--;
}
if(EepromReadWaitTime > 0U)
{
EepromReadWaitTime--;
}
if(SecondTimer++ == 1000 ) //1 Second timer
{
SecondTimer = 0;
WifiOverTime ++;
}
if(WifiResetTime > 0U)
{
WifiResetTime --;
}
else
{
GPIO_writePin(LinSci485TxPin,1);
}
if(EepromReadDelay > 0U)
{
EepromReadDelay -- ;
}
if(EepromReadOverTime > 0U)
{
EepromReadOverTime--;
}
}
}
这些函数的作用分别是内容::
- App_TimerTreat:处理定时器中断,更新定时器标志位,执行相应的定时任务。
- CPUTimer_getTimerOverflowStatus:获取CPU定时器的溢出状态。
- CPUTimer_clearOverflowFlag:清除CPU定时器的溢出标志位。
- SciADataInitProc:SCI通讯初始化处理函数。
- GPIO_writePin:控制GPIO引脚输出高电平或低电平。
原文地址: https://www.cveoy.top/t/topic/n9Qa 著作权归作者所有。请勿转载和采集!