freeRtos学习笔记 (6)软件定时器
生活随笔
收集整理的這篇文章主要介紹了
freeRtos学习笔记 (6)软件定时器
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
freeRtos學習筆記
freeRtos軟件定時器
軟件定時器需要注意事項
軟件定時器創建
TimerHandle_t xTimerCreate(const char * const pcTimerName, /* 定時器名稱 方便調試*/const TickType_t xTimerPeriod, /* 定時器周期 單位系統節拍*/const UBaseType_t uxAutoReload, /* 定時器模式 是否周期性*/void * const pvTImerID, /* 定時器ID 方便多個定時器使用相同回調函數時,進行區分*/TImerCallbackFunction_t pxCallbackFunction); /* 回調函數*/定時器創建函數
- 第一個參數時定時器名稱,方便調試時識別不同定時器
- 第二個參數為定時器周期,單位為系統節拍
- 第三個參數為定時器模式,如果為pdTRUE 則該定時器為周期模式 如果為pdFALSE 則為單次模式
- 第四個參數為定時器ID,當多個定時器公用同一個回調函數時,回調函數中可以根據ID進行區分當前為那個定時器
- 第五個參數為定時器回調函數。
- 返回值:創建成功會返回定時器句柄,否則如果heap內存不夠返回NULL
軟件定時器開始
BaseType_t xTimerStart(TimerHandle_t xTimer, /* 定時器句柄 */TickType_t xBlockTime); /* 成功啟動定時器前的最大等待時間 單位系統節拍 */BaseType_t xTimerStartFromISR(TimerHandle_t xTimer,BaseType_t *pxHigherPriorityTaskWoken);軟件定時器啟動函數
- 第一個參數是定時器句柄
- 第二個參數是成功啟動定時器前的最大等待時間 單位系統節拍,軟件定時器底層也是一個任務,定時器啟動其實最終是給定時器任務發送一個消息,消息隊列長度通過 configTIMER_QUEUE_LENGTH配置,當消息隊列已滿,則會進行等待。定時器任務實際執行消息隊列發來的命令依賴于定時器任務的優先級,如果定時器任務是高優先級會及時得到執行, 如果是低優先級,就要等待其余高優先級任務釋放 CPU 權才可以得到執行,此參數就是設置最大等待時間的。
- 第二個參數在中斷中的定時器啟動函數其實就是給定時器任務發送一條消息,發送該任務后,定時器任務從堵塞態進入就緒態,如果定時器任務優先級比當前運行的任務優先級高,則pxHigherPriorityTaskWoken為pdTRUE,在中斷結束時可以進行任務切換。
- 返回值 返回 pdFAIL 表示此函數向消息隊列發送消息失敗,返回 pdPASS 表示此函數向消息隊列發
送消息成功。
軟件定時器停止
BaseType_t xTimerStop( TimerHandle_t xTimer,TickType_t xBlockTime );BaseType_t xTimerStopFromISR(TimerHandle_t xTimer,BaseType_t *pxHigherPriorityTaskWoken);軟件定時器停止函數
- 第一個參數是定時器句柄
- 第二個參數是成功啟動定時器前的最大等待時間 單位系統節拍,軟件定時器底層也是一個任務,定時器啟動其實最終是給定時器任務發送一個消息,消息隊列長度通過 configTIMER_QUEUE_LENGTH配置,當消息隊列已滿,則會進行等待。定時器任務實際執行消息隊列發來的命令依賴于定時器任務的優先級,如果定時器任務是高優先級會及時得到執行, 如果是低優先級,就要等待其余高優先級任務釋放 CPU 權才可以得到執行,此參數就是設置最大等待時間的。
- 第二個參數在中斷中的定時器啟動函數其實就是給定時器任務發送一條消息,發送該任務后,定時器任務從堵塞態進入就緒態,如果定時器任務優先級比當前運行的任務優先級高,則pxHigherPriorityTaskWoken為pdTRUE,在中斷結束時可以進行任務切換。
- 返回值 返回 pdFAIL 表示此函數向消息隊列發送消息失敗,返回 pdPASS 表示此函數向消息隊列發
送消息成功。
軟件定時器復位
BaseType_t xTimerReset( TimerHandle_t xTimer,TickType_t xBlockTime );BaseType_t xTimerResetFromISR(TimerHandle_t xTimer,BaseType_t *pxHigherPriorityTaskWoken);軟件定時器復位函數
- 第一個參數是定時器句柄
- 第二個參數是成功啟動定時器前的最大等待時間 單位系統節拍,軟件定時器底層也是一個任務,定時器啟動其實最終是給定時器任務發送一個消息,消息隊列長度通過 configTIMER_QUEUE_LENGTH配置,當消息隊列已滿,則會進行等待。定時器任務實際執行消息隊列發來的命令依賴于定時器任務的優先級,如果定時器任務是高優先級會及時得到執行, 如果是低優先級,就要等待其余高優先級任務釋放 CPU 權才可以得到執行,此參數就是設置最大等待時間的。
- 第二個參數在中斷中的定時器啟動函數其實就是給定時器任務發送一條消息,發送該任務后,定時器任務從堵塞態進入就緒態,如果定時器任務優先級比當前運行的任務優先級高,則pxHigherPriorityTaskWoken為pdTRUE,在中斷結束時可以進行任務切換。
- 返回值 返回 pdFAIL 表示此函數向消息隊列發送消息失敗,返回 pdPASS 表示此函數向消息隊列發
送消息成功。
本文參考 freertos官方文檔 https://freertos.org/a00110.html
《安富萊 STM32-V6 開發板 FreeRTOS 教程》
總結
以上是生活随笔為你收集整理的freeRtos学习笔记 (6)软件定时器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: freeRtos学习笔记 (5)事件组
- 下一篇: keil 使用AC6 中文警告解决办法