在从stm32f103板上的代码移植到GD32F103板子调试usart过程中,用xcom软件来测试串口收发功能,发现xcom发送给单片机的字符没有回应,怀疑单片机的usart RX中断处理有问题,
后来发现是个误操作导致的。即不应该设置断点在RXNE中断之前:
记录一个网上的帖子,写的挺好:
STM32F103处理器USART2接收中断读RXNE总是为0的原因请教?
那么你是如何知道RXNE总是为0?是通过设置调试断点观察的还是直接执行程序呢?
如果是通过设置断点再单步执行,则在程序停到断点时,调试器的显示功能在读取状态寄存器的同时已经清除了标志,你再单步执行时RXNE已经变为了'0'。这种情况下,应该把调试断点放在判断语句之后而不是之前。