91在线观看视频-91在线观看视频-91在线观看免费视频-91在线观看免费-欧美第二页-欧美第1页

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

FreeRTOS中相對延時和絕對延時的區別

璟琰乀 ? 來源:strongerHuang ? 作者:strongerHuang ? 2020-11-24 15:44 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

嵌入式軟件代碼中延時是很常見的,只是延時種類有很多,看你用什么延時。

1

一個延時的問題

問題:周期性(固定一個時間)去處理某一件事情。你會通過什么方式去實現?

比如:間隔10ms去采集傳感器的數據,然后通過一種算法計算出一個結果,最后通過串口發送出去。

可能對于很多習慣裸機編程的讀者,首先想到的是:利用定時器,定時10ms中斷,在中斷里面處理。

中斷函數適合處理簡單數據,不適合算法、通信等需要長時間占用CPU的處理。

對計時精度要求比較高的地方適合定時器,像本章節說的周期性采集傳感器數據,要求不適合很高,那么就引入本文說的絕對延時。

在實時操作系統FreeRTOS任務中,利用vTaskDelayUntil絕對延時即可完美解決這個問題。

嵌入式專欄

2

相對延時和絕對延時的含義

本文拿FreeRTOS中相對延時函數vTaskDelay,絕對延時函數vTaskDelayUntil來說明。

相對延時: 指每次延時都是從執行函數vTaskDelay()開始,直到延時指定的時間(參數:滴答值)結束。

絕對延時: 指每隔指定的時間(參數:滴答值),執行一次調用vTaskDelayUntil()函數的任務。

文字描述可能不夠直觀理解,下面章節結合代碼例子、延時值(IO高低變化波形)、任務執行圖來詳細講述一下他們的區別。

嵌入式專欄

3

相對延時和絕對延時區別

以實際代碼為例說明:一個任務中,添加一個10ms系統延時,然后,在執行任務(耗時1ms左右,例子以延時代替)。

相對延時代碼:

絕對延時代碼:

說明:

1. TestDelay這個延時函數僅僅用于測試(延時1ms),用于代替采集、算法、發送等耗時時間。

2. 兩個代碼唯一區別在于系統延時不同,一個vTaskDelay(10);,一個vTaskDelayUntil(&xLastWakeTime, 10);

3. 系統時鐘頻率為1000,也就是上面系統延時10個滴答,即10ms。

看到代碼,你想到了他們輸出結果的差異嗎?

來看下結果的差異:用PA0這個引腳輸出的高低電平,得出延時時間。

相對延時結果:

絕對延時結果:

結果為: 相對延時的周期為系統延時10ms + 執行任務1ms的時間,總共11ms時間。絕對延時的周期即為10ms時間。

嵌入式專欄

4

換一種方式看區別

如果上面的區別還沒明白,再來講一個更容易理解的區別,通過文字 + 任務執行圖來說明。

1.相對延時

先看任務執行圖,按照上面代碼的方式呈現:

這里會牽涉到操作系統任務切換、高優先級任務搶占等一些原理,若不了解,請轉移直到了解再回來。

上電,TEST任務進入延時(阻塞)狀態,此時系統執行其他就緒任務。FreeRTOS內核會周期性的檢查TEST任務的阻塞是否達到,如果阻塞時間達到,則將TEST任務設置為就緒狀態,如果就緒任務中TEST任務的優先級最高,則會搶占CPU,再次執行任務主體代碼,不斷循環。

TEST任務每次系統延時都是從調用延時函數vTaskDelay()開始算起的,所以叫相對延時。

從上圖可以看出:

如果執行TEST任務的過程中發生中斷,或者具有更高優先級的任務搶占了,那么TEST任務執行的周期就會變長,所以使用相對延時函數vTaskDelay(),不能周期性的執行TEST任務。

2.絕對延時

代碼中定義的變量xLastWakeTime,其實是用來保存上一次的系統計數器值(方便檢測下一個延時時間是否到來)。

和上面相對延時程序執行圖比較,可以看出,系統延時的時間包含了程序執行的時間。即時中途有中斷,或更高優先級任務打斷,不會影響下一次執行的時間(也就是這個周期不會變,當然,打斷時間不能超過系統延時值)。

提示: 圖片中添加了一段話:一般來說,程序執行時間要小于總間隔時間(10ms)。

如果打斷時間太長,回來之后延時都超過了,則會立馬執行程序,不會再延時(任務不會再阻塞延時)。

責任編輯:haq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 嵌入式
    +關注

    關注

    5152

    文章

    19676

    瀏覽量

    317702
  • 程序
    +關注

    關注

    117

    文章

    3826

    瀏覽量

    83010
  • 函數
    +關注

    關注

    3

    文章

    4381

    瀏覽量

    64921
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    PCIe EtherCAT實時運動控制卡PCIE464點膠工藝的同步/提前/延時開關膠

    運動緩實現同步/提前/延時開關膠
    的頭像 發表于 05-29 13:49 ?148次閱讀
    PCIe EtherCAT實時運動控制卡PCIE464點膠工藝<b class='flag-5'>中</b>的同步/提前/<b class='flag-5'>延時</b>開關膠

    示波器差分探頭延時測量:從理論到工程實踐的關鍵解析

    示波器差分探頭延時的測量是高速信號分析的重要環節。通過時域測量法或頻域測量法,可以準確計算探頭的延時,從而優化測量結果。在實際應用,了解影響延時
    的頭像 發表于 04-14 16:59 ?321次閱讀
    示波器差分探頭<b class='flag-5'>延時</b>測量:從理論到工程實踐的關鍵解析

    延時繼電器的工作原理和接線方法

    延時繼電器作為一種在電氣系統中廣泛應用的控制元件,具有在電路實現定時閉合或斷開控制的重要功能。通過引入延時功能,對電路系統的精確控制和管理,適應不同的應用場景和需求,提高生產效率、降低
    的頭像 發表于 02-07 16:09 ?1515次閱讀

    斷電延時繼電器的應用

    延時繼電器作為一種重要的電氣控制元件,在現代電氣系統中發揮著不可或缺的作用。其基于一個或多個可調的計時器電路,通過與繼電器相連的控制電路,實現了在電路定時閉合或斷開控制的功能。 一、工作原理 延時
    的頭像 發表于 02-07 16:07 ?1170次閱讀

    延時繼電器功能匯總與應用

    延時繼電器是一種在電氣系統中廣泛應用的控制元件,在電路實現定時閉合或斷開控制,為各種應用場景提供靈活的時間管理功能。 通常,聚英延時繼電器由一個控制電壓引發,該控制電壓可以是任何符合電器設備功能
    的頭像 發表于 01-17 16:03 ?690次閱讀

    延時繼電器應用場景

    延時繼電器是一種在電氣系統中廣泛應用的控制元件,通過引入延時功能,實現了在電路定時閉合或斷開控制的重要任務。 延時繼電器的工作原理,基于一個或多個可調的計時器電路,2路/4路/8路電
    的頭像 發表于 01-16 16:27 ?660次閱讀

    FPGA延時Verilog HDL實現

    可以在任意時刻啟動,可以重復啟動,延時時長可調,單位可切換(ms/us),在50MHz時鐘下的延時范圍是1ms-85899ms/1us-85899us。
    的頭像 發表于 11-05 11:26 ?834次閱讀

    光控延時開關面包板怎么接線

    光控延時開關是一種利用光信號來控制電路通斷的電子設備,廣泛應用于自動照明、安全監控等領域。面包板是一種用于電子電路原型設計的通用電路板,它允許用戶通過插入電子元件和連接導線來構建電路. 1. 準備
    的頭像 發表于 09-20 10:35 ?2005次閱讀

    光控延時開關電路的結構是什么

    光控延時開關電路是一種利用光信號來控制電路的通斷和延時功能的電子設備,廣泛應用于自動照明、安全監控、智能家居等領域。這種電路的核心在于能夠根據環境光線的變化來自動開啟或關閉電路,以及在特定條件下實現
    的頭像 發表于 09-20 10:32 ?962次閱讀

    延時開關需要零線嗎為什么

    延時開關是一種常見的電氣控制元件,廣泛應用于各種電氣設備和系統。它的作用是在電路引入一定的延時,以實現對電路的控制和保護。延時開關的種類
    的頭像 發表于 08-19 15:56 ?1079次閱讀

    延時開關接線技巧與注意事項有哪些

    延時開關的接線技巧與注意事項是確保延時開關正確安裝和穩定運行的關鍵。 一、延時開關接線技巧 1. 理解延時開關的基本結構 延時開關通常包含多
    的頭像 發表于 08-19 15:54 ?2544次閱讀

    延時開關改手動開關怎么接線

    延時開關和手動開關是兩種不同類型的開關,它們的工作原理和接線方式也有所不同。在某些情況下,我們可能需要將延時開關改為手動開關,以滿足特定的使用需求。 一、延時開關和手動開關的區別 工作
    的頭像 發表于 08-19 15:49 ?1622次閱讀

    延時開關怎么調時間長短

    延時開關是一種常見的電子控制設備,廣泛應用于各種場合,如照明、空調、風扇等。它可以根據用戶的需求,設定一定的延時時間,實現自動控制。 一、延時開關的工作原理 延時開關的基本組成
    的頭像 發表于 08-19 15:46 ?5024次閱讀

    延時開關上l和a是什么意思

    延時開關是一種常見的電子控制元件,廣泛應用于各種電子設備和系統。它可以實現對電路的自動控制,使電路在一定的延時后自動接通或斷開。在延時開關的標識
    的頭像 發表于 08-19 15:45 ?8132次閱讀

    揭秘:單片機硬件與軟件延時之大不同!

    在嵌入式項目中,軟件開發基本上都會使用到延時,那么,該用軟件延時還是硬件延時?它們又有什么區別呢?今天就來講講關于硬件延時和軟件
    的頭像 發表于 07-25 08:11 ?1391次閱讀
    揭秘:單片機硬件與軟件<b class='flag-5'>延時</b>之大不同!
    主站蜘蛛池模板: 天天综合天天干 | 欧美黄视频在线观看 | 午夜999 | 一级午夜免费视频 | jlzzjlzz欧美大全| 五月天色婷婷丁香 | 日韩成a人片在线观看日本 日韩成人黄色 | 在线小视频你懂的 | 奇米成人影视 | 亚洲视频福利 | 免费在线观看视频网站 | 狠狠色影院 | 国产亚洲人成a在线v网站 | 精品欧美小视频在线观看 | 亚洲精品视频在线 | 久久夜色tv网站免费影院 | 国产精品人人爱一区二区白浆 | 在线精品一区二区三区 | 2021天天躁狠狠燥 | 日韩电影中文字幕 | 五月婷六月婷婷 | 六月激情丁香 | 色偷偷91久久综合噜噜噜 | 狠狠色丁香久久综合五月 | 国产一区二区三区美女图片 | 日本黄色录像视频 | 亚洲婷婷六月 | 日日干视频| 国产成人精品三级在线 | 美女被异性狂揉下部羞羞视频 | 亚洲精品一线二线三线 | 五月亭亭免费高清在线 | 精品国产柚木在线观看 | 日本黄色网址免费 | 丁香午夜| 亚洲一区二区影视 | 99福利| 色噜噜噜噜噜 | 奇米影视亚洲狠狠色777不卡 | 色狠狠狠色噜噜噜综合网 | 在线播放网址 |