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

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

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

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

DWT跟蹤組件使用方法

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

DWT跟蹤組件

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

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

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

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

Cortex-M中的DWT

在Cortex-M里面有一個外設(shè)叫DWT(Data Watchpoint and Trace),是用于系統(tǒng)調(diào)試及跟蹤。

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

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

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

當(dāng)CYCCNT溢出之后,會清0重新開始向上計數(shù)。

使用方法

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

DEMCR

想要使能DWT外設(shè),需要由另外的內(nèi)核調(diào)試寄存器DEMCR的位24控制,寫1使能(劃重點啦,要考試!!)。DEMCR的地址是0xE000 EDFC

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

關(guān)于DWT_CYCCNT

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

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

關(guān)于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計數(shù)器,否則CYCCNT計數(shù)器將不會工作。

【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外設(shè),這個由另外內(nèi)核調(diào)試寄存器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<

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

    關(guān)注

    31

    文章

    5363

    瀏覽量

    120952
  • 計數(shù)器
    +關(guān)注

    關(guān)注

    32

    文章

    2261

    瀏覽量

    94878
  • DWT
    DWT
    +關(guān)注

    關(guān)注

    0

    文章

    20

    瀏覽量

    11160

原文標(biāo)題:分享一個超實用的單片機調(diào)試技巧!DWT組件

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

收藏 人收藏

    評論

    相關(guān)推薦

    詳解DWT跟蹤組件的單片機調(diào)試技巧

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

    ComponentCodelab——Tablist的使用方法

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

    DWT的相關(guān)資料下載

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

    AT32使用內(nèi)核DWT寄存器設(shè)定延時時間

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

    如何使用或啟用STM32CubeIDE DWT

    我有一塊 STM32L031K6 Nucleo 板……我想使用 DWT.. 但我變成了這個錯誤:../Core/Src/../Inc/stm32_delay.h:35:30: error: 'DWT
    發(fā)表于 01-30 06:38

    示波器的使用方法

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

    電力電纜局部放電測量DWT技術(shù)

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

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

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

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

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

    STM32“隱藏的定時器”-DWT

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

    DWT跟蹤組件調(diào)試

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

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

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

    揭秘單片機調(diào)試?yán)髦抵?b class='flag-5'>DWT跟蹤組件

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

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

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

    LangChain框架關(guān)鍵組件使用方法

    LangChain,開發(fā)者可以輕松構(gòu)建基于RAG或者Agent流水線的復(fù)雜應(yīng)用體系,而目前我們已經(jīng)可以在LangChain的關(guān)鍵組件LLM,Text Embedding和Reranker中直接調(diào)用OpenVINO進行模型部署,提升本地RAG和Agent服務(wù)的性能,接下來就讓我們一起看下這些
    的頭像 發(fā)表于 08-30 16:55 ?657次閱讀
    LangChain框架關(guān)鍵<b class='flag-5'>組件</b>的<b class='flag-5'>使用方法</b>
    主站蜘蛛池模板: 久久天天躁狠狠躁夜夜呲 | WWW婷婷AV久久久影片 | 国产99久久久国产精品免费看 | 日本久久精品毛片一区随边看 | 国内精品久久久久久久试看 | 中文字幕乱码亚洲无线三区 | 成人性生交片无码免费看 | 丰满五十老女人性视频 | 一级毛片在线免费视频 | 亚洲一区精品伊人久久伊人 | 嗯啊哈啊好棒用力插啊 | 中文字幕在线视频在线看 | 伊人久久综在合线影院 | 高清日本片免费观看 | 大香伊人久久精品一区二区 | 国产在线观看码高清视频 | 99精品在线 | 伊人久久国产精品 | 久久中文字幕无码A片不卡 久久中文字幕人妻熟AV女蜜柚M | 久久久免费热线精品频 | 在线看片亚洲 | 啦啦啦 中国 日本 高清 在线 | 特黄大片aaaaa毛片 | 日本中文字幕伊人成中文字幕 | 王雨纯羞羞 | 九九热精品在线 | CHINESE老阿姨免费视频 | 国产精品一区二区三区四区五区 | 成人人观看的免费毛片 | a级男女性高爱潮高清试看 A级毛片无码久久精品免费 | 伊人角狠狠狠狠 | 国产AV视频二区在线观看 | 一日本道伊人久久综合影 | 女人的选择hd | 人妻体内射精一区二区 | 欧美人与禽zoz0性伦交app | 儿子操妈妈视频 | good神马电影伦理午夜 | japanese色系free日本 | 国产亚洲人成在线视频 | 97人人超碰国产精品最新蜜芽 |