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

STM32F030串口的奇怪问题

[复制链接]
allkill 提问时间:2014-11-27 02:28 /
想做一个RS485和RS232相互转换的板子,遇到了奇怪的问题。问题描述如下:232转485丢数据。
485转232正常。
main()函数中有一个延时函数,延时时间越长丢字节的现象越不明显,延时时间越短
丢字节的现象就越明显。丢数据的方式一般是丢数据帧的尾部。比如我从232出输入“ABCDEFGHI”,
从485除出来就变成“ABCDEF”了。而且多次发送相同的内容,丢掉的内容基本也一样。

MAIN函数

MAIN函数

程序代码:
StdTem.zip (3.41 MB, 下载次数: 35)
收藏 评论10 发布时间:2014-11-27 02:28

举报

10个回答
wenyangzeng 回答时间:2014-11-27 07:40:04
你在发送和接收时应该是先去判断RX和TX标志位:
if(USART_GetITStatus(USART1,USART_IT_RXNE)==SET)
if(USART_GetFlagStatus(USART1,USART_FLAG_ORE)==SET)
巅峰残狼 回答时间:2014-11-27 09:05:10
感觉是还没接收完全就急着发送出去,按照楼上的处理试试吧,确保一帧接收完毕再发送
allkill 回答时间:2014-11-27 11:14:49
感谢楼上的两位俊男,我先试一下。
晓枫VS枯叶 回答时间:2014-11-27 12:29:35
使用串口发送时,建议楼主使用库函数判断一下上一帧是否传送完成,可以看看例程的发送函数!
回答时间:2014-11-27 14:27:59
先发送,发送完数据就判断发送寄存器是否为空。如果为空发送下一个数据。
科恩电子 回答时间:2014-11-27 14:44:07
通过标志位和寄存器验证再做收发处理
无双个妹 回答时间:2014-11-27 16:43:14
请问你的程序是怎么烧写进去的?用哪个软件?
小贾-370388 回答时间:2014-11-28 11:56:40
本帖最后由 小贾-370388 于 2014-11-28 12:06 编辑

延时过短,如果在在你发送的过程中串口又接收到了数据,但是这时你已经把发送的个数RS232_RX_CNT变量传递给了发送函数里面了,虽然接收到了数据计数变量RS232_RX_CNT 也在增加     但是这时不会影响发送函数中的发送个数变量了,所以    这时就会丢数据
chinahuangyong 回答时间:2014-11-28 15:28:30
你可以先把通过把232的数据用液晶显示或者用其他串口发到串口助手上面试试,看是你发的数据在CPU发出去有问题,还是从CPU发到485有问题。
12下一页

所属标签

相似问题

官网相关资源

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