色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

完善資料讓更多小伙伴認識你,還能領(lǐ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)用(而中斷不行),包括定時器關(guān)聯(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)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 定時器
    +關(guān)注

    關(guān)注

    23

    文章

    3246

    瀏覽量

    114720
  • RTOS
    +關(guān)注

    關(guān)注

    22

    文章

    811

    瀏覽量

    119595
  • FreeRTOS
    +關(guān)注

    關(guān)注

    12

    文章

    484

    瀏覽量

    62144
  • 串口中斷
    +關(guān)注

    關(guān)注

    0

    文章

    64

    瀏覽量

    13882
收藏 人收藏

    評論

    相關(guān)推薦

    轉(zhuǎn):第19章 FreeRTOS定時器

    (Daemon任務)19.3 使用軟件定時器組注意事項19.4 定時器組API函數(shù)19.5 實驗例程說明19.6總結(jié)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)核的不同廠商,都擁有基本結(jié)構(gòu)相同的系統(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外設無關(guān),因此它的代碼可以在不同廠家之間移植。本 章 將 使用系統(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 ?1884次閱讀

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

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

    freeRTOS軟件定時器的使用

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

    Free RTOS的軟件定時器

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

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

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

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

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

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

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

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

    在Linux,uC/OS,FreeRTOS等操作系統(tǒng)中,都帶有軟件定時器,原理大同小異。典型的實現(xiàn)方法是:通過一個硬件定時器產(chǎn)生固定的時鐘節(jié)拍,每次硬件
    的頭像 發(fā)表于 04-29 11:00 ?632次閱讀
    主站蜘蛛池模板: 日日色在线影院| jizzjizz3d动漫| 黄色天堂在线| 我与旗袍老师疯狂床震| 苍老师刺激的120分钟| 蜜柚在线观看免费高清官网视频 | 粉嫩小护士| 欧美日韩亚洲成人| 97精品视频在线观看| 久久无码av三级| 一色狗影院| 久久精品免费看网站| 亚洲人成网站7777视频| 国产嫩草在线观看| 少妇无码吹潮久久精品AV| 被黑人掹躁10次高潮| 青青草干免费线观看| 99久久精品毛片免费播放| 棉签和冰块怎么弄出牛奶视频 | 成人五级毛片免费播放| 欧美6O老妪与小伙交| 999www成人免费视频| 免费成人小视频| 91天仙tv嫩模福利| 免费亚洲视频| 99无人区码一码二码三| 嫩草视频在线观看免费| 99免费观看视频| 欧美最猛12teevideos欧美| www免费看.男人的天堂| 青青草狠狠干| 大香伊人中文字幕精品| 色www永久免费| 国产精品99久久久久久AV色戒| 午夜在线观看免费完整直播网| 国产精品永久免费视频观看| 性色AV一区二区三区咪爱四虎| 国产偷国产偷亚州清高| 亚洲日本欧美日韩高观看| 精品国内自产拍在线观看视频| 在线观看成人免费|