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

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創作中心

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

3天內不再提示

DWT跟蹤組件使用方法

硬件攻城獅 ? 來源:技術讓夢想更偉大 ? 作者:技術讓夢想更偉大 ? 2022-10-09 10:14 ? 次閱讀

DWT跟蹤組件

跟蹤組件:數據觀察點與跟蹤(DWT)

a4574ab0-416f-11ed-96c9-dac502259ad0.png

DWT 中有剩余的計數器,它們典型地用于程序代碼的“性能速寫”(profiling)。通過編程它們,就可以讓它們在計數器溢出時發出事件(以跟蹤數據包的形式)。

最典型地,就是使用 CYCCNT寄存器來測量執行某個任務所花的周期數,這也可以用作時間基準相關的目的(操作系統中統計 CPU使用率可以用到它)。

Cortex-M中的DWT

在Cortex-M里面有一個外設叫DWT(Data Watchpoint and Trace),是用于系統調試及跟蹤。

a48285cc-416f-11ed-96c9-dac502259ad0.png

它有一個32位的寄存器叫CYCCNT,它是一個向上的計數器,記錄的是內核時鐘運行的個數,內核時鐘跳動一次,該計數器就加1,精度非常高,如果內核時鐘是72M,那精度就是1/72M = 14ns,而程序的運行時間都是微秒級別的,所以14ns的精度是遠遠夠的。

最長能記錄的時間為:59.65s。計算方法為2的32次方/72000000。

當CYCCNT溢出之后,會清0重新開始向上計數。

使用方法

要實現延時的功能,總共涉及到三個寄存器:DEMCR 、DWT_CTRL、DWT_CYCCNT,分別用于開啟DWT功能、開啟CYCCNT及獲得系統時鐘計數值。

DEMCR

想要使能DWT外設,需要由另外的內核調試寄存器DEMCR的位24控制,寫1使能(劃重點啦,要考試?。。?。DEMCR的地址是0xE000 EDFC

a4bf8c56-416f-11ed-96c9-dac502259ad0.pnga4e0356e-416f-11ed-96c9-dac502259ad0.png

關于DWT_CYCCNT

使能DWT_CYCCNT寄存器之前,先清0。讓我們看看DWT_CYCCNT的基地址,從ARM-Cortex-M手冊中可以看到其基地址是0xE000 1004,復位默認值是0,而且它的類型是可讀可寫的,我們往0xE000 1004這個地址寫0就將DWT_CYCCNT清0了。

a4fea044-416f-11ed-96c9-dac502259ad0.png

關于CYCCNTENA

CYCCNTENA Enable the CYCCNT counter. If not enabled, the counter does not count and no event is generated for PS sampling or CYCCNTENA. In normal use, the debugger must initialize the CYCCNT counter to 0.

它是DWT控制寄存器的第一位,寫1使能,則啟用CYCCNT計數器,否則CYCCNT計數器將不會工作。

【https://developer.arm.com/documentation/ddi0337/e/system-debug/dwt/summary-and-description-of-the-dwt-registers?lang=en】

a5172556-416f-11ed-96c9-dac502259ad0.png

綜上所述

想要使用DWT的CYCCNT步驟:

先使能DWT外設,這個由另外內核調試寄存器DEMCR的位24控制,寫1使能

使能CYCCNT寄存器之前,先清0。

使能CYCCNT寄存器,這個由DWT的CYCCNTENA 控制,也就是DWT控制寄存器的位0控制,寫1使能

寄存器定義:

//0xE000EDFCDEMCRRWDebugExceptionandMonitorControlRegister.
//使能DWT模塊的功能位
#defineDEMCR(*(unsignedint*)0xE000EDFC)
#defineTRCENA(0x01<

用法示例:

vvolatileunsignedint*DWT_CYCCNT;
volatileunsignedint*DWT_CONTROL;
volatileunsignedint*SCB_DEMCR;

voidreset_timer(){
DWT_CYCCNT=(int*)0xE0001004;//addressoftheregister
DWT_CONTROL=(int*)0xE0001000;//addressoftheregister
SCB_DEMCR=(int*)0xE000EDFC;//addressoftheregister
*SCB_DEMCR=*SCB_DEMCR|0x01000000;
*DWT_CYCCNT=0;//resetthecounter
*DWT_CONTROL=0;
}

voidstart_timer(){
*DWT_CONTROL=*DWT_CONTROL|1;//enablethecounter
}

voidstop_timer(){
*DWT_CONTROL=*DWT_CONTROL|0;//disablethecounter
}

unsignedintgetCycles(){
return*DWT_CYCCNT;
}

main(){
....
reset_timer();//resettimer
start_timer();//starttimer
//Codetoprofile
...
myFunction();
...
stop_timer();//stoptimer
numCycles=getCycles();//readnumberofcycles
...
}

示例2:

#definestart_timer()*((volatileuint32_t*)0xE0001000)=0x40000001//EnableCYCCNTregister
#definestop_timer()*((volatileuint32_t*)0xE0001000)=0x40000000//DisableCYCCNTregister
#defineget_timer()*((volatileuint32_t*)0xE0001004)//GetvaluefromCYCCNTregister

/***********
*Howtouse:
*uint32_tit1,it2;//startandstopflag
start_timer();//startthetimer.
it1=get_timer();//storecurrentcycle-countinalocal
//dosomething
it2=get_timer()-it1;//Derivethecycle-countdifference
stop_timer();//Iftimerisnotneededanymore,stop
print_int(it2);//Displaythedifference
****/

示例3:

#defineDWT_CR*(uint32_t*)0xE0001000

#defineDWT_CYCCNT*(uint32_t*)0xE0001004

#defineDEM_CR*(uint32_t*)0xE000EDFC

#defineDEM_CR_TRCENA(1<

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

    關注

    31

    文章

    5397

    瀏覽量

    122682
  • 計數器
    +關注

    關注

    32

    文章

    2282

    瀏覽量

    95801
  • DWT
    DWT
    +關注

    關注

    0

    文章

    20

    瀏覽量

    11256

原文標題:分享一個超實用的單片機調試技巧!DWT組件

文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關注!文章轉載請注明出處。

收藏 0人收藏

    評論

    相關推薦

    詳解DWT跟蹤組件的單片機調試技巧

    DWT 中有剩余的計數器,它們典型地用于程序代碼的“性能速寫”(profiling)。通過編程它們,就可以讓它們在計數器溢出時發出事件(以跟蹤數據包的形式)。
    發表于 10-03 06:42 ?767次閱讀

    ComponentCodelab——Tablist的使用方法

    讓開發者了解HarmonyOS應用開發常用布局和常用組件之Tablist的使用方法,體驗從工程創建到代碼、布局的編寫,再到編譯構建、部署和運行的全過程。
    發表于 05-08 22:04

    DWT的相關資料下載

    特定應用場景下定時器外設資源是十分稀缺的。在留言區有位大佬提到可以使用DWT,我就研究了一番。02、DWT在Cortex-M里面有一個外設叫DWT(DataWatchpoint andTrace),是用于系統調試及
    發表于 02-07 09:19

    AT32使用內核DWT寄存器設定延時時間

    (Cortex-M 內核)GPIO快速使用方法硬件資源AT-START-F403A V1.x 實驗板;軟件資源該 Demo 以 AT32F403A 為例,BSP 版本
    發表于 07-19 20:18

    如何使用高級配置和電源接口(ACPI)支持CoreSight跟蹤組件

    本規范描述了如何使用高級配置和電源接口(ACPI)支持CoreSight[1]跟蹤組件。該規范基于ACPI _DSD圖形規范[2],該規范提供了對表示作為一組連接設備排列的系統組件的支持
    發表于 08-08 06:16

    示波器的使用方法

    數字萬用表使用方法和示波器的使用方法詳解。
    發表于 03-14 10:38 ?32次下載

    電力電纜局部放電測量DWT技術

    從主要測試方法、信號提取電路和信號波形、離散小波變換(DWT)的濾波器本質特性實例分析了電力電纜局部放 電的現場測量和降噪分析技術。根據離散小波降噪的母小波選擇、分解尺度選擇和閾值算法等3個關鍵
    發表于 08-30 17:47 ?10次下載
    電力電纜局部放電測量<b class='flag-5'>DWT</b>技術

    示波器的使用方法(三):示波器的使用方法詳解

    示波器的使用方法并非很難,重點在于正確使用示波器的使用方法。往期文章中,小編對模擬示波器的使用方法和數字示波器的使用方法均有所介紹。為增進大家對示波器的
    的頭像 發表于 12-24 20:37 ?3614次閱讀

    羅森伯格HFM電纜組件使用方法

    組件使用方法,目的是闡述安裝使用過程中的注意事項,避免錯誤的操作。 ? 1 2 表:HFM線端連接器 連接器和電纜組件的安裝過程涉及到線纜組件與板端連接器的插入、拔出和線束的布置等過
    的頭像 發表于 01-18 15:33 ?3706次閱讀

    STM32“隱藏的定時器”-DWT

    特定應用場景下定時器外設資源是十分稀缺的。在留言區有位大佬提到可以使用DWT,我就研究了一番。02、DWT在Cortex-M里面有一個外設叫DWT(DataWatchpoint andTrace),是用于系統調試及
    發表于 12-04 14:51 ?1次下載
    STM32“隱藏的定時器”-<b class='flag-5'>DWT</b>

    DWT跟蹤組件調試

    DWT跟蹤組件 跟蹤組件:數據觀察點與跟蹤(DWT)
    的頭像 發表于 06-22 14:24 ?1207次閱讀
    <b class='flag-5'>DWT</b><b class='flag-5'>跟蹤</b><b class='flag-5'>組件</b>調試

    射頻電纜組件使用方法和注意事項

    射頻電纜組件使用方法和注意事項? 射頻電纜組件是一類廣泛應用于通信系統、無線電設備和其他射頻設備中的重要電子組件。它們在傳輸高頻信號時扮演著關鍵的角色,因此使用和安裝時需要特別注意一
    的頭像 發表于 01-05 15:08 ?915次閱讀

    揭秘單片機調試利器值之DWT跟蹤組件

    DWT 中有剩余的計數器,它們典型地用于程序代碼的“性能速寫”(profiling)。通過編程它們,就可以讓它們在計數器溢出時發出事件(以跟蹤數據包的形式)。
    發表于 02-28 13:55 ?1135次閱讀
    揭秘單片機調試利器值之<b class='flag-5'>DWT</b><b class='flag-5'>跟蹤</b><b class='flag-5'>組件</b>

    太陽能組件檢測設備的使用方法簡單嗎?

      JD-EL4太陽能組件檢測設備的使用方法簡單而直觀,通常設計為用戶友好型,以確保操作便捷、高效。以下將詳細介紹太陽能組件檢測設備的使用方法及相關特點:   1. 簡潔直觀的操
    的頭像 發表于 05-21 17:09 ?673次閱讀

    LangChain框架關鍵組件使用方法

    LangChain,開發者可以輕松構建基于RAG或者Agent流水線的復雜應用體系,而目前我們已經可以在LangChain的關鍵組件LLM,Text Embedding和Reranker中直接調用OpenVINO進行模型部署,提升本地RAG和Agent服務的性能,接下來就讓我們一起看下這些
    的頭像 發表于 08-30 16:55 ?936次閱讀
    LangChain框架關鍵<b class='flag-5'>組件</b>的<b class='flag-5'>使用方法</b>

    電子發燒友

    中國電子工程師最喜歡的網站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術信息
    • 參加活動獲取豐厚的禮品
    主站蜘蛛池模板: 无毒成人社区 | 日韩精品欧美在线视频在线 | 精品国产午夜福利在线观看蜜月 | 亚洲精品国产熟女久久久 | 色综合久久88一加勒比 | 狠狠色综合久久丁香婷婷 | 国产亚洲精品视频在线网 | 国偷自产视频一区二区99 | 性白俄罗斯高清xxxxx | 国产亚洲制服免视频 | 亚洲欧美一区二区三区九九九 | 乱精品一区字幕二区 | 精品无码国产AV一区二区三区 | 亚洲免费在线 | 欧美亚洲日韩自拍高清中文 | FREE性丰满白嫩白嫩的HD | 国产精品日本欧美一区二区 | 久久re热在线视频精6 | 欧美日韩视频高清一区 | 青柠在线电影高清免费观看 | 九色91精品国产网站 | 日韩人妻无码精品久久中文字幕 | 亚洲精品高清AV在线播放 | 国产成人精品精品欧美 | 亚洲国产中文字幕在线视频综合 | 在线播放日韩欧美亚洲日本 | 国产高清精品自在久久 | 九九久久精品国产 | 美女挑战50厘米长的黑人 | 美妇教师双飞后菊 | 父亲在线日本综艺免费观看全集 | 国产一区二区三区内射高清 | 亚洲精品自在在线观看 | 亚洲AV无码专区国产精品麻豆 | 日韩在线看片中文字幕不卡 | a视频免费看| 国内精品久久久久久久试看 | 把腿张开老子CAO烂你动态图 | 99国产精品白浆在线观看免费 | 神马伦理2019影院不卡片 | 国产AV天堂一区二区三区 |