在keil5中调试串口遇到的问题

编程入门 行业动态 更新时间:2024-10-06 11:22:56

在keil5中调试<a href=https://www.elefans.com/category/jswz/34/1769224.html style=串口遇到的问题"/>

在keil5中调试串口遇到的问题

1.问题

在keil5中调试stm32串口实验时,

向单片机的串口1发送数据,观察串口1的寄存器,此时串口1的中断服务函数会遇到无法进入下图if

的情况,此时观察串口1寄存器RXEN的值(由定义的变量my来接受)

my的值0x00,那么串口1寄存器RXEN的值确实时0;

那就有个问题,由数据手册如下可知

能进入中断服务函数,说明RXEN肯定为1,那么为什么进入中断之后,就变成0了?

2.解决

在调试时查看串口1的寄存器时不仅会观察RXNE,还会有DR数据寄存器

当观察DR数据寄存器时调试器会对DR寄存器进行读操作,由下图可知,

对DR寄存器进行读操作会将RXEN清零.

所以当一直观察串口1的寄存器时,向单片机发送数据会将RXEN置1,将进入中断服务函数,此时由于需要观察DR寄存器的值,调试器会读取单片机上DR寄存器的值,一旦读取RXEN的值将会被由硬件置0;

所以不会进入if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)的函数,因为此时由于调试器的读取RXEN的值已经发生变化;

当不观察串口1寄存器的值时,由于调试器不会去读取DR的值,那么程序会顺利执行;

更多推荐

在keil5中调试串口遇到的问题

本文发布于:2024-03-10 00:02:32,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1726499.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:串口

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!