国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

    文章

    1101

    瀏覽量

    51714
  • Nordic
    +關注

    關注

    9

    文章

    257

    瀏覽量

    49016
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    針對雙bank和單bank的使用方法建議

    NRF_DFU_FORCE_DUAL_BANK_APP_UPDATES 禁止 single?bank(更安全)。[nRF5 DFU 配置] 2. nRF Connect SDK +
    發表于 02-12 10:24

    深度技術解析nRF Connect SDK裸機選項方案

    nRF Connect SDK的裸機選項基于經過市場驗證的SoftDevice,這是預構建的低功耗藍牙協議堆棧,該協議堆棧為大多數nRF5 SDK用戶所熟悉,并由nrfx提供獨立于
    發表于 10-31 23:11

    使用nRF52840芯片的USB Host 功能參考例程

    Host 示例 Nordic 的 nRF5 SDK(或 nRF Connect SDK,取決于你使用的開發框架)中包含專門的 USB Host 示例,路徑通常如下:
    發表于 10-31 12:47

    深度技術解析低功耗藍牙廠商nordic的nRF Connect SDK裸機選項方案

    : 基于nRF54L系列的裸機選項低功耗藍牙開發 SoftDevice S115 僅支持外設角色,最多支持2個連接 與最新nRF5 SDK SoftDevice (v17)采用相同AP
    發表于 10-29 21:17

    nRF Connect SDK Basic

    用戶在使用 nRF connect SDK 的時候經常會操作的外設有GPIO,I2C,SPI,UART。我們就以 nRF connect SDK 2.7.0 中的例程代碼
    的頭像 發表于 08-20 10:41 ?818次閱讀
    <b class='flag-5'>nRF</b> Connect <b class='flag-5'>SDK</b> Basic

    Nordic nRF5 SDK和softdevice介紹

    里?Softdevice幫助文檔在哪里?如何選擇某個SDK例子 (example) 以開始我們的BLE開發之旅?本文將對以上問題進行解答。 Nordic目前有2套完全獨立的SDKnRF5 S
    的頭像 發表于 08-20 09:54 ?3086次閱讀
    Nordic <b class='flag-5'>nRF5</b> <b class='flag-5'>SDK</b>和softdevice介紹

    如何調試nRF5 SDK

    本文將講述Nordic nRF5 SDK的主要調試手段,以幫助大家快速定位問題,并解決問題。一般來說,你可以通過打log方式,IDE的debug模式,SDK自帶的app_error_c
    的頭像 發表于 06-24 08:59 ?1006次閱讀
    如何調試<b class='flag-5'>nRF5</b> <b class='flag-5'>SDK</b>

    nRF5 SDK軟件架構及softdevice工作原理

    SDK,建議先看一下這篇文章“Nordic nRF5 SDK和softdevice介紹”,以建立Nordic nRF5 SDK的一些基本知
    的頭像 發表于 06-23 11:08 ?694次閱讀
    <b class='flag-5'>nRF5</b> <b class='flag-5'>SDK</b>軟件架構及softdevice工作原理

    Nordic nRF51/nRF52開發流程說明

    51422/nRF51802等芯片,開發者可以按照如下流程去評估和開發nRF52/51應用解決方案。 如果你英文比較好的話,建議直接閱讀Nordic官方的“nRF5 Getting Started”:https
    的頭像 發表于 06-17 14:25 ?1484次閱讀
    Nordic <b class='flag-5'>nRF</b>51/<b class='flag-5'>nRF</b>52開發流程說明

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

    模塊是你最好的選擇。FDS采用文件和記錄方式來組織Flash數據,也就是說,真正的數據是放在一條記錄中,而多條記錄組成一個文件。根據應用的需要,整個系統可以只有一個文件,也可以包含多個文件。文件采用文件ID來標示,文件ID為2個字節(注:不能取值為0xFFFF)。一個文件下面可以放一條記錄,
    的頭像 發表于 05-12 15:59 ?1730次閱讀
    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 ?3594次閱讀
    <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

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

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

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

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

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

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