嵌入式开发学习日志37——stm32之USART

所谓串口通信,就是在外设与计算机之间通过数据线等设备,按位进行数据传输的一种通信方式。串口,属于一种接口标准,用于规定接口的电气标准。

这里常用的接口标准是RS-232,它是通过正负电压来表示不同的逻辑状态,而stm32单片机是使用高低电平来显示逻辑,所以两者间需要有能够进行转换的物件,也就是电平转换芯片。

而且说到通信,那么必然会涉及到一定的通信协议,RS-232的通信协议十分简单,它遵循96-N-8-1格式的协议。

96意思为通信波特率为9600,由于串口通信中一般使用异步通信,所以要通信的两个设备间需要保持波特率一致。

N表示没有校验位,串口通信抗干扰能力还是比较差的,容易因为外界干扰导致数据偏差,所以可以在传输过程中加上校验位(有种又菜又爱玩的感觉)。

8表示数据位总共有8位,上章有配上异步通信时的数据格式的图,所以这里就不多赘述。

最后的1表示停止位,这里没什么可说的。

stm32上总共有3个USART,中文名称为同步异步收发器,正是由它们来实现单片机的串口通信功能,而且值得一提的是,按照数据传输方向,这几个收发器都可以实现全双工通信,十分的高级。

欸,这时候有人问了,stm32上装这么几个USART有什么具体作用呢?

实际上,我们在工程项目里如果遇到了代码没错,但是装置怎么都运行不起来的情况,就可以用到USART的串口通信能力了。USART在stm32中应用最多的莫过于它的printf输出功能(学过C的小伙伴狂喜),你可以在特定位置加上printf语句对代码进行调试,一般情况下,串口都会正常将你想要输出的语句打印到串口助手上,但是,如果代码里有隐含的逻辑错误,那么很可能你没法看到语句的输出打印,那么这个时候,你就可以锁定问题所在了。

下面我们来简短看一下UASRT的内部结构。

十分复杂,对不对?其实真正要注意的地方并不多,一些引脚及其功能可以查阅手册来了解,毕竟咱们是人,真要一口气全部记下来很不现实。

首先,根据之前提到的时钟树的相关内容,以及图上的信息,我们在编写代码时得注意,只有USART1是挂载在APB2上面的,另外两个2和3挂载在APB1上。

其次是数据寄存器部分,它是低9位有效,但实际用起来却并非如此,USART控制寄存器中有M位,这个标志位决定了数据第9位是否有效,M位为0时,数据字长为8位,而当M位为1时,数据字长为9位。

然后?当然是最重要的配置环节。

(1)使能串口以及GPIO时钟

(2)设置串口对应引脚为复用功能

(3)初始化串口参数,即波特率、字长、停止位

(4)使能串口

(5)设置串口中断类型并且使能

(6)设置中断优先级,并且使能中断通道

(7)编写中断服务函数

相关推荐
zr想努力15 分钟前
GAS学习(UE5自用)
学习·ue5
她说..21 分钟前
MySQL JSON 处理学习文档
学习·mysql·json
linx29533 分钟前
单元五 · 对称认知·下:编译与链接
linux·c语言·开发语言·c++·嵌入式硬件
西城微科方案开发35 分钟前
雾化器方案开发:低功耗精密雾化技术的全场景落地
单片机·嵌入式硬件
资讯综合41 分钟前
一年级数学机构怎么选?与学习阶段相匹配的线上思维课程与线下机构差异分析
学习
老当益壮梁奶奶1 小时前
51单片机入门总结(一):基本概念、最小系统、流水灯与按键实验(附完整代码)
笔记·stm32·单片机·嵌入式硬件·51单片机
M78佐菲1 小时前
51单片机学习笔记(2)
linux·笔记·嵌入式硬件·学习·51单片机
子不语1801 小时前
LabVIEW和PLC通过OPC通信
学习·自动化·plc
萧行之1 小时前
Observable Plot 源码深度解析——4 核心抽象逐项学习
前端·学习·数据可视化