精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

完善資料讓更多小伙伴認識你,還能領取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

    文章

    5325

    瀏覽量

    120054
  • 計數器
    +關注

    關注

    32

    文章

    2254

    瀏覽量

    94374
  • DWT
    DWT
    +關注

    關注

    0

    文章

    20

    瀏覽量

    11124

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

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

收藏 人收藏

    評論

    相關推薦

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

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

    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

    如何使用或啟用STM32CubeIDE DWT

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

    示波器的使用方法

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

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

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

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

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

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

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

    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 ?971次閱讀
    <b class='flag-5'>DWT</b><b class='flag-5'>跟蹤</b><b class='flag-5'>組件</b>調試

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

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

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

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

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

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

    LangChain框架關鍵組件使用方法

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