嵌入式开发学习日志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)编写中断服务函数

相关推荐
西岸行者5 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
悠哉悠哉愿意5 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
别催小唐敲代码5 天前
嵌入式学习路线
学习
Lester_11015 天前
STM32霍尔传感器输入口设置为复用功能输入口时,还能用GPIO函数直接读取IO的状态吗
stm32·单片机·嵌入式硬件·电机控制
LCG元5 天前
低功耗显示方案:STM32L0驱动OLED,动态波形绘制与优化
stm32·嵌入式硬件·信息可视化
三佛科技-187366133975 天前
120W小体积碳化硅电源方案(LP8841SC极简方案12V10A/24V5A输出)
单片机·嵌入式硬件
z20348315205 天前
STM32F103系列单片机定时器介绍(二)
stm32·单片机·嵌入式硬件
毛小茛5 天前
计算机系统概论——校验码
学习
babe小鑫5 天前
大专经济信息管理专业学习数据分析的必要性
学习·数据挖掘·数据分析
古译汉书5 天前
【IoT死磕系列】Day 7:只传8字节怎么控机械臂?学习工业控制 CANopen 的“对象字典”(附企业级源码)
数据结构·stm32·物联网·http