前言
關(guān)于 DWT(Data watchpoint and trace unit),相信有很多工程師都知道,其可用于 us級別的延時。
今天想和大家分享的是,通過 DWT 檢測特定內(nèi)存變量或函數(shù),當(dāng)其被修改或被調(diào)用時時,可以觸發(fā)中斷,通過這樣的方式,實現(xiàn)一些特殊的調(diào)試手段。
DWT 介紹
U5 的 DWT comparator 有以下特性:
1) 用作指令地址匹配或數(shù)據(jù)地址匹配的單一比較器。
2) 在鏈接組中使用相關(guān)的地址范圍匹配或數(shù)據(jù)地址范圍匹配。
實驗
剛好我手中有塊 STM32U575 的 Nucleo 板子,可以拿過來進行功能驗證。
首先我們通過 STM32CubeMX 實現(xiàn)了基本的串口輸出打印的工程,然后在此工程中,按照以下步驟,添加 DWT 的配置 :
1, 使能 tracing 功能;
2, 使能調(diào)試中斷功能;
3, 配置 comparator 寄存器;
4, 配置 function 寄存器
小結(jié)
這是一個非常有意思的實驗,如果是在調(diào)試界面,那么 DebugMon_Handler 的中斷將以斷點的形式呈現(xiàn)。我們在實際應(yīng)用中,可以通過這樣的調(diào)試手段,來分析一些問題