欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

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

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

3天內(nèi)不再提示

FreeRTOS的定時器設計實現(xiàn)

冬至子 ? 來源:ITRelief ? 作者:Sachefgh Xu ? 2023-07-25 15:28 ? 次閱讀

定時器的概念

定時器用于根據(jù)系統(tǒng)時啟動特定的函數(shù),執(zhí)行相應的任務。FreeRTOS的定時器可以配置啟動一次或者間隔一定時間執(zhí)行。

當然,定時器的實現(xiàn)是基于RTOS心跳機制與任務列表的。這意味著其API可以任何RTOS托管下的程序段調(diào)用(而中斷不行),包括定時器關聯(lián)的的回調(diào)函數(shù)。

FreeRTOS提供了間隔執(zhí)行定時器的運行時序:

圖片

API Description ※ 定時器不能在中斷中使用

**①****創(chuàng)建定時器 **osTimerNew()

定時器的類型分為單次(One-time )和多次執(zhí)行(periodic),在創(chuàng)建時進行配置;其中多次執(zhí)行時序見上圖;單次喚起一次后自動停止,需要用戶手動再次啟動。而多次執(zhí)行則間隔指定時間就會執(zhí)行一次,直至用戶停止。

osTimerId_t osTimerNew (osTimerFunc_t func, osTimerType_t type, void *argument, const osTimerAttr_t *attr);/*
創(chuàng)建一個定時器,并綁定相應的回調(diào)函數(shù)      @retval 定時器的ID;  創(chuàng)建失敗返回NULL
@param    void(* osTimerFunc_t)(void *argument) //這是回調(diào)函數(shù)的格式,例:
            -void Timer1_Callback(void *arg); //arg contains various type of variables.
func        -回調(diào)函數(shù)的地址,即函數(shù)名
type        -定時器類型(單次或間隔型):  osTimerOnce -執(zhí)行單次  osTimerPeriodic -多次執(zhí)行
*argument   -傳遞給回調(diào)函數(shù)的參數(shù);傳入地址;缺省填 (void*)0即可
*/

②啟動定時器 osTimerStart()

osStatus_t osTimerStart (osTimerId_t timer_id, uint32_t ticks);/*
啟動定時器并指定時間間隔.  指定的回調(diào)函數(shù)在經(jīng)過本函數(shù)指定的ticks后第一次被調(diào)用。
@param:
id           -定時器ID
ticks        -間隔時間 (單位心跳數(shù))       
@retval:
osOK         -成功
osErrorISR   -在中斷中調(diào)用而出錯
osErrorParameter: parameter timer_id is either NULL or invalid or ticks is incorrect.
osErrorResource: the timer is in an invalid state.
*/

③停止定時器 osTimerStop()

停止定時器的效果從下一次喚醒開始(回調(diào)函數(shù)停止自己定時器的情況)

osStatus_t osTimerStop (osTimerId_t timer_id);/*
停止指定的定時器
@retval
osOK
osErrorISR
osErrorParameter: parameter timer_id is either NULL or invalid.
osErrorResource: the timer is not running (you can only stop a running timer).
*/

④查詢定時器啟動狀態(tài)osTimerIsRunning()

uint32_t osTimerIsRunning (osTimerId_t  timer_id);/*
@retval
0 U   -未啟動、中斷中調(diào)用、未創(chuàng)建
!0    -已啟動
*/

⑤刪除定時器 osTimerDelete()

回調(diào)函數(shù)可以刪除調(diào)用自己的定時器。

刪除后定時器id值變?yōu)镹ULL,可以再調(diào)用 osTimerNew() 為其創(chuàng)建新的定時器

osStatus_t osTimerDelete (osTimerId_t timer_id);/*
刪除定時器并清理其資源。
@retval: 
  osOK: the specified timer has been deleted.
  osErrorISR: osTimerDelete cannot be called from interrupt service routines.
  osErrorParameter: parameter timer_id is either NULL or invalid.
  osErrorResource: the timer is in an invalid state.
*/

示例

void Timer_Callback (void *arg);                // prototype for timer callback function
uint32_t exec;                                  // argument for the timer call back function
void TimerStop_example (void) {
  osTimerId_t id;                               // timer id
  osStatus_t  status;                           // function return status
  // Create periodic timer
  exec = 1U;
  id = osTimerNew(Timer_Callback, osTimerPeriodic, &exec, NULL);
  osTimerStart(id, 1000U);                      // start timer
  :
  status = osTimerStop(id);                     // stop timer
  if (status != osOK) {
    // Timer could not be stopped
  }
  ;
  osTimerStart(id, 1000U);                      // start timer again
  ;
}
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 定時器
    +關注

    關注

    23

    文章

    3256

    瀏覽量

    115423
  • RTOS
    +關注

    關注

    22

    文章

    819

    瀏覽量

    119905
  • FreeRTOS
    +關注

    關注

    12

    文章

    484

    瀏覽量

    62411
  • 串口中斷
    +關注

    關注

    0

    文章

    67

    瀏覽量

    14016
收藏 人收藏

    評論

    相關推薦

    轉:第19章 FreeRTOS定時器

    (Daemon任務)19.3 使用軟件定時器組注意事項19.4 定時器組API函數(shù)19.5 實驗例程說明19.6總結19.1定時器組介紹 FreeRTOS軟件
    發(fā)表于 09-03 13:13

    freeRTOS中的軟定時器定時時間,創(chuàng)建定時器后有辦法修改嗎?

    請教大家,freeRTOS中的軟定時器定時時間,創(chuàng)建定時器后有沒有辦法修改呢?我的想法是 程序里有個循環(huán),循環(huán)里改改定時器的時間。但是貌似
    發(fā)表于 07-19 08:03

    基于STM32定時器實現(xiàn)毫秒延時函數(shù)

    STM32定時器包含基本定時器、通用定時器和高級定時器,其中TIM6和TIM7是STM32當中的基本定時器,作為初學者,先從最基本的學起最容
    發(fā)表于 10-12 15:54 ?2.5w次閱讀
    基于STM32<b class='flag-5'>定時器</b><b class='flag-5'>實現(xiàn)</b>毫秒延時函數(shù)

    STM32基于cubeMX實現(xiàn)定時器點燈

    Cortex M3內(nèi)核當中的定時器,它并不屬于芯片廠商的外設,也就是說使用ARM內(nèi)核的不同廠商,都擁有基本結構相同的系統(tǒng)定時器。主要目的是給RTOS提供時鐘節(jié)拍做時間基準。基本定時器:TIM6、TIM7。通用
    發(fā)表于 11-23 18:21 ?19次下載
    STM32基于cubeMX<b class='flag-5'>實現(xiàn)</b><b class='flag-5'>定時器</b>點燈

    STM32定時器-基本定時器

    目錄定時器分類基本定時器功能框圖講解基本定時器功能時鐘源計數(shù)時鐘計數(shù)自動重裝載寄存
    發(fā)表于 11-23 18:21 ?31次下載
    STM32<b class='flag-5'>定時器</b>-基本<b class='flag-5'>定時器</b>

    SysTick 定時器

    的SysTick定時器實現(xiàn)延時,可以不占用系統(tǒng)定時器,節(jié)約資源。由于SysTick是在CPU核內(nèi)部實現(xiàn)的,跟MCU外設無關,因此它的代碼可以在不同廠家之間移植。本 章 將 使用系統(tǒng)滴
    發(fā)表于 12-05 14:51 ?9次下載
    SysTick <b class='flag-5'>定時器</b>

    labview定時器實現(xiàn)實例分享

    labview定時器實現(xiàn)實例分享
    發(fā)表于 01-11 09:35 ?26次下載

    FreeRTOS軟件定時器的使用步驟

    FreeRTOS軟件Timer有兩種:重復性的和一次性的Timer。軟件定時器使用有3步。
    的頭像 發(fā)表于 09-14 15:22 ?1956次閱讀

    使用555定時器實現(xiàn)延時關燈

    使用555定時器實現(xiàn)延時關燈
    發(fā)表于 11-21 14:54 ?11次下載

    freeRTOS軟件定時器的使用

    freeRTOS中加入了軟件定時器這個功能組件,是一個可選的、不屬于freeRTOS內(nèi)核的功能,由定時器服務(其實就是一個定時器任務)來提供
    的頭像 發(fā)表于 02-10 13:55 ?2321次閱讀

    Free RTOS的軟件定時器

    軟件定時器FreeRTOS中的一個重要模塊,使用軟件定時器可以方便的實現(xiàn)一些與超時或周期性相關的功能。
    的頭像 發(fā)表于 02-10 15:53 ?2416次閱讀
    Free RTOS的軟件<b class='flag-5'>定時器</b>

    定時器作用及實現(xiàn)定時器數(shù)據(jù)結構選取介紹2

    定時器在各種場景都需要用到,比如游戲的Buff實現(xiàn),Redis中的過期任務,Linux中的定時任務等等。顧名思義,定時器的主要用途是執(zhí)行定時
    的頭像 發(fā)表于 04-21 15:20 ?1239次閱讀
    <b class='flag-5'>定時器</b>作用及<b class='flag-5'>實現(xiàn)</b><b class='flag-5'>定時器</b>數(shù)據(jù)結構選取介紹2

    什么是軟件定時器?軟件定時器實現(xiàn)原理

    軟件定時器是用程序模擬出來的定時器,可以由一個硬件定時器模擬出成千上萬個軟件定時器,這樣程序在需要使用較多定時器的時候就不會受限于硬件資源的
    的頭像 發(fā)表于 05-23 17:05 ?2937次閱讀

    定時器設計實現(xiàn)

    返回ITimer類型的共享指針。其中ITimer類中定義了start和stop方法,用于啟動或停止當前定時器。 TimerManager還有一個內(nèi)部類TimerMessageQueue用于實現(xiàn)
    的頭像 發(fā)表于 11-08 16:50 ?666次閱讀

    如何實現(xiàn)一個軟件定時器

    在Linux,uC/OS,FreeRTOS等操作系統(tǒng)中,都帶有軟件定時器,原理大同小異。典型的實現(xiàn)方法是:通過一個硬件定時器產(chǎn)生固定的時鐘節(jié)拍,每次硬件
    的頭像 發(fā)表于 04-29 11:00 ?760次閱讀