chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

定時(shí)模塊app_timer用法及常見(jiàn)問(wèn)題—nRF5 SDK模塊系列二

jf_14701710 ? 來(lái)源:jf_14701710 ? 作者:jf_14701710 ? 2025-05-12 16:13 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

app_timer是大家經(jīng)常用到的一個(gè)庫(kù),app_timer的功能就是定時(shí),也就是說(shuō),你在某一時(shí)刻啟動(dòng)一個(gè)app timer并設(shè)定超時(shí)時(shí)間,超時(shí)時(shí)間一到,app_timer就會(huì)回調(diào)timeout handler,然后執(zhí)行你需要的工作。使用app_timer時(shí)有如下幾點(diǎn)需要注意:

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

app_timer計(jì)時(shí)精度為1ms,也就是說(shuō),app_timer只能計(jì)時(shí)毫秒的倍數(shù),如果你的計(jì)時(shí)精度小于1ms,請(qǐng)使用傳統(tǒng)timer1/2/3/4來(lái)做。

app_timer計(jì)時(shí)不是很準(zhǔn)確。app_timer庫(kù)可以創(chuàng)建幾十甚至上百個(gè)app timer,每次start或者stop這些timer,都會(huì)對(duì)其他timer計(jì)時(shí)精度產(chǎn)生一些影響。而且app_timer的中斷優(yōu)先級(jí)也不高,所以timeout handler經(jīng)常會(huì)被推遲執(zhí)行。

啟動(dòng)或者停止app_timer都是異步的,也就是說(shuō),當(dāng)調(diào)用app_timer_start或者app_timer_stop時(shí),系統(tǒng)只是把start或者stop操作入隊(duì),然后觸發(fā)一個(gè)軟中斷,如果此時(shí)上下文環(huán)境的中斷優(yōu)先級(jí)高于軟中斷,那么只有等退出了當(dāng)前上下文環(huán)境后才會(huì)真正去執(zhí)行軟中斷handler然后啟動(dòng)或者停止timer,這也是為什么app_timer模塊需要一個(gè)operation queue,并通過(guò)APP_TIMER_CONFIG_OP_QUEUE_SIZE來(lái)配置其大小;如果此時(shí)上下文環(huán)境的優(yōu)先級(jí)低于軟中斷,那么立即觸發(fā)軟中斷handler并啟動(dòng)或者停止timer。

用法說(shuō)明

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

修改app_timer默認(rèn)配置參數(shù),如下:

wKgZO2ghrbCARrzpAAG2gMbkbPs301.png

創(chuàng)建app_timer。創(chuàng)建app timer時(shí),先定義一個(gè)timer ID,用來(lái)表示這個(gè)timer,然后選擇app timer模式:single shot或者repeated。Single shot模式app timer只運(yùn)行一次,timeout后執(zhí)行timeout handler然后自動(dòng)停止app timer。Repeated模式app timer自動(dòng)循環(huán)執(zhí)行,每次timeout后執(zhí)行timeout handler,然后繼續(xù)計(jì)時(shí),直到下一個(gè)timeout然后再次執(zhí)行timeout handler,如此循環(huán)往復(fù)。創(chuàng)建app timer的時(shí)候,還需要定義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

}

啟動(dòng)app_timer或者停止app_timer。前面也提及過(guò),啟動(dòng)或者停止timer是異步的,所以我們有一個(gè)operation queue來(lái)存放start或者stop操作。真正的start或者stop操作是通過(guò)軟中斷0來(lái)實(shí)現(xiàn)的。

err_code = app_timer_start(my_timer_id, APP_TIMER_TICKS(10), NULL);  //啟動(dòng)timer并定時(shí)10ms

err_code = app_timer_stop(my_timer_id);

常見(jiàn)使用問(wèn)題

目前看到的常見(jiàn)使用問(wèn)題有:

沒(méi)有按照使用說(shuō)明來(lái)使用app_timer,比如定義app timer ID的時(shí)候不使用宏APP_TIMER_DEF,超時(shí)時(shí)間不使用宏APP_TIMER_TICKS來(lái)計(jì)算。

多次重復(fù)調(diào)用同一個(gè)app_timer_create。app_timer_create用于創(chuàng)建一個(gè)timer,多次調(diào)用同一個(gè)app_timer_create,會(huì)讓系統(tǒng)產(chǎn)生多個(gè)相同ID的app timer,以致于系統(tǒng)出現(xiàn)不可知的行為。

Stop沒(méi)有start的timer。當(dāng)一個(gè)timer沒(méi)有通過(guò)app_timer_start啟動(dòng)時(shí),使用app_timer_stop停止它時(shí),或者使用app_timer_stop停止一個(gè)不存在的timer時(shí),會(huì)打亂app timer的正常行為,產(chǎn)生不可預(yù)測(cè)的結(jié)果。

Operation queue溢出。這個(gè)需要具體問(wèn)題具體分析,有時(shí)候operation queue溢出不一定是因?yàn)閝ueue size設(shè)置太小導(dǎo)致的,而是系統(tǒng)某個(gè)地方,確切說(shuō)某個(gè)中斷例程,執(zhí)行時(shí)間太久,導(dǎo)致start和stop操作積累太多,從而產(chǎn)生queue溢出,這個(gè)時(shí)候就必須找出這個(gè)中斷例程執(zhí)行時(shí)間太久的原因,才能從根本上解決這個(gè)問(wèn)題。

沒(méi)有初始化app_scheduler,而直接使用app_timer的schedule模式。app_scheduler原理及使用說(shuō)明見(jiàn):https://infocenter.nordicsemi.com/index.jsp?topic=%2Fcom.nordic.infocenter.sdk5.v15.3.0%2Flib_scheduler.html&cp=5_1_3_38,概括來(lái)說(shuō),app_scheduler的作用就是把長(zhǎng)長(zhǎng)的中斷代碼從中斷函數(shù)轉(zhuǎn)到main線程中來(lái)執(zhí)行。


審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • SDK
    SDK
    +關(guān)注

    關(guān)注

    3

    文章

    1111

    瀏覽量

    52019
  • Nordic
    +關(guān)注

    關(guān)注

    9

    文章

    268

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    伺服定位模塊用法

    使用伺服定位模塊,簡(jiǎn)單來(lái)說(shuō)就是一套 “規(guī)劃-接線-配置-編程-調(diào)試” 的標(biāo)準(zhǔn)化流程。下面將以主流的三菱和西門子系列為例,為你拆解各個(gè)環(huán)節(jié)的具體操作。
    的頭像 發(fā)表于 04-17 16:13 ?110次閱讀

    關(guān)于ST系列MCU使用STlink仿真燒錄常見(jiàn)問(wèn)題

    關(guān)于ST系列MCU使用STlink仿真燒錄常見(jiàn)問(wèn)題
    的頭像 發(fā)表于 04-14 17:16 ?469次閱讀
    關(guān)于ST<b class='flag-5'>系列</b>MCU使用STlink仿真燒錄<b class='flag-5'>常見(jiàn)問(wèn)題</b>

    EWM103-W15S系列雙模WiFi模塊使用常見(jiàn)問(wèn)題避坑指南

    最近有客戶做智能門鎖項(xiàng)目,用了EWM103-W15SP和EWM103-W15SX雙模WiFi模塊,前前后后踩了快10個(gè)坑,光燒模塊就燒了3片,終于把這貨的脾氣摸透了。今天把客戶使用時(shí)遇到的常見(jiàn)問(wèn)題
    的頭像 發(fā)表于 04-14 11:22 ?134次閱讀

    針對(duì)雙bank和單bank的使用方法建議

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

    TDK SmartSound One評(píng)估模塊使用指南

    模塊就是這樣一款產(chǎn)品,它為評(píng)估TDK MEMS麥克風(fēng)的性能提供了一個(gè)優(yōu)秀的平臺(tái)。本文將詳細(xì)介紹該評(píng)估模塊的各項(xiàng)特性、使用方法以及常見(jiàn)問(wèn)題解答。 文件下載: TDK InvenSense
    的頭像 發(fā)表于 12-26 11:20 ?721次閱讀

    深度技術(shù)解析nRF Connect SDK裸機(jī)選項(xiàng)方案

    。 nRF Connect SDK的裸機(jī)選項(xiàng)基于經(jīng)過(guò)市場(chǎng)驗(yàn)證的SoftDevice,這是預(yù)構(gòu)建的低功耗藍(lán)牙協(xié)議堆棧,該協(xié)議堆棧為大多數(shù)nRF5 SDK用戶所熟悉,并由nrfx提供獨(dú)立于
    發(fā)表于 10-31 23:11

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

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

    深度技術(shù)解析低功耗藍(lán)牙廠商nordic的nRF Connect SDK裸機(jī)選項(xiàng)方案

    : 基于nRF54L系列的裸機(jī)選項(xiàng)低功耗藍(lán)牙開(kāi)發(fā) SoftDevice S115 僅支持外設(shè)角色,最多支持2個(gè)連接 與最新nRF5 SDK SoftDevice (v17)采用相同AP
    發(fā)表于 10-29 21:17

    nRF Connect SDK Basic

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

    Nordic nRF5 SDK和softdevice介紹

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

    如何調(diào)試nRF5 SDK

    本文將講述Nordic nRF5 SDK的主要調(diào)試手段,以幫助大家快速定位問(wèn)題,并解決問(wèn)題。一般來(lái)說(shuō),你可以通過(guò)打log方式,IDE的debug模式,SDK自帶的app_error_c
    的頭像 發(fā)表于 06-24 08:59 ?1141次閱讀
    如何調(diào)試<b class='flag-5'>nRF5</b> <b class='flag-5'>SDK</b>

    nRF5 SDK軟件架構(gòu)及softdevice工作原理

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

    Nordic nRF51/nRF52開(kāi)發(fā)流程說(shuō)明

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

    Flash訪問(wèn)模塊FDS用法常見(jiàn)問(wèn)題nRF5 SDK模塊系列

    模塊是你最好的選擇。FDS采用文件和記錄方式來(lái)組織Flash數(shù)據(jù),也就是說(shuō),真正的數(shù)據(jù)是放在一條記錄中,而多條記錄組成一個(gè)文件。根據(jù)應(yīng)用的需要,整個(gè)系統(tǒng)可以只有一個(gè)文件,也可以包含多個(gè)文件。文件采用文件ID來(lái)標(biāo)示,文件ID為2個(gè)字節(jié)(注:不能取值為0xFFFF)。一個(gè)文件下面可以放一條記錄,
    的頭像 發(fā)表于 05-12 15:59 ?2014次閱讀
    Flash訪問(wèn)<b class='flag-5'>模塊</b>FDS<b class='flag-5'>用法</b>及<b class='flag-5'>常見(jiàn)問(wèn)題</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固件升級(jí)詳解 – 重點(diǎn)講述MCUboot和藍(lán)牙空中升級(jí)

    編碼如何解讀?NCS可不可以進(jìn)行單bank升級(jí)?可不可以把一個(gè)nRF5 SDK應(yīng)用升級(jí)到NCS應(yīng)用?MCUboot拷貝操作中的swap和overwrite有什么區(qū)別?為什么說(shuō)MCUboot升級(jí)永遠(yuǎn)都不
    的頭像 發(fā)表于 05-09 14:14 ?3893次閱讀
    <b class='flag-5'>nRF</b> Connect <b class='flag-5'>SDK</b>(NCS)/Zephyr固件升級(jí)詳解 – 重點(diǎn)講述MCUboot和藍(lán)牙空中升級(jí)