你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

串口收发溢出

[复制链接]
onev 提问时间:2017-5-27 14:42 /
HAL库操作,F0的板子串口发数据,F7的板子接收,接收由于某些原因只能查询方式,而且1ms接收一个字节,相当于我可以开个1ms的定时器在那儿接收。接收端通过判别__HAL_UART_GET_FLAG(uart, UART_FLAG_RXNE)是否置位来确认是否可以读取数据,置位就读RDR;通过__HAL_UART_GET_FLAG(uart, UART_FLAG_ORE)判别溢出错误,溢出就用__HAL_UART_CLEAR_OREFLAG(uart)清溢出标志。发送端如果直接用DMA发送,取波特率3000bits/s,接收端有溢出错误;发送端2ms发送一个字节,波特率取115200或300000bits/s 没什么关系反正大一点快一些,接收端还是溢出错误。发送端如果发送频率再慢一点,比如5ms发送一次(字节),接收端溢出错误大大减少,10ms发送一次(字节)接收端基本没有溢出错误。问题是按理说接收端1ms读一下RDR,发送端2ms发送一个字节,应该不会溢出的!不知道是否哪里理解有误。。。。
收藏 评论6 发布时间:2017-5-27 14:42

举报

6个回答
黑皮男 回答时间:2017-5-28 23:56:10
可以搞个FIFO,这样就具有缓冲功能,避免漏发或是漏接,论坛有这样的帖子
onev 回答时间:2017-5-29 17:02:20
黑皮男 发表于 2017-5-28 23:56
可以搞个FIFO,这样就具有缓冲功能,避免漏发或是漏接,论坛有这样的帖子

只用普通查询方式没有DMA
那片清茶 回答时间:2017-5-29 20:32:28
自己建立 一个队列就可以了。
黑皮男 回答时间:2017-5-29 21:09:03
onev 发表于 2017-5-29 17:02
只用普通查询方式没有DMA

搞个收发中断就行,加个软件fifo就能搞定,用查询有点占用资源
onev 回答时间:2017-5-31 09:38:21
黑皮男 发表于 2017-5-29 21:09
搞个收发中断就行,加个软件fifo就能搞定,用查询有点占用资源

说了只是普通的查询模式,没有DMA 没有中断哦
回答时间:2017-5-31 10:37:52
还是代码处理问题,建议楼主用中断实时接收到指定数据,避免发生溢出。哪怕数据不需要,也要执行数据接收。

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版