国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

FreeRTOS(6)----軟件定時(shí)器

這篇具有很好參考價(jià)值的文章主要介紹了FreeRTOS(6)----軟件定時(shí)器。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一,軟件定時(shí)器概述

軟件定時(shí)器允許設(shè)置一段時(shí)間,當(dāng)設(shè)定的時(shí)間到達(dá)之后就會(huì)執(zhí)行指定的功能函數(shù),被定時(shí)器調(diào)用的這個(gè)函數(shù)叫做定時(shí)器的回調(diào)函數(shù)。回調(diào)函數(shù)的兩次執(zhí)行間隔叫做定時(shí)器的定時(shí)周期。

二,回調(diào)函數(shù)的注意事項(xiàng)

回調(diào)函數(shù)是在定時(shí)器服務(wù)任務(wù)中執(zhí)行的,因?yàn)槎〞r(shí)器服務(wù)任務(wù)是由內(nèi)核產(chǎn)生,無法由用戶控制,所以本身的運(yùn)行周期時(shí)間是固定的。

所以調(diào)用回調(diào)函數(shù)不可以調(diào)用有阻塞的函數(shù)API,eg.vTaskDelay()、vTaskDelayUntil()等,因?yàn)楫?dāng)執(zhí)行定時(shí)器服務(wù)任務(wù)的回調(diào)函數(shù)里有這些函數(shù),CPU就會(huì)被占用,使得定時(shí)器的任務(wù)無法得到處理其他定時(shí)器的超時(shí)任務(wù)【定時(shí)器服務(wù)任務(wù)負(fù)責(zé)管理和處理所有的軟件定時(shí)器的超時(shí)事件】,當(dāng)阻塞的事件過長(zhǎng)的時(shí)候,會(huì)導(dǎo)致超時(shí)事件得不到處理,導(dǎo)致系統(tǒng)出現(xiàn)異常。

三.定時(shí)器命令隊(duì)列

定時(shí)器命令隊(duì)列是用戶應(yīng)用任務(wù)和定時(shí)器服務(wù)任務(wù)的一個(gè)媒介。

#define xTimerStart( xTimer, xTicksToWait ) xTimerGenericCommand( ( xTimer ), tmrCOMMAND_START, ( xTaskGetTickCount() ), NULL, ( xTicksToWait ) )

tmrCOMMAND_START命令表示啟動(dòng)一個(gè)定時(shí)器,并通過定時(shí)器命令隊(duì)列把相關(guān)信息傳遞給定時(shí)器服務(wù)任務(wù),由定時(shí)器服務(wù)任務(wù)統(tǒng)一管理和執(zhí)行。

定時(shí)器服務(wù)任務(wù)在接收到tmrCOMMAND_START命令后,會(huì)檢查定時(shí)器句柄是否有效,如果有效則將該定時(shí)器加入定時(shí)器鏈表,并按照xTimeToWait指定的時(shí)間長(zhǎng)度啟動(dòng)該定時(shí)器的超時(shí)計(jì)時(shí)器。同時(shí),定時(shí)器服務(wù)任務(wù)會(huì)根據(jù)該定時(shí)器的超時(shí)時(shí)間和當(dāng)前系統(tǒng)時(shí)間計(jì)算出該定時(shí)器的超時(shí)時(shí)間點(diǎn),并在該時(shí)間點(diǎn)觸發(fā)該定時(shí)器的回調(diào)函數(shù)。

四.軟件定時(shí)器的屬性

·單次定時(shí)器:當(dāng)定時(shí)器開始啟動(dòng),并且到達(dá)指定時(shí)間,回調(diào)函數(shù)只會(huì)執(zhí)行一次,且定時(shí)器不會(huì)再自動(dòng)重新啟動(dòng),但會(huì)手動(dòng)啟動(dòng)。

·周期定時(shí)器:當(dāng)定時(shí)間隔到達(dá)之后,執(zhí)行回調(diào)函數(shù),還會(huì)自動(dòng)重新啟動(dòng),可以實(shí)現(xiàn)周期性的調(diào)用函數(shù)。

FreeRTOS(6)----軟件定時(shí)器?

?對(duì)于軟件定時(shí)器我的理解:

軟件定時(shí)器可以設(shè)定超時(shí)事件且不會(huì)和定時(shí)器服務(wù)任務(wù)產(chǎn)生沖突,因?yàn)镕reeRTOS內(nèi)核的定時(shí)器服務(wù)是基于軟件定時(shí)器和系統(tǒng)時(shí)基(tick)實(shí)現(xiàn)的。定時(shí)器服務(wù)任務(wù)是一個(gè)高優(yōu)先級(jí)任務(wù),它負(fù)責(zé)處理所有的軟件定時(shí)器事件。在系統(tǒng)啟動(dòng)時(shí),定時(shí)器服務(wù)任務(wù)會(huì)被創(chuàng)建并開始運(yùn)行,它以系統(tǒng)時(shí)基的時(shí)間間隔定期被調(diào)度執(zhí)行。定時(shí)器服務(wù)任務(wù)的主要作用是從定時(shí)器消息隊(duì)列中獲取定時(shí)器事件,然后根據(jù)定時(shí)器事件的類型進(jìn)行相應(yīng)的處理,例如啟動(dòng)、停止、重置、刪除定時(shí)器等。而定時(shí)器事件則由軟件定時(shí)器生成,并通過xTimerChangePeriod()、xTimerStart()等函數(shù)向定時(shí)器服務(wù)任務(wù)發(fā)送。軟件定時(shí)器提供了一種輕量級(jí)、靈活的機(jī)制,允許用戶自定義定時(shí)器的超時(shí)時(shí)間。當(dāng)軟件定時(shí)器到達(dá)超時(shí)時(shí)間時(shí),F(xiàn)reeRTOS內(nèi)核會(huì)自動(dòng)將該定時(shí)器的事件加入定時(shí)器消息隊(duì)列中,等待定時(shí)器服務(wù)任務(wù)處理。

軟件定時(shí)器開始運(yùn)行,當(dāng)設(shè)定的時(shí)間到了,會(huì)產(chǎn)生一個(gè)超時(shí)事件,將該事件放入到消息隊(duì)列中,計(jì)數(shù)器此時(shí)會(huì)開始第二輪的計(jì)時(shí),當(dāng)?shù)却某瑫r(shí)事件被執(zhí)行的時(shí)候,也就是定時(shí)器服務(wù)任務(wù)執(zhí)行的時(shí)候,計(jì)數(shù)器要暫停,等待服務(wù)任務(wù)執(zhí)行結(jié)束,才會(huì)從原本暫停的計(jì)數(shù)值開始繼續(xù)執(zhí)行,當(dāng)超時(shí)事件一直未被處理或者下一輪產(chǎn)生了新的超時(shí)事件,這個(gè)超時(shí)事件則會(huì)被舍棄。

當(dāng)定時(shí)器到達(dá)超時(shí)時(shí)間后,若同時(shí)有多個(gè)定時(shí)器到期,則定時(shí)器服務(wù)任務(wù)會(huì)按照它們的超時(shí)時(shí)間先后順序進(jìn)行處理。如果某個(gè)定時(shí)器回調(diào)函數(shù)執(zhí)行的時(shí)間過長(zhǎng)導(dǎo)致定時(shí)器服務(wù)任務(wù)未及時(shí)處理其他超時(shí)事件,則可能會(huì)影響其他定時(shí)器的響應(yīng)能力和精度。

超時(shí)事件的1個(gè)tick:1ms

#define configTICK_RATE_HZ						(1000)                  //時(shí)鐘節(jié)拍頻率,這里設(shè)置為1000,周期就是1ms

五,函數(shù)介紹

1.xTimerStart( TimerHandle_t xTimer, TickType_t xTicksToWait );

  • xTimer:要啟動(dòng)的定時(shí)器的句柄,它是在調(diào)用 xTimerCreate() 函數(shù)創(chuàng)建定時(shí)器時(shí)返回的。
  • xTicksToWait:等待定時(shí)器啟動(dòng)的最長(zhǎng)時(shí)間。如果傳遞的值為 0,則該函數(shù)將立即返回,而不等待定時(shí)器啟動(dòng);如果傳遞的值為 portMAX_DELAY,則該函數(shù)將一直等待,直到定時(shí)器啟動(dòng)。
  • 調(diào)用 xTimerStart() 函數(shù)之后,定時(shí)器會(huì)開始計(jì)時(shí),并且在每次計(jì)時(shí)器超時(shí)事件發(fā)生時(shí),都會(huì)調(diào)用該定時(shí)器注冊(cè)的回調(diào)函數(shù)。需要注意的是,在啟動(dòng)定時(shí)器之前,必須先通過 xTimerReset() 函數(shù)重置定時(shí)器的計(jì)數(shù)器,以確保定時(shí)器從指定的周期開始計(jì)時(shí)。

2.TimerReset( TimerHandle_t xTimer, TickType_t xTicksToWait );

  • xTimer:要重置的定時(shí)器的句柄,它是在調(diào)用 xTimerCreate() 函數(shù)創(chuàng)建定時(shí)器時(shí)返回的。
  • xTicksToWait:等待定時(shí)器重置的最長(zhǎng)時(shí)間。如果傳遞的值為 0,則該函數(shù)將立即返回,而不等待定時(shí)器重置;如果傳遞的值為 portMAX_DELAY,則該函數(shù)將一直等待,直到定時(shí)器重置。

3.xTimerCreate( const char * pcTimerName, TickType_t xTimerPeriod, UBaseType_t uxAutoReload, void * pvTimerID, TimerCallbackFunction_t pxCallbackFunction );

  • pcTimerName:定時(shí)器的名稱,在調(diào)試和跟蹤時(shí)使用。通常可以將其設(shè)置為 NULL。
  • xTimerPeriod:定時(shí)器超時(shí)時(shí)間,單位是 tick。用于確定定時(shí)器超時(shí)事件的發(fā)生間隔。當(dāng)定時(shí)器服務(wù)任務(wù)開始時(shí),定時(shí)器計(jì)數(shù)器會(huì)被遞減,直到達(dá)到 0,此時(shí)定時(shí)器超時(shí)事件就會(huì)發(fā)生??梢詫⒃搮?shù)設(shè)置為 pdMS_TO_TICKS() 宏的值來將毫秒轉(zhuǎn)換為 tick。
  • uxAutoReload:是否需要自動(dòng)重置計(jì)數(shù)器,并從頭開始重新計(jì)時(shí),以便創(chuàng)建一個(gè)循環(huán)定時(shí)器。如果將其設(shè)置為 0,則該定時(shí)器不會(huì)自動(dòng)重置計(jì)數(shù)器,而是只會(huì)執(zhí)行一次超時(shí)事件;否則,如果將其設(shè)置為 1,則該定時(shí)器將會(huì)自動(dòng)重置計(jì)數(shù)器,并且在每個(gè)超時(shí)事件發(fā)生后,會(huì)按照設(shè)置的周期再次觸發(fā)超時(shí)事件。
  • pvTimerID:一個(gè)指向任意類型數(shù)據(jù)的指針,用于指定應(yīng)該在計(jì)時(shí)器超時(shí)事件中傳遞的數(shù)據(jù)。如果不需要傳遞數(shù)據(jù),則可以將其設(shè)置為 NULL。
  • pxCallbackFunction:一個(gè)指向定時(shí)器超時(shí)事件回調(diào)函數(shù)的指針。當(dāng)定時(shí)器計(jì)數(shù)器達(dá)到 0 時(shí),定時(shí)器服務(wù)任務(wù)會(huì)調(diào)用此函數(shù)。在該函數(shù)中,可以編寫相關(guān)的任務(wù)代碼來執(zhí)行所需的操作,例如發(fā)出信號(hào)量或?qū)⑷蝿?wù)加入隊(duì)列等。

4.xTimerStop( TimerHandle_t xTimer, TickType_t xTicksToWait );文章來源地址http://www.zghlxwxcb.cn/news/detail-453956.html

  • xTimer:要停止的定時(shí)器的句柄,它是在調(diào)用 xTimerCreate() 函數(shù)創(chuàng)建定時(shí)器時(shí)返回的。
  • xTicksToWait:等待該定時(shí)器停止的最長(zhǎng)時(shí)間。如果傳遞的值為 0,則該函數(shù)將立即返回,而不等待定時(shí)器停止;如果傳遞的值為 portMAX_DELAY,則該函數(shù)將一直等待,直到定時(shí)器停止。

到了這里,關(guān)于FreeRTOS(6)----軟件定時(shí)器的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • (第48-59講)STM32F4單片機(jī),F(xiàn)reeRTOS【事件標(biāo)志、任務(wù)通知、軟件定時(shí)器、Tickless低功耗】【純文字講解】【】

    【吐血總結(jié)】FreeRTOS難點(diǎn)、Systick中斷-滴答定時(shí)器、PendSV中斷-任務(wù)切換、SVC中斷-系統(tǒng)底層、時(shí)間片調(diào)度-時(shí)鐘節(jié)拍【已完結(jié)】 (第1-8講)STM32F4單片機(jī),F(xiàn)reeRTOS基礎(chǔ)知識(shí)總結(jié)【視頻筆記、代碼講解】【正點(diǎn)原子】【原創(chuàng)】 (第9-10講)STM32F4單片機(jī),F(xiàn)reeRTOS任務(wù)創(chuàng)建和刪除(動(dòng)態(tài)方

    2024年02月01日
    瀏覽(33)
  • 【STM32/FreeRTOS】SysTick定時(shí)器及FreeRTOS系統(tǒng)節(jié)拍

    【STM32/FreeRTOS】SysTick定時(shí)器及FreeRTOS系統(tǒng)節(jié)拍

    目錄 一、SysTick定時(shí)器 1、SysTick寄存器介紹 (1)控制及狀態(tài)寄存器 (2)重裝載數(shù)值寄存器 (3)當(dāng)前數(shù)值寄存器 2、SysTick寄存器配置函數(shù) 二、FreeRTOS中的SysTick定時(shí)器 1、SysTick配置函數(shù)及分析 2、SysTick中斷函數(shù) 三、其他操作配置FreeRTOS的SysTick 1、找到頭文件 FreeRTOSConfig.h 有如

    2024年01月24日
    瀏覽(24)
  • 定時(shí)器概述

    定時(shí)器是一個(gè)比較常見的數(shù)據(jù)結(jié)構(gòu),或者說框架,以一個(gè)最簡(jiǎn)單的例子引出,在游戲中,冷卻時(shí)間使用的就是定時(shí)器; 所以說定時(shí)器是 等待時(shí)間過期執(zhí)行對(duì)應(yīng)時(shí)間事件處理( 回調(diào)函數(shù) ) 的一個(gè)框架; 補(bǔ)充:下文中可能會(huì)出現(xiàn)定時(shí)任務(wù),它和時(shí)間事件基本上是一個(gè)東西 那么現(xiàn)

    2024年02月04日
    瀏覽(17)
  • STM32CubeMX教程5 TIM 定時(shí)器概述及基本定時(shí)器

    開發(fā)板(STM32F407G-DISC1) STM32CubeMX軟件(Version 6.10.0) keil μVision5 IDE(MDK-Arm) ST-LINK/V2驅(qū)動(dòng) 邏輯分析儀nanoDLA 使用STM32CubeMX軟件配置STM32F407開發(fā)板 使用基本定時(shí)器TIM6實(shí)現(xiàn)每500ms控制綠燈狀態(tài)變化一次,基本定時(shí)器TIM7實(shí)現(xiàn)每1s控制紅燈狀態(tài)變化一次 STM32F407擁有2個(gè)基礎(chǔ)定時(shí)器、

    2024年02月03日
    瀏覽(27)
  • JavaScript【瀏覽器環(huán)境概述(BOM)、回流和重繪 、定時(shí)器之 setTimeout()、定時(shí)器之 setInterval()、定時(shí)器實(shí)操、防抖(debounce)】(十六)
  • STM32軟件定時(shí)器

    STM32軟件定時(shí)器

    目錄 什么是定時(shí)器? 軟件定時(shí)器優(yōu)缺點(diǎn) 軟件定時(shí)器原理 軟件定時(shí)器相關(guān)配置 單次定時(shí)器和周期定時(shí)器 軟件定時(shí)器相關(guān) API 函數(shù) 1. 創(chuàng)建軟件定時(shí)器 2. 開啟軟件定時(shí)器 3. 停止軟件定時(shí)器 4. 復(fù)位軟件定時(shí)器 5. 更改軟件定時(shí)器定時(shí)時(shí)間 實(shí)操 cubeMX配置 代碼實(shí)現(xiàn)? 簡(jiǎn)單可以理解為

    2024年02月11日
    瀏覽(24)
  • 【杰理AC696X】軟件定時(shí)器介紹

    【杰理AC696X】軟件定時(shí)器介紹

    測(cè)試SDK版本:《ac696n_soundbox_sdk_v1.6.0》 SDK給出了軟件定時(shí)器的相關(guān)接口,主要有 sys_hi_timer_add、sys_s_hi_timer_add、sys_timer_add等。 列出AC696X系列軟件定時(shí)器的相關(guān)知識(shí)點(diǎn),再結(jié)合代碼調(diào)試和工具測(cè)試,總結(jié)出使用案例。 上面的低功耗指的是 power down,不是soft poweroff。 usr_timer的強(qiáng)

    2024年02月10日
    瀏覽(16)
  • 9.物聯(lián)網(wǎng)操作系統(tǒng)之軟件定時(shí)器

    9.物聯(lián)網(wǎng)操作系統(tǒng)之軟件定時(shí)器

    一。軟件定時(shí)器概念及應(yīng)用 1.軟件定時(shí)器定義 ? ? ? ? 就是軟件實(shí)現(xiàn)定時(shí)器。 2.FreeRTOS軟件定時(shí)器介紹 ? ? ? ? 如上圖所示,Times的左邊為設(shè)置定時(shí)器時(shí)間,設(shè)置方式可以為任務(wù)設(shè)置或者中斷設(shè)置;Times的右邊為定時(shí)器的定時(shí)響應(yīng),使用CallBack響應(yīng)。? 3.FreeRTOS軟件定時(shí)器工作

    2024年02月14日
    瀏覽(24)
  • 物聯(lián)網(wǎng)操作系統(tǒng)-軟件定時(shí)器(software timer)

    物聯(lián)網(wǎng)操作系統(tǒng)-軟件定時(shí)器(software timer)

    軟件定時(shí)器就是\\\"鬧鐘\\\",你可以設(shè)置鬧鐘, ? 在 30 分鐘后讓你起床工作 ? 每隔 1 小時(shí)讓你例行檢查機(jī)器運(yùn)行情況 軟件定時(shí)器也可以完成兩類事情: ? 在\\\"未來\\\"某個(gè)時(shí)間點(diǎn),運(yùn)行函數(shù) ? 周期性地運(yùn)行函數(shù) 日常生活中我們可以定無數(shù)個(gè)\\\"鬧鐘\\\",這無數(shù)的\\\"鬧鐘\\\"要基于一個(gè)真實(shí)

    2024年02月21日
    瀏覽(27)
  • 鴻蒙Hi3861學(xué)習(xí)六-Huawei LiteOS(軟件定時(shí)器)

    鴻蒙Hi3861學(xué)習(xí)六-Huawei LiteOS(軟件定時(shí)器)

    ? ? ? ? 軟件定時(shí)器,是 基于系統(tǒng)Tick時(shí)鐘中斷 且由 軟件來模擬的定時(shí)器 。當(dāng)經(jīng)過設(shè)定的Tick時(shí)鐘計(jì)數(shù)值后,會(huì) 觸發(fā)用戶定義的回調(diào)函數(shù) 。定時(shí)精度與系統(tǒng)Tick時(shí)鐘周期有關(guān)。 ? ? ? ? 硬件定時(shí)器受硬件的限制,數(shù)量上不足以滿足用戶的實(shí)際需求。因此,為了滿足用戶需求,

    2024年02月03日
    瀏覽(29)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包