首页 > 其他 > 详细

【STM32】串口

时间:2021-02-04 20:59:39      阅读:29      评论:0      收藏:0      [点我收藏+]

一、 串口中断使能问题

错误

串口只能接收一次数据,从串口助手发第二个数据时接收不到。

分析

在UART_Receive_IT(huart)函数里,回调函数的上面有如下代码:

 技术分享图片

 

这几行代码的作用是关闭串口接收中断,也就是说,在一次串口中断接收过程的最后,即串口接收完一组数据之后会关闭串口接收中断。

解决:

在回调函数中实现接收到数据之后的操作(比如处理数据)并再次使能串口接收中断。

技术分享图片

 

 总结:

串口中断接收用法:

(1)指定一个缓存区(串口接收到的数据会全部堆到这个缓存区)

(2)使能串口接收中断,并把缓存区对应到串口

(3)在回调函数中实现接收到数据之后的操作(比如处理数据)并再次使能串口接收中断。

串口接收的流程:

(1)串口一个接一个的接收到数据填充到缓存区

(2)缓存区满(大小是用户定义的)程序几经辗转最后会调用到回调函数。

(3)执行用户在回调函数中实现的功能。

参考链接:

https://www.cnblogs.com/dongxiaodong/p/14275284.html

二、串口助手配置问题

错误:

从串口助手发送1个数据,经过取反后再次发送到上位机,得到了3个数据,且多的数据是F2和F5。

 技术分享图片

分析:

F2和F5的原数据是0A和0D,其对应的ASCII分别是换行符和回车符。这是由于我们在串口助手中勾选了“发送新行”,因此每次从上位机向单片机发送1个数据后,串口助手会自动换行,即加上\n和\r两个符号。

解决:

去勾选“发送新行”即可。

 

【STM32】串口

原文:https://www.cnblogs.com/jpdeng/p/14374635.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!