2418|2

23

帖子

3

TA的资源

一粒金砂(中级)

楼主
 

串口通信 [复制链接]

从串口调试助手向开发板发送一个数据0x55,再将接收到的数据发送出去。
串口中断服务函数如下:
if( USART_GetITStatus(USART_CHANNEL, USART_IT_RXNE) != RESET )  
    {gg_rs232_recv_buf[gg_recv_index]=(T_U8)USART_ReceiveData(USART_CHANNEL);
      USART_SendData(USART_CHANNEL, gg_rs232_recv_buf[gg_recv_index]);
​       gg_recv_index++;
    }
在Debug模式下,在接收的缓存中gg_rs232_recv_buf[]收到的是0x30(即只有第一个字符被接收到了),如图1所示:

从串口发送出来的也是0x30,如图2所示:

然而在连续运行的时候,发送的0x55,接收之后,然后可以通过串口正常地发送出来,如图3所示:
为什么在Debug的时候不正常呢?没找出原因,求大神指点!

1.jpg (118.62 KB, 下载次数: 0)

1.jpg

2.jpg (58.72 KB, 下载次数: 0)

2.jpg

3.jpg (76.24 KB, 下载次数: 0)

3.jpg
此帖出自stm32/stm8论坛

最新回复

首先确认你是用什么模式发送接收的,16进制还是文本模式?你的gg_rs232_recv_buf[]每次接收的是8位,文本模式是将16位分成两份发送的的,你可能中断程序中还要做一次转换,以确认接收完整的值  详情 回复 发表于 2015-6-21 23:56
点赞 关注
 

回复
举报

1234

帖子

4

TA的资源

纯净的硅(高级)

沙发
 
首先确认你是用什么模式发送接收的,16进制还是文本模式?你的gg_rs232_recv_buf[]每次接收的是8位,文本模式是将16位分成两份发送的的,你可能中断程序中还要做一次转换,以确认接收完整的值
此帖出自stm32/stm8论坛

点评

嗯,和发送的模式有关的,改成16进制的发送就没有问题了。  详情 回复 发表于 2015-6-22 10:16
 
个人签名天地庄周马;江湖范蠡船。
个性签名还是放QQ号吧,2060347305,添加说明EEworld好友
 

回复

23

帖子

3

TA的资源

一粒金砂(中级)

板凳
 
ywlzh 发表于 2015-6-21 23:56
首先确认你是用什么模式发送接收的,16进制还是文本模式?你的gg_rs232_recv_buf[]每次接收的是8位,文本模 ...

嗯,和发送的模式有关的,改成16进制的发送就没有问题了。
此帖出自stm32/stm8论坛
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表