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