野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9601|回复: 6

串口RS232通信

[复制链接]
发表于 2016-9-7 08:54:49 | 显示全部楼层 |阅读模式
火哥给的rs232的例程,在中断函数这里使用uctemp接收串口数据,我看到 USART_ReceiveData()函数返回值是uint16_t类型的,但是火哥定义的ucTemp是uint8_t类型的,这里不会有问题吗?还有,当我在中断函数ucTemp接收数据后想用printf("ucTemp=%c\n",ucTemp)打印出接收的字符的时候,字符串长度大于2 的话始终只会显示前两个字符(比如abcdef\n,只显示ucTemp=a,ucTemp=b),当我把printf()语句屏蔽掉之后如果打abc\n就会正常回显,为什么?
回复

使用道具 举报

 楼主| 发表于 2016-9-7 08:58:45 | 显示全部楼层
串口不是8位8位的按字节接收吗?为什么不能显示每一个字节接收的内容呢?
回复 支持 反对

使用道具 举报

发表于 2016-9-7 09:06:06 | 显示全部楼层
那是因为用了printf语句,没有及时处理接收到的数据,所以会覆盖掉丢失了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-9-7 09:09:44 | 显示全部楼层
随风 发表于 2016-9-7 09:06
那是因为用了printf语句,没有及时处理接收到的数据,所以会覆盖掉丢失了

这都可以?长见识了、
回复 支持 反对

使用道具 举报

发表于 2016-9-7 09:43:18 | 显示全部楼层
wazhzyb 发表于 2016-9-7 09:09
这都可以?长见识了、

所以在中断里先把它们缓冲到数组,后期再处理是比较好的做法
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-9-7 10:47:58 | 显示全部楼层
随风 发表于 2016-9-7 09:43
所以在中断里先把它们缓冲到数组,后期再处理是比较好的做法

多谢!!!!!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-9-7 13:34:25 | 显示全部楼层
随风 发表于 2016-9-7 09:43
所以在中断里先把它们缓冲到数组,后期再处理是比较好的做法

工程师。。为什么同样的一套rs232收发程序,我用友善串口助手的时候能显示结果,用别的sscom,securecrt就显示不出结果呢?(我按下键盘的字符的时候灯会翻转,但是屏幕上显示不出信息来)
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-9-22 03:40 , Processed in 0.031577 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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