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

关于STM32F030F4P6 串口接收发送问题

[复制链接]
su-409464 提问时间:2018-3-7 08:52 /
阅读主题, 点击返回1楼
收藏 评论22 发布时间:2018-3-7 08:52
22个回答
su-409464 回答时间:2018-3-7 14:55:35
wudianjun2001 发表于 2018-3-7 12:55
中断标志好像没清除吧
还有一般不要在中断里发送数据,收到后到缓冲区,然后在主循环里发 ...

http://bbs.21ic.com/icview-160999-1-1.html

只要清中断标志位就行吗? 中断接收溢出位呢?
无薪税绵 回答时间:2018-3-7 15:03:19
本帖最后由 无薪税绵 于 2018-3-7 15:06 编辑

串口处理速度跟你的波特率有关系。

比如:
波特率115200 = 115200 (位/秒)
如果没有校验位,就应该除以 10,得到的是每秒字节数:
波特率115200 = 115200 (位/秒) = 11520 (字节/秒)
再除以 1024,就是每秒 KB 数:
波特率115200 = 115200 (位/秒) = 11.25 (KB/秒)

如果有一位奇偶校验位,就应该除以 11,得到的是每秒字节数。
波特率115200 = 115200 (位/秒) = 10.27 (KB/秒)

另外:
串口发送数据,不建议直接使用字符串,除非你传输的内容只有几个符。
一般要求使用数组来传送,比如先定义100字节长的数组,
每次只传100字节,传完了,再传剩下的100字节。
否则有可能会因串口传数据时占用时间过长,导致其它不稳定因素。
而且,使用数组传送,可以避免字符串中包含汉字或者全角字符,导致溢出的问题。


评分

参与人数 1蝴蝶豆 +4 收起 理由
zero99 + 4

查看全部评分

butterflyspring 回答时间:2018-3-7 15:25:31
你应该看看串口发送的接口函数,有根据长度的,有根据timeout的,如果你的长度不定,什么时候发送随机,那么你就要修改串口接收的接口了.如果你接收函数的长度size写的是4,但是你发的是5个byte,你下一次就会出现busy的情况,你就要请一下标志位了..

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

123
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版