前言
关于 DWT(Data watchpoint and trace unit),相信有很多工程师都知道,其可用于 us级别的延时。
今天想和大家分享的是,通过 DWT 检测特定内存变量或函数,当其被修改或被调用时时,可以触发中断,通过这样的方式,实现一些特殊的调试手段。
DWT 介绍
U5 的 DWT comparator 有以下特性:
1) 用作指令地址匹配或数据地址匹配的单一比较器。
2) 在链接组中使用相关的地址范围匹配或数据地址范围匹配。
实验
刚好我手中有块 STM32U575 的 Nucleo 板子,可以拿过来进行功能验证。
首先我们通过 STM32CubeMX 实现了基本的串口输出打印的工程,然后在此工程中,按照以下步骤,添加 DWT 的配置 :
1, 使能 tracing 功能;
2, 使能调试中断功能;
3, 配置 comparator 寄存器;
4, 配置 function 寄存器
小结
这是一个非常有意思的实验,如果是在调试界面,那么 DebugMon_Handler 的中断将以断点的形式呈现。我们在实际应用中,可以通过这样的调试手段,来分析一些问题
阅读全文