精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

淺談rtimer定時器原理和rtimer移植

西西 ? 2018-02-16 10:21 ? 次閱讀

rtimer可以滿足精準定時的需要,但是沒有常見的next指針來掛接后續節點, 為了減少rtimer中斷掛接一個rtimer結構是不錯的做法,大多數定時器位寬為16位,因此rtimer的頻率必須小于30kHz。

一.rtimer用途

Contiki系統引入rtimer可以滿足精準定時的需要,一些對時間極為敏感的模塊(如MAC協議)依賴于rtimer。和etimer的粗粒度(常見為100Hz)不同,rtimer是細粒度(常見為10kHz)定時器。根據經驗,細粒度定時器如果中斷頻繁特別容易消耗CPU資源,為此contiki設計rtimer時盡可能地減少中斷,大部分應用場合為讀取定時器計數值。

二.數據結構

Rtimer的數據結構如圖1所示,time賦值為下一次定時器超時中斷的時刻點,func是定時器超時中斷的回調函數,ptr是傳遞給回調函數的數據指針。

淺談rtimer定時器原理和rtimer移植

從圖1發現,rtimer沒有常見的next指針來掛接后續節點,確實,contiki為了減少rtimer中斷的爆發只能掛接一個rtimer結構,如圖2所示。如果同時掛接2個或以上的rtimer結構,那么最新掛接的有效,其它的rtimer結構將丟失,即圖3的解釋。

這種只能掛接1個rtimer的機制使設計很簡單,并且硬件定時器中斷只在需要的時候才爆發,極大降低了CPU負荷。當然,它也帶來一個限制,只能串行使用rtimer定時器的中斷回調功能,即不具備排隊功能。

淺談rtimer定時器原理和rtimer移植

三.rtimer中斷時序

圖4展示了rtimer的中斷時序,當調用rtimer_arch_schedule()時,它設置rtimer定時器的中斷間隔時長timeout,中斷服務程序rtimer_irq_handler會調用rtimer-》callback()回調函數。

需要特別注意2點:中斷只允許發生一次,即rtimer_arch_schedule()使能中斷,而rtimer_irq_handler()禁止中斷;rtimer-》callback()是在中斷狀態下運行,特別注意防止競態錯誤,例如,調用process_poll()合法,調用process_post()非法。

淺談rtimer定時器原理和rtimer移植

四.rtimer移植

有了上述rtimer的理論,再來移植rtimer就比較容易了,即,基于MCU實現rtimer-arch.c和rtimer-arch.h。

需要特別注意,大多數定時器(尤其是8位MCU)位寬為16位,即MAX=65535,而MAC協議往往需要1秒以上的定時周期,因此rtimer的頻率必須小于30kHz。一個比較好的數值是10kHz,它既可以保證比較好的精度(間隔為100us),又具備6.5秒的滿量程,這可以適應大多數的應用需要。

另外,大多數應用需要隨機撤銷和重啟動rtimer,它可以通過添加2個函數來實現:rtimer_arch_disable_irq()和rtimer_arch_enable_irq()。

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

    關注

    23

    文章

    3241

    瀏覽量

    114482
收藏 人收藏

    評論

    相關推薦

    STM32定時器(二)定時器中斷

    常規定時器:基本定時器TIM6&TIM7)、通用定時器(TIM2~TIM5,TIM9~TIM14)、高級定時器(TIM1&TIM8)
    的頭像 發表于 07-21 14:54 ?4338次閱讀
    STM32<b class='flag-5'>定時器</b>(二)<b class='flag-5'>定時器</b>中斷

    淺談555定時器的原理及其應用

    555定時器是一種應用十分廣泛的中規模集成電路。本文扼要地分析了555定時器的基本原理,并較為詳細地介紹了用555定時器構成的單穩態觸發、雙穩態觸發
    發表于 08-10 09:34 ?323次下載

    555定時器

    555定時器555定時器555定時器555定時器555定時器555定時器555
    發表于 11-10 17:25 ?52次下載

    淺談labviEW定時器

    LABVIEW提供了幾種定時器(包括DELAY)
    發表于 01-13 17:21 ?34次下載

    淺談定時器基礎知識與PWM輸出原理

    單片機開發中,電機的控制與定時器有著密不可分的關系,無論是直流電機,步進電機還是舵機,都會用到定時器,比如最常用的有刷直流電機,會使用定時器產生PWM波來調節轉速,通過定時器的正交編碼
    的頭像 發表于 04-05 10:35 ?1.4w次閱讀
    <b class='flag-5'>淺談定時器</b>基礎知識與PWM輸出原理

    定時器電路圖工作原理(聲光提示定時器電路/555定時器電路/相片曝光定時器電路)

    定時器根據其輸入條件導致完成動作的不同可分為接通延時型定時器、斷開延時型定時器、保持型接通延時定時器、脈沖型定時器和擴張型脈沖
    發表于 11-05 16:07 ?1.8w次閱讀
    <b class='flag-5'>定時器</b>電路圖工作原理(聲光提示<b class='flag-5'>定時器</b>電路/555<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>

    基于硬件定時器的軟件定時器

    概括硬件定時器很精確,軟件定時器無論如何都有延遲,主要用在不需要精確定時的地方,而且軟件定時比較浪費單片機資源。梳理講到定時器,大家多多少少
    發表于 11-25 09:51 ?8次下載
    基于硬件<b class='flag-5'>定時器</b>的軟件<b class='flag-5'>定時器</b>

    STM32——高級定時器、通用定時器、基本定時器的區別

    STM32——高級定時器、通用定時器、基本定時器的區別
    發表于 11-26 15:21 ?110次下載
    STM32——高級<b class='flag-5'>定時器</b>、通用<b class='flag-5'>定時器</b>、基本<b class='flag-5'>定時器</b>的區別

    STM32-通用定時器-定時器中斷

    1STM32的定時器STM32F103ZET6一共有8個定時器,其中分別為:高級定時器(TIM1、TIM8);通用定時器(TIM2、TIM3、TIM4、TIM5);基本
    發表于 11-26 15:36 ?16次下載
    STM32-通用<b class='flag-5'>定時器</b>-<b class='flag-5'>定時器</b>中斷

    STM32定時器學習---基本定時器

    STM32F1系列的產品,除了互聯網產品外,工作8個,3種定時器,其中一種就是基本定時器。那么STM32單片機的基本定時器如何操作以及編程呢?下面我們就來詳細的了解一下STM32F1系列的產品,除了
    發表于 12-02 14:06 ?27次下載
    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>

    31章-定時器

    基本定時器TIMSTM32F1 系列中,除了互聯型的產品,共有8 個定時器,分為基本定時器,通用定時器和高級定時器。基本
    發表于 01-17 09:39 ?3次下載
    31章-<b class='flag-5'>定時器</b>

    基礎定時器實驗

    STM32內部共有8個定時器,其中Timer1和Timer8屬于高級定時器,Timer2~Timer5屬于通用定時器,8個定時器的資源獨立,互不影響。
    的頭像 發表于 03-01 15:59 ?1154次閱讀
    基礎<b class='flag-5'>定時器</b>實驗

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

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