[STM32F1] 非阻塞的用法

[复制链接]
1095|0
 楼主| pixhw 发表于 2023-5-25 15:32 | 显示全部楼层 |阅读模式
  1. E_Bool Ticker_Out(u32 *pTicker, u32 uCompareValue)
  2. {
  3.     u32 uTicks = 0;
  4.         uTicks = BSP_Get_SysTick();
  5.    
  6.     if(0 == uCompareValue)
  7.         {
  8.                   *pTicker = uTicks;
  9.           return True;               
  10.         }
  11.     else
  12.         {
  13.             if(uTicks >= (*pTicker))
  14.                         {
  15.                                   uTicks = uTicks - (*pTicker);
  16.                         }
  17.             else
  18.                         {
  19.                                   uTicks = (U32_MAX_VALUE - (*pTicker)) + uTicks;
  20.                         }
  21.             if (uTicks >= uCompareValue)
  22.                         {
  23.                             return True;
  24.                         }
  25.     }
  26. return False;
  27. }

  1. u32 BSP_Get_SysTick(void)
  2. {
  3.     return gSystickTimes;    /* 获取系统心跳 */              
  4. }
  5. void SysTick_Handler(void)
  6. {
  7.    gSystickTimes++;      /* 系统心跳计数 */
  8. }

  1. int main()
  2. {
  3.     E_Bool eState = False;
  4.         static u32 uSampleTicker = 0;

  5.     while(1)
  6.     {
  7.         eState = Ticker_Out(&uSampleTicker, 500);
  8.             if(True == eState)
  9.             {
  10.             Ticker_Out(&uSampleTicker, 0);
  11.             LED_ON();
  12.         }
  13.     }
  14. }



您需要登录后才可以回帖 登录 | 注册

本版积分规则

50

主题

4971

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部