完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
在单片机的开发过程中,最常用的外设就是串口了,是用来进行bug纠错、log输出的常用工具,也是用来与外部通讯的常见协议之一。 但是在使用串口的过程中难免会遇到一些问题,下面就我在工作遇到的一些问题做了一些记录,与大家分享,其实也是为了自己在以后遇到同样或者解决思路相似的问题时能够节省时间。(我在工作过程中使用的MCU主要为stm32系列) 首先当然是对串口初始化。 usart初始化主要分几个步骤。 1 引脚功能的复用 2 串口参数的设置,如波特率,停止位,数据位等... 3 需要的中断功能的配置,如接受中断,空闲中断,溢出中断等... 4 使能串口 下面具体来说一说:
一 引脚功能的复用 主要是将对应的引脚复用为UART-TX UART-RX,这里常见的问题可能回出现在: 1 引脚所在的时钟没有使能 2 复用功能选择寄存器(AFR)没有选中对应的功能 3 如果出现RX接收不到数据的情况,有可能是没有接外部上拉电阻,可以试着给引脚加上内部上拉 二 串口参数的设置 这里倒不是会有很大的问题 三 中断设置 1 NVIC中断优先级设置 2 开启对应的中断 开启了相应的中断就要在中断函数中对其做处理,防止重复进入中断。比如说开启了溢出中断,就要先读SR,在读DR,可以防止重复进入溢出中断。其次就是串口的应用了,数据的接收与发送。一 数据的接收1 数据的接收处理要保证数据的完整性,同时最好是要及时处理。这里数据接收完成时可以通过串口的空闲中断来发送消息告知某线程或者设置某个标志位以使主程序能够识别到串口接收完成,从而及时的进行处理,也可以采用定时器来模拟串口空闲中断,通过定时器我们可以把控空闲时间,而串口空闲中断的判定标准是如果一帧数据的时间RX持续为高则产生空闲中断,定时器的话我们就可以自己来设置产生“中断信号”的时间。2 接收出错处理。接收过程中一旦产生了溢出错误,那么整包数据就不可靠了。溢出时,要先读SR在读DR寄存器以防止重复进入溢出中断。二 数据的发送数据的发送一般不会有什么问题,将数据放入DR等待传输完成。如果出现数据接收不到的情况,检查是否有外部上拉电阻,如果没有的话给TX加上内部上拉之后再试一下。目前关于串口的总结想起来就这么多,以后遇到或者想起来还会分享,如有错误的地方希望大家指正。 |
|
|
|
只有小组成员才能发言,加入小组>>
3314 浏览 9 评论
2995 浏览 16 评论
3494 浏览 1 评论
9059 浏览 16 评论
4088 浏览 18 评论
1180浏览 3评论
605浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
599浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2335浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1896浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 22:55 , Processed in 0.715731 second(s), Total 77, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号