stm32f4串口通信中问题

2019-07-20 21:29发布

请教一个问题,在stm32f4串口通信中,如果上轮数据还未处理,有收到了新数据,在串口接收中断处理代码中,如果既不读取USART_DR,也不将改为写0,函数会反复进入这个中断吗?大家有没有办让串口不丢失数据且处于等待状态,直到上轮数据处理完成,再将其写入缓冲区,重启正常的数据接收?

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
zzx499
1楼-- · 2019-07-20 21:38
如果使用中断模式读取串口数据,在串口接到数据后会进入中断函数,此时不读DR寄存器,也不对RXNE位清零,就会产生上溢错误,直到对RXNE位清零前,DR寄存器是一直接不到新数据的。

你可以在中断函数里定义一个标志位,在主循环里判断标志后进行数据处理,但这个要串口接收数据的速度远小于主循环的速度。或者你用DMA方式进行。
涵石
2楼-- · 2019-07-21 02:33
 精彩回答 2  元偷偷看……
zzx499
3楼-- · 2019-07-21 02:51
涵石 发表于 2016-6-29 19:49
产生上溢错误后,很好奇程序将如何运行。程序是否会一直被限制中断服务函数中?如果被限制在IRQ中,在主 ...

IRQ里面也是流水执行,只要这里面不是死循环,执行完毕还是要跳出的。上溢错误后程序还是正常运行,只是这个功能块处于错误状态而不能正常工作。
zzx499
4楼-- · 2019-07-21 06:16
 精彩回答 2  元偷偷看……
xuyaqi
5楼-- · 2019-07-21 08:40
如果发送速率大于接收处理速率,那么要想实时处理不漏数那是用什么技术手段也实现不了的,除非你放弃实时性先存起来延迟处理。

一周热门 更多>