女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

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

3天內不再提示

定時模塊app_timer用法及常見問題—nRF5 SDK模塊系列二

jf_14701710 ? 來源:jf_14701710 ? 作者:jf_14701710 ? 2025-05-12 16:13 ? 次閱讀

app_timer是大家經常用到的一個庫,app_timer的功能就是定時,也就是說,你在某一時刻啟動一個app timer并設定超時時間,超時時間一到,app_timer就會回調timeout handler,然后執行你需要的工作。使用app_timer時有如下幾點需要注意:

app_timer底層使用的是RTC1,而不是timer1/2/3/4,所以app_timer的功耗非常低:0.1uA左右。

app_timer計時精度為1ms,也就是說,app_timer只能計時毫秒的倍數,如果你的計時精度小于1ms,請使用傳統timer1/2/3/4來做。

app_timer計時不是很準確。app_timer庫可以創建幾十甚至上百個app timer,每次start或者stop這些timer,都會對其他timer計時精度產生一些影響。而且app_timer的中斷優先級也不高,所以timeout handler經常會被推遲執行。

啟動或者停止app_timer都是異步的,也就是說,當調用app_timer_start或者app_timer_stop時,系統只是把start或者stop操作入隊,然后觸發一個軟中斷,如果此時上下文環境的中斷優先級高于軟中斷,那么只有等退出了當前上下文環境后才會真正去執行軟中斷handler然后啟動或者停止timer,這也是為什么app_timer模塊需要一個operation queue,并通過APP_TIMER_CONFIG_OP_QUEUE_SIZE來配置其大小;如果此時上下文環境的優先級低于軟中斷,那么立即觸發軟中斷handler并啟動或者停止timer。

用法說明

一般按照如下步驟使用app_timer:

修改app_timer默認配置參數,如下:

wKgZO2ghrbCARrzpAAG2gMbkbPs301.png

創建app_timer。創建app timer時,先定義一個timer ID,用來表示這個timer,然后選擇app timer模式:single shot或者repeated。Single shot模式app timer只運行一次,timeout后執行timeout handler然后自動停止app timer。Repeated模式app timer自動循環執行,每次timeout后執行timeout handler,然后繼續計時,直到下一個timeout然后再次執行timeout handler,如此循環往復。創建app timer的時候,還需要定義timeout handler。

APP_TIMER_DEF(my_timer_id);   //定義timer ID

err_code = app_timer_create(&my_timer_id, APP_TIMER_MODE_REPEATED, my_timeout_handler)

static void my_timeout_handler (void * p_context)

{

       //add your code here

}

啟動app_timer或者停止app_timer。前面也提及過,啟動或者停止timer是異步的,所以我們有一個operation queue來存放start或者stop操作。真正的start或者stop操作是通過軟中斷0來實現的。

err_code = app_timer_start(my_timer_id, APP_TIMER_TICKS(10), NULL);  //啟動timer并定時10ms

err_code = app_timer_stop(my_timer_id);

常見使用問題

目前看到的常見使用問題有:

沒有按照使用說明來使用app_timer,比如定義app timer ID的時候不使用宏APP_TIMER_DEF,超時時間不使用宏APP_TIMER_TICKS來計算。

多次重復調用同一個app_timer_create。app_timer_create用于創建一個timer,多次調用同一個app_timer_create,會讓系統產生多個相同ID的app timer,以致于系統出現不可知的行為。

Stop沒有start的timer。當一個timer沒有通過app_timer_start啟動時,使用app_timer_stop停止它時,或者使用app_timer_stop停止一個不存在的timer時,會打亂app timer的正常行為,產生不可預測的結果。

Operation queue溢出。這個需要具體問題具體分析,有時候operation queue溢出不一定是因為queue size設置太小導致的,而是系統某個地方,確切說某個中斷例程,執行時間太久,導致start和stop操作積累太多,從而產生queue溢出,這個時候就必須找出這個中斷例程執行時間太久的原因,才能從根本上解決這個問題。

沒有初始化app_scheduler,而直接使用app_timer的schedule模式。app_scheduler原理及使用說明見:https://infocenter.nordicsemi.com/index.jsp?topic=%2Fcom.nordic.infocenter.sdk5.v15.3.0%2Flib_scheduler.html&cp=5_1_3_38,概括來說,app_scheduler的作用就是把長長的中斷代碼從中斷函數轉到main線程中來執行。


審核編輯 黃宇

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

    關注

    3

    文章

    1065

    瀏覽量

    47672
  • Nordic
    +關注

    關注

    9

    文章

    200

    瀏覽量

    47919
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    淺談光模塊使用可能遇到的問題以及注意事項

    模塊作為光通信系統中的核心組件,廣泛應用于數據中心、基站傳輸等場景。其性能直接影響網絡傳輸質量,但在實際使用中常因操作不當或環境因素導致故障。本文梳理光模塊常見問題及使用規范,幫助用戶規避
    的頭像 發表于 05-15 09:55 ?121次閱讀

    Flash訪問模塊FDS用法常見問題nRF5 SDK模塊系列

    模塊是你最好的選擇。FDS采用文件和記錄方式來組織Flash數據,也就是說,真正的數據是放在一條記錄中,而多條記錄組成一個文件。根據應用的需要,整個系統可以只有一個文件,也可以包含多個文件。文件采用文件ID來標示,文件ID為2個字節(注:不能取值為0xFFFF)。一個文件下面可以放一條記錄,
    的頭像 發表于 05-12 15:59 ?208次閱讀
    Flash訪問<b class='flag-5'>模塊</b>FDS<b class='flag-5'>用法</b>及<b class='flag-5'>常見問題</b>—<b class='flag-5'>nRF5</b> <b class='flag-5'>SDK</b><b class='flag-5'>模塊</b><b class='flag-5'>系列</b>一

    nRF Connect SDK(NCS)/Zephyr固件升級詳解 – 重點講述MCUboot和藍牙空中升級

    編碼如何解讀?NCS可不可以進行單bank升級?可不可以把一個nRF5 SDK應用升級到NCS應用?MCUboot拷貝操作中的swap和overwrite有什么區別?為什么說MCUboot升級永遠都不
    的頭像 發表于 05-09 14:14 ?1416次閱讀
    <b class='flag-5'>nRF</b> Connect <b class='flag-5'>SDK</b>(NCS)/Zephyr固件升級詳解 – 重點講述MCUboot和藍牙空中升級

    如何調試nRF5 SDK

    本文將講述Nordic nRF5 SDK的主要調試手段,以幫助大家快速定位問題,并解決問題。一般來說,你可以通過打log方式,IDE的debug模式,SDK自帶的app_error_c
    發表于 04-26 23:13

    deepin 25系統安裝常見問題

    隨著 deepin 25 系列版本的發布,我們特別推出 deepin Q&A 常見問題指南,旨在幫助您輕松應對安裝、升級及使用過程中可能遇到的常見問題
    的頭像 發表于 04-14 14:08 ?994次閱讀
    deepin 25系統安裝<b class='flag-5'>常見問題</b>

    STM32定時器基本原理及常見問題之培訓資料

    STM32 定時器基本原理及常見問題之培訓資料v3.10 時基單元、捕捉比較功能、主從觸發與級聯、案例分享 培訓內容:
    發表于 04-08 16:26

    關于功率模塊冷卻的六個常見問題

    的壽命并使其發揮最佳性能。本文章將概述在為應用設計功率模塊時可能出現的關于功率模塊冷卻的六個常見問題。1.器件溫度是否均勻?功率晶體管和極管等功率元器件會產生局部熱
    的頭像 發表于 04-08 11:42 ?205次閱讀
    關于功率<b class='flag-5'>模塊</b>冷卻的六個<b class='flag-5'>常見問題</b>

    藍牙模塊PTR5618性能、開發與應用解析

    J-Link驅動?。 優先選擇Nordic官方SDKnRF5 SDK)進行底層開發?。 ?六、互動討論? ?話題:你在PTR5618開發中遇到過哪些挑戰?歡迎分享優化方案或替代型號推薦!? ?聲明:? 本文
    發表于 03-12 14:32

    40G光模塊介紹及常見問題探討

    模塊廠家提供40G光模塊,應用于數據中心,云計算,高性能計算場景,廣泛兼容華為,華三,思科,銳捷等光纖模塊品牌,助您實現高速數據傳輸。本文介紹40G光模塊接口,光
    的頭像 發表于 11-25 11:56 ?766次閱讀

    鴻蒙Flutter實戰:10-常見問題集合

    ~/.zshrc 或重啟命令行程序,甚至重啟 IDE/系統,直至變量生效。 參考資料 Flutter SDK 倉庫-常見問題
    發表于 10-23 17:05

    UCD90xxx系列常見問題和解答

    電子發燒友網站提供《UCD90xxx系列常見問題和解答.pdf》資料免費下載
    發表于 10-15 11:29 ?0次下載
    UCD90xxx<b class='flag-5'>系列</b><b class='flag-5'>常見問題</b>和解答

    Profinet遠程IO模塊常見問題

    Profinet遠程IO模塊在工業自動化中扮演著重要的角色,但使用過程中也可能會遇到一些問題。
    的頭像 發表于 09-18 14:14 ?1065次閱讀

    單片機WiFi模塊怎樣連接手機APP

    將單片機WiFi模塊連接到手機APP通常涉及以下幾個步驟: 選擇單片機和WiFi模塊 :選擇合適的單片機(如Arduino, ESP32等)和WiFi模塊(如ESP8266, ESP3
    的頭像 發表于 09-10 15:31 ?3218次閱讀

    CAN232模塊常見問題和解決方案

    在使用CAN232模塊時,用戶常會遇到一系列問題,這些問題可能涉及硬件連接、軟件配置、通信穩定性以及故障排查等多個方面。以下是一些大家常問的CAN232模塊使用問題及其可能的解決方案。
    的頭像 發表于 07-18 11:34 ?1592次閱讀

    藍牙模塊NRF52833英文規格書

    電子發燒友網站提供《藍牙模塊NRF52833英文規格書.pdf》資料免費下載
    發表于 06-05 17:23 ?3次下載