STM32 GPIO 寄存器上的观察点

Watchpoint on STM32 GPIO register

在 STM32F4 上使用 Keil µVision 我正在尝试向 GPIO 数据寄存器添加一个观察点,但它不会触发。 我希望在输出数据写入该寄存器后立即触发观察点。 将观察点设置为 os 定时器工作正常。 外设寄存器在STM32 F4中是内存映射的,据我所知

我在这里缺少任何(简单的)解释吗? 非常感谢任何提示。

没有来源,也没有个人经验,但我能想到这行不通的几个原因。

通常值不像在 RAM 中那样 "there",而是在您访问外围寄存器时创建的。

您可以说定期访问可以解决这个问题,但这不适用于读取有副作用的寄存器(通常清除一些状态标志)。

我认为您必须为 GPIO 创建一个中断处理程序,并为此创建一个断点。

虽然 ARM 内核可以访问与 SRAM 或闪存相同的平面 32 位地址 space 中的外设 I/O 寄存器,但外设 I/O 寄存器位于单独的总线上MCU,而不是通过与 SRAM 相同的总线访问。比如STM32F,有ABH总线,根据设备的不同,通常又分为APB1和APB2总线。无论如何,由 ARM ("CoreSight") 定义的调试控制器单元提供数据观察点功能,并且它仅适用于 "real" 数据访问。

如果它能实现就好了;-)

如果 12 周期延迟是一个问题,则有一个解决方法。使用 Pin 作为触发内存到内存 DMA 传输的触发器。在目标(或源)RAM 地址上设置观察点。