Keil 调试器更改有关 FIFO 的STM32H7的硬件状态



我在使用 Keil MDK 5 进行STM32H743时遇到了以下问题。

我的SPI代码遇到了通信问题,过了一会儿,我发现这是由于定期Windows更新造成的。

当它被激活时,调试器似乎正在定期读取SPI数据寄存器,该寄存器读取FIFO(因此会更改FIFO的状态(。因此,当软件读取FIFO时,一些字节已经"丢失"(或被调试器消耗(。

这是预期的行为吗?你知道这是由于Keil还是STM32吗?

我不完全了解从调试器到寄存器的访问是如何工作的:我想有一个通过 SWD 发送的读取命令,但是,在内部,对内存的访问是否像在 CPU 上执行的代码一样通过 AHB/APB ?

任何通过读取来修改行为(例如清除状态位(的寄存器在调试时都可能存在问题,并且寄存器显示在调试窗口中。

最好的办法是只在停止时查看寄存器(关闭外围设备的DR窗口(,并始终注意您可能会清除状态位等。

这是处理器的工作方式,与调试器无关。

这是串行通信等非常常见的调试问题。

如果监视窗口(或调试器屏幕上的任何其他类似窗口(中显示 DR,并且每次单步执行(或通常中断(读取数据时单步执行代码。

这是唯一可能的原因。

最新更新