在 STM32F4 上使用 Keil µVision 我试图向 GPIO 数据寄存器添加一个观察点,但它不会触发。我希望在输出数据写入该寄存器后立即触发观察点。将观察点设置为 os 计时器可以正常工作。据我所知,外设寄存器是在 STM32 F4 中映射的内存。
我在这里缺少任何(简单)解释吗?非常感谢任何提示。
在 STM32F4 上使用 Keil µVision 我试图向 GPIO 数据寄存器添加一个观察点,但它不会触发。我希望在输出数据写入该寄存器后立即触发观察点。将观察点设置为 os 计时器可以正常工作。据我所知,外设寄存器是在 STM32 F4 中映射的内存。
我在这里缺少任何(简单)解释吗?非常感谢任何提示。
没有来源,也没有个人经验,但我能想到一些为什么这不起作用的原因。
通常值不像在 RAM 中那样“存在”,而是在您访问外围寄存器时创建。
你可以说定期访问可以解决这个问题,但这不适用于读取有副作用的寄存器(通常清除一些状态标志)。
我认为您必须为 GPIO 创建一个中断处理程序,并为此创建一个断点。
如果 12 个周期的延迟是一个问题,则有一种解决方法。使用 Pin 作为触发内存到内存 DMA 传输的触发器。在目标(或源)RAM 地址上设置观察点。
虽然 ARM 内核可以访问与 SRAM 或闪存相同的平面 32 位地址空间中的外设 I/O 寄存器,但外设 I/O 寄存器位于 MCU 上的不同总线上,而不是通过与 SRAM 相同的总线访问. 例如,STM32F 上有 ABH 总线,根据器件的不同,通常又分为 APB1 和 APB2 总线。在任何情况下,由 ARM 定义的调试控制器单元(“CoreSight”)提供数据观察点功能,它只适用于“真实”数据访问。
如果它确实会很棒;-)