在为STM32H743使用Keil 5时,我遇到了以下问题。
我的SPI代码出现了通信问题,过了一段时间,我发现这是由于周期性的Windows更新。
当它被激活时,调试器似乎定期读取SPI数据寄存器,该寄存器读取FIFO (因此改变FIFO的状态)。因此,当软件读取FIFO时,一些字节已经“丢失”(或由调试器消耗)。
这是一种预期的行为吗?你知道它是由基尔还是STM32造成的?
我不完全理解从调试器到寄存器的访问是如何工作的:我猜是有一个通过SWD发送的read命令,但是在内部,对内存的访问是否像在CPU上执行代码一样通过AHB / APB?
发布于 2020-06-29 11:51:40
任何通过读取来修改行为的寄存器(例如清除状态位)在调试时都会出现问题,并且寄存器显示在调试窗口中。
最好的选择是,只在停止时查看寄存器(关闭DR窗口,用于外围设备),并且始终注意您可能清除状态位等。
这是处理器的工作方式,与调试器无关。
这是一个非常常见的调试问题,与串行通信等。
发布于 2020-06-29 08:21:15
如果您在手表窗口(或调试器屏幕上的任何其他类似窗口)中显示DR,并且每次步骤(或通常是中断)时,您都会遍历代码,则会读取数据。
这是唯一可能的原因。
https://stackoverflow.com/questions/62633741
复制相似问题