<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      RT-Thread之四種延時函數

      在RT-Thread實時操作系統中,延時函數是實現任務調度的關鍵工具。它們允許任務在指定的時間間隔內掛起,釋放CPU資源供其他任務運行,從而提高系統響應性和資源利用率。RT-Thread提供了四種主要的延時函數:

      • 絕對延時(精準延時)
      rt_err_t rt_thread_delay_until(rt_tick_t *tick, rt_tick_t inc_tick)
      
      • 相對延時(基于當前時間)
      rt_err_t rt_thread_delay(rt_tick_t tick)
      
      • 毫秒級延時
      rt_err_t rt_thread_mdelay(rt_int32_t ms)
      
      • 微秒級硬件延時(可基于基于DWT或定時器)
      RT_WEAK void rt_hw_us_delay(rt_uint32_t us)
      

      注意:前三個函數受系統tick影響,tick = (1 / RT_TICK_PER_SECOND)秒,其中RT_TICK_PER_SECOND默認為1000,即默認tick = 1ms。

      一、rt_thread_delay_until()函數

      此函數提供一個固定周期的精準延時,其特點是基于預計算的絕對時間,而不是從調用時刻開始計時。這意味著它可以避免累積誤差,適用于需要嚴格定時周期性任務的場景(如PID控制、ADC采樣等)。

      注意:在對時域算法離散化時,dt步長尤為重要,它關乎系統的穩定和精度!

      /**
       * @brief   線程2入口函數
       * @param   無
       * @retval  無
       */
      void thread_2_entry(void* param)
      {
          while(1)
          {
              rt_tick_t now_tick = rt_tick_get();     /* 獲取當前時間,從此刻記時 */
       
      		sys_conrtol();
              
               /* 再延時(ticks) = 1000 - sys_conrtol()執行時間 */
              /* 保證sys_conrtol()執行周期為嚴格的1000個ticks */
              rt_thread_delay_until(&now_tick, 1000);    
          }
      }
      

      關鍵點:

      • 必須&last_tick(指針)傳輸上次延時結束時的時間,以實現精準循環。
      • 適用于需要嚴格時間間隔的任務,如PWM控制、傳感器采樣等。
      • 長時間運行也不會出現累積誤差。

      二、rt_thread_delay()函數

      該函數實現相對延時,即從當前時刻開始掛起線程 delay 個系統時鐘節拍(tick)。它的特點是計算簡單,但如果在任務中有其他耗時操作,可能導致周期不穩定。

      /**
       * @brief   線程2入口函數
       * @param   無
       * @retval  無
       */
      void thread_2_entry(void* param)
      {
          while(1)
          {
      		sys_conrtol();
              
              /* 再延時時間(ticks) = 1000  */
              /* sys_conrtol()函數執行時間不確定,實際執行周期 > 1000 ticks*/
              rt_thread_delay(1000);    
          }
      }
      

      關鍵點:

      • 適用于不要求嚴格周期的任務,如后臺日志打印、網絡輪詢。
      • 如果任務本身的執行時間較長,會導致總周期不再是準確的 delay。
      • RT-Thread的系統tick通常為1ms(默認配置),delay=1000 表示1000ms(1秒)。
      • 用戶可通過修改RT_TICK_PER_SECOND調整tick分辨率,但需權衡系統性能。

      三、rt_thread_mdelay()函數

      由于 rt_thread_delay() 的延時單位是系統tick(默認1ms),而 rt_thread_mdelay() 直接指定毫秒(ms)單位,更方便開發者進行計算。

      /**
       * @brief   線程2入口函數
       * @param   無
       * @retval  無
       */
      void thread_2_entry(void* param)
      {
          while(1)
          {
      		sys_conrtol();
              
              /* 再延時時間(ticks) = 1000  */
              /* sys_conrtol()函數執行時間不確定,實際執行周期 > 1000 ms*/
              rt_thread_mdelay(1000);    
          }
      }
      

      關鍵點:

      • 本質上仍然是 基于 rt_thread_delay 的封裝,適用于需要直接使用毫秒單位的情況。
      • 常用于設備輪詢、IO等待等場景。
      • 延時精度受限于tick分辨率。

      四、rt_hw_us_delay()函數

      這是基于CPU空循環實現的硬件級延時,精度遠高于 rt_thread_delayrt_thread_mdelay,適用于短時間、高精度的任務(如SPI/I2C通信時序控制)。

      注意:

      • 不會觸發線程調度,適用于短延時,長時間延時應優先使用調度函數
      • 依賴于CPU頻率,部分STM32/MCU可能需要調整delay_us的計算方式。
      • 部分芯片不支持需自己實現。
      ......
          
      /* 拉低CS片選信號 */
      rt_pin_write(SPI_CS_PIN, PIN_LOW);
      
      /* 10us延時(確保SPI設備就緒) */
      rt_hw_us_delay(10);
      
      /* SPI數據傳輸 */
      rt_spi_send(spi_dev, &data, 1);
      
      /* 拉高CS */
      rt_pin_write(SPI_CS_PIN, PIN_HIGH);
      
      ......
      

      關鍵點:

      • 適用于硬件驅動開發(如GPIO、SPI、I2C)。
      • 慎用在主線程,否則會阻塞其他任務運行

      RT-Thread提供了四種不同的延時方式,適用于不同精度的任務調度需求。合理選擇延時函數可以提高系統的實時性和穩定性。


      posted @ 2025-10-27 19:42  比特向陽  閱讀(14)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 又粗又硬又黄a级毛片| 天堂av网一区二区三区| 亚洲国产成人久久精品APP| 军人粗大的内捧猛烈进出视频| 起碰免费公开97在线视频| 亚洲乱码一区二区三区视色| 日本亚洲色大成网站www久久| 少妇性bbb搡bbb爽爽爽欧美| 延安市| 亚洲一区在线观看青青蜜臀| 99精品国产中文字幕| 国产不卡一区二区四区| 五月天国产成人av免费观看| 夜夜高潮次次欢爽av女| 日本一区二区精品色超碰| 国产日韩精品欧美一区灰| 亚洲av综合色一区二区| 特级做a爰片毛片免费看无码| 亚洲欧美日韩国产精品专区| 亚洲码国产精品高潮在线| 亚洲av无码专区在线亚| 精品久久人人妻人人做精品| 性xxxx欧美老妇胖老太性多毛| 亚洲av伊人久久综合性色| 丰满少妇内射一区| 强奷漂亮人妻系列老师| 国产成人av三级在线观看| 亚洲丰满熟女一区二区v| 国产午夜成人久久无码一区二区| 亚洲免费观看视频| 国产精品性色一区二区三区| 最近中文字幕国产精选| 国产成年码AV片在线观看| 国产精品一品二区三四区| 色综合久久中文综合久久激情| 大地资源高清免费观看| 午夜成人无码福利免费视频 | 亚洲av色在线播放一区| 欧美成本人视频免费播放| 久久天天躁狠狠躁夜夜婷| 国产亚洲精品岁国产精品|