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引脚输出高电平或低电平。
App_TimerTreat 定时器中断处理函数

原文地址: https://www.cveoy.top/t/topic/n9Qa 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录