[STM32F4] 当我在 SFR 窗口中尝试显示 ADC1 内容时CPU卡死

[复制链接]
829|14
 楼主| 地瓜patch 发表于 2025-4-21 22:14 | 显示全部楼层 |阅读模式
我在 STM32F4 MCU 上使用 ADC1。在连续模式和单模式之间交替使用。
在没有断点的情况下运行程序,正常工作。如果我打开 SFR 窗口,程序仍然可以正常工作。但我打开SFR窗口观察 ADC1 的内容,此时 CPU 会暂停,貌似卡死

classroom 发表于 2025-4-22 11:46 | 显示全部楼层
在 ADC 的连续模式下,ADC 会持续进行转换。如果你暂停 CPU,ADC 的 DMA 或中断可能会受到影响,导致数据丢失或时序错误。
classroom 发表于 2025-4-22 11:46 | 显示全部楼层
在单次模式下,ADC 转换完成后会停止,直到你再次启动转换。暂停 CPU 可能会导致 ADC 停留在某个状态,无法继续正常工作。
laocuo1142 发表于 2025-4-22 11:47 | 显示全部楼层
如果你使用了 DMA 来传输 ADC 数据,调试器暂停 CPU 可能会导致 DMA 传输中断,从而导致数据不一致或丢失。
香水城 发表于 2025-4-22 12:00 | 显示全部楼层
有些状态标志位会因为相应的寄存器被读取后发生改变,调试状态下可能因此某些标志的状态始终读不到
而出现卡死的情形。 你遇到的可能是这个原因。

单片机调试过程中的第3只眼
laocuo1142 发表于 2025-4-22 13:00 | 显示全部楼层
如果你使用了 DMA 来传输 ADC 数据,调试器暂停 CPU 可能会导致 DMA 传输中断,从而导致数据不一致或丢失。
flycamelaaa 发表于 2025-4-22 13:56 | 显示全部楼层
ADC 转换完成中断可能会被挂起,导致后续的转换无法启动。
flycamelaaa 发表于 2025-4-22 14:00 | 显示全部楼层
尽量避免在连续模式下暂停 CPU。
powerantone 发表于 2025-4-22 15:00 | 显示全部楼层
可以在代码中设置断点,而不是直接暂停整个 CPU。
stormwind123 发表于 2025-4-22 16:20 | 显示全部楼层
禁用 DMA 或使用循环缓冲区。
probedog 发表于 2025-4-22 18:03 | 显示全部楼层
检查中断优先级设置是否正确,避免中断嵌套导致的问题。
classroom 发表于 2025-4-22 19:36 | 显示全部楼层
避免在连续模式下暂停 CPU,尽量在单次模式下进行调试。
9dome猫 发表于 2025-4-30 23:37 | 显示全部楼层
当你打开 SFR 窗口并查看 ADC1 的寄存器内容时,可能会触发调试器对 MCU 状态的检查或者调试接口的操作。
 楼主| 地瓜patch 发表于 2025-5-1 23:08 | 显示全部楼层
香水城 发表于 2025-4-22 12:00
有些状态标志位会因为相应的寄存器被读取后发生改变,调试状态下可能因此某些标志的状态始终读不到
而出现 ...

文章不错
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:出一块TI-PLABS-AMP-EVM

1927

主题

15214

帖子

31

粉丝
快速回复 在线客服 返回列表 返回顶部