OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4469|回复: 5

stm32f4串口通信中问题

[复制链接]

3

主题

8

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2015-1-5
在线时间
1 小时
发表于 2016-6-29 16:59:06 | 显示全部楼层 |阅读模式
1金钱
请教一个问题,在stm32f4串口通信中,如果上轮数据还未处理,有收到了新数据,在串口接收中断处理代码中,如果既不读取USART_DR,也不将改为写0,函数会反复进入这个中断吗?大家有没有办让串口不丢失数据且处于等待状态,直到上轮数据处理完成,再将其写入缓冲区,重启正常的数据接收?

最佳答案

查看完整内容[请看2#楼]

如果使用中断模式读取串口数据,在串口接到数据后会进入中断函数,此时不读DR寄存器,也不对RXNE位清零,就会产生上溢错误,直到对RXNE位清零前,DR寄存器是一直接不到新数据的。 你可以在中断函数里定义一个标志位,在主循环里判断标志后进行数据处理,但这个要串口接收数据的速度远小于主循环的速度。或者你用DMA方式进行。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

60

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
295
金钱
295
注册时间
2016-6-17
在线时间
60 小时
发表于 2016-6-29 16:59:07 | 显示全部楼层
如果使用中断模式读取串口数据,在串口接到数据后会进入中断函数,此时不读DR寄存器,也不对RXNE位清零,就会产生上溢错误,直到对RXNE位清零前,DR寄存器是一直接不到新数据的。

你可以在中断函数里定义一个标志位,在主循环里判断标志后进行数据处理,但这个要串口接收数据的速度远小于主循环的速度。或者你用DMA方式进行。
回复

使用道具 举报

3

主题

8

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2015-1-5
在线时间
1 小时
 楼主| 发表于 2016-6-29 19:49:48 | 显示全部楼层
zzx499 发表于 2016-6-29 17:26
如果使用中断模式读取串口数据,在串口接到数据后会进入中断函数,此时不读DR寄存器,也不对RXNE位清零,就 ...

产生上溢错误后,很好奇程序将如何运行。程序是否会一直被限制中断服务函数中?如果被限制在IRQ中,在主程序中也就不能读取标志位了
回复

使用道具 举报

0

主题

60

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
295
金钱
295
注册时间
2016-6-17
在线时间
60 小时
发表于 2016-6-30 09:33:53 | 显示全部楼层
涵石 发表于 2016-6-29 19:49
产生上溢错误后,很好奇程序将如何运行。程序是否会一直被限制中断服务函数中?如果被限制在IRQ中,在主 ...

IRQ里面也是流水执行,只要这里面不是死循环,执行完毕还是要跳出的。上溢错误后程序还是正常运行,只是这个功能块处于错误状态而不能正常工作。
回复

使用道具 举报

0

主题

60

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
295
金钱
295
注册时间
2016-6-17
在线时间
60 小时
发表于 2016-6-30 09:34:06 | 显示全部楼层
涵石 发表于 2016-6-29 19:49
产生上溢错误后,很好奇程序将如何运行。程序是否会一直被限制中断服务函数中?如果被限制在IRQ中,在主 ...

IRQ里面也是流水执行,只要这里面不是死循环,执行完毕还是要跳出的。上溢错误后程序还是正常运行,只是这个功能块处于错误状态而不能正常工作。
回复

使用道具 举报

2

主题

686

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
10573
金钱
10573
注册时间
2014-6-12
在线时间
1022 小时
发表于 2016-6-30 09:56:37 | 显示全部楼层
如果发送速率大于接收处理速率,那么要想实时处理不漏数那是用什么技术手段也实现不了的,除非你放弃实时性先存起来延迟处理。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-27 15:15

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表