STM32中遇到的问题--关于串口的一些常见问题

	在单片机的开发过程中,最常用的外设就是串口了,是用来进行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加上内部上拉之后再试一下。
目前关于串口的总结想起来就这么多,以后遇到或者想起来还会分享,如有错误的地方希望大家指正。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值