STMCU小助手
发布时间:2023-2-14 14:32
|
1. 前言关于 DWT(Data watchpoint and trace unit),相信有很多工程师都知道,其可用于 us级别的延时。 今天想和大家分享的是,通过 DWT 检测特定内存变量或函数,当其被修改或被调用时时,可以触发中断,通过这样的方式,实现一些特殊的调试手段。 6 b( E7 O4 t/ m/ F 2. DWT 介绍 U5 的 DWT comparator 有以下特性:7 W' M x9 C6 T d% ] 1) 用作指令地址匹配或数据地址匹配的单一比较器。6 z. d/ a+ Q8 u u2 E 2) 在链接组中使用相关的地址范围匹配或数据地址范围匹配。 当 comparator 被匹配时,可以生成以下事件: 1) 调试事件,导致 PE 或者进入调试状态;或者,如果执行主扩展则要进行DebugMonitor 异常。 2) 如果实现,将与 ETM 匹配。2 F" ^/ _" z& Q; s0 B% k4 {6 ^ 3) 向另一个外部资源发送匹配。 DWT 由 function 和 comparator 寄存器组成,其定义是在 Armv8-M Architecture Reference Manual 文档中。 DWT_COMPn:存放比较值, u0 ?( X% f; l' a' O( ` [; Z DWT_FUNCTIONn:定义 comparator 的操作 1 V+ u+ ]( y# b4 L, {$ u& X2 y
3. 实验2 g" n; e, T: d8 Z% y4 ^ 刚好我手中有块 STM32U575 的 Nucleo 板子,可以拿过来进行功能验证。 首先我们通过 STM32CubeMX 实现了基本的串口输出打印的工程,然后在此工程中,按照以下步骤,添加 DWT 的配置 :- b5 O' P" {8 h* e, h# r4 g 1, 使能 tracing 功能; 2, 使能调试中断功能;( q5 k6 `& q! l# U 3, 配置 comparator 寄存器;1 N; A: l6 G5 Z/ x# e6 R' d8 J2 S4 v% Y 4, 配置 function 寄存器 具体代码如图 1: & P$ ]. w/ e' M. x" D/ k8 j: W
) G+ M% d: ?: I$ p( |. E, _. O8 e ) R+ q4 t6 `# K- e 这里我们配置了两个 comparator,COMP0 监控 test_var 变量的写操作, COMP1 监控 HAL_Delay 函数的调用,一旦发生 test_var 变量的写动作,或者 HAL_Delay 函数被调用,都将产生 DebugMonitor 中断事件,并且我们可以在 Debug_Mon_Handler 中断中区分这两个 comparator 事件。 6 d! ]! c; V" t8 k' _# f$ c6 ] ) I/ Z0 @! k7 g8 X5 _/ v 完整版请查看:附件
用STM32的DWT单元监控内存_v1.0.pdf
(380.17 KB, 下载次数: 65)
|
【STM32H735G-DK 测评】STM32H735G-DK External Loder 编译和测试
Keil-MDK 在线调试设置断点的高级用法
请教下STM32N6570 怎么把分辨率改成320x240并可以全屏显示
【福利三:逢7发帖赢大礼】想要充分利用STM32H743VI片内的RAM空间(但并不顺利)
基于stm32平台上的IC-MU磁绝对值编码器SPI通讯和码盘数据处理
使用STM32 MCU和MPU连接PDM数字麦克风
分享STM32资料-采用 STM32U031R8 MCU 的 STM32 Nucleo-64 开发板,官方资料,数据手册等资料
HRTIM 指南
DAC,COMP,HRTIM Fault 功能的使用
一个软件引起的 LSE 驱动不良的问题
微信公众号
手机版
你好,请问我按照完整版里面的程序写出来,只要触发debugmonitor异常就会报SecureFault,走不到异常处理函数里面去,请问可能是什么导致的啊