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

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

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

3天內不再提示

FreeRTOS的定時器設計實現

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

定時器的概念

定時器用于根據系統時啟動特定的函數,執行相應的任務。FreeRTOS的定時器可以配置啟動一次或者間隔一定時間執行。

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

FreeRTOS提供了間隔執行定時器的運行時序:

圖片

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

**①****創建定時器 **osTimerNew()

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

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

②啟動定時器 osTimerStart()

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

③停止定時器 osTimerStop()

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

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).
*/

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

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

⑤刪除定時器 osTimerDelete()

回調函數可以刪除調用自己的定時器。

刪除后定時器id值變為NULL,可以再調用 osTimerNew() 為其創建新的定時器

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
  ;
}
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 定時器
    +關注

    關注

    23

    文章

    3255

    瀏覽量

    115178
  • RTOS
    +關注

    關注

    22

    文章

    819

    瀏覽量

    119823
  • FreeRTOS
    +關注

    關注

    12

    文章

    484

    瀏覽量

    62327
  • 串口中斷
    +關注

    關注

    0

    文章

    67

    瀏覽量

    13969
收藏 人收藏

    評論

    相關推薦

    轉:第19章 FreeRTOS定時器

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

    freeRTOS中的軟定時器定時時間,創建定時器后有辦法修改嗎?

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

    基于STM32定時器實現毫秒延時函數

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

    STM32基于cubeMX實現定時器點燈

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

    STM32定時器-基本定時器

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

    SysTick 定時器

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

    labview定時器實現實例分享

    labview定時器實現實例分享
    發表于 01-11 09:35 ?26次下載

    FreeRTOS軟件定時器的使用步驟

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

    使用555定時器實現延時關燈

    使用555定時器實現延時關燈
    發表于 11-21 14:54 ?11次下載

    freeRTOS軟件定時器的使用

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

    Free RTOS的軟件定時器

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

    定時器作用及實現定時器數據結構選取介紹2

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

    什么是軟件定時器?軟件定時器實現原理

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

    定時器設計實現

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

    如何實現一個軟件定時器

    在Linux,uC/OS,FreeRTOS等操作系統中,都帶有軟件定時器,原理大同小異。典型的實現方法是:通過一個硬件定時器產生固定的時鐘節拍,每次硬件
    的頭像 發表于 04-29 11:00 ?727次閱讀
    主站蜘蛛池模板: 久久久精品免费免费直播 | 99视频免费在线 | 年轻漂亮的妺妺中文字幕版 | 国产亚洲精品线视频在线 | 十分钟免费观看高清视频大全 | 欧美日韩精品一区二区三区高清视频 | 国产成人在线观看免费网站 | 国产精品99久久久久久AV色戒 | 坠落的丝袜美人妻 | 免费播放美女一级毛片 | 97无码人妻精品1国产精东影业 | 少妇无套内谢久久久久 | 久久精品热在线观看30 | 午夜国产精品免费观看 | 中文字幕一区二区三区在线观看 | av在线观看网站免费 | 色欲人妻无码AV精品一区二区 | 国产乱码卡二卡三卡4W | 亚洲午夜无码久久久久蜜臀av | 亚洲精品久久久久中文字幕二区 | 亚洲一区二区影院 | 免费视频久久只有精品 | 亚洲高清在线精品一区 | 精品久久免费视频 | 女王黄金vk | 暖暖 日本 视频 在线观看免费 | 曰本少妇高潮久久久久久 | 国产精品无码麻豆放荡AV | 国产免费人成在线视频视频 | 久久久久亚洲精品影视 | 十分钟免费观看大全视频 | 动漫美女脱小内内露尿口 | 国产中文视频无码成人精品 | 久久99国产视频 | 色悠久久久久综合网小说 | 99国产在线精品视频 | 国自精品三七区 | 色AV色婷婷96人妻久久久 | 日韩1区1区产品乱码芒果榴莲 | 区产品乱码芒果精品P站在线 | porono日本xxx |