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

相关推荐
坐看风云变幻35 分钟前
《嵌入式工程师的软硬件修仙之路》第 5 期|STM32/GPIO 寄存器操作:从地址映射到点亮一盏灯的全过程
stm32·单片机·嵌入式硬件
POMAGTOR35 分钟前
【硬件笔记|磁吸连接器安装规范、失效分析与选型验证方案】
网络·嵌入式硬件
路上有只喵1 小时前
认识元器件 ·贴片电阻· 规格书解读
嵌入式硬件·硬件架构
dqsh061 小时前
STM32开发用调试器ST-Link V2.1的制作 保姆级教程
stm32·单片机·嵌入式硬件·调试工具·st-link
2601_958352901 小时前
一款模块通吃15类语音产品?AN-93如何实现录音笔、门禁、IPC的快速适配
前端·人工智能·嵌入式硬件·回声消除·降噪处理
剑藏锋1 小时前
嵌入式学习(48)-大彩串口屏TFT指令解析
学习
cxyxixiy2 小时前
数智码力:数据核对不用人工比对,Python 快速完成多表格差异校验
开发语言·python·学习
懒大王95272 小时前
学习TS + ArkTS 快速入门
学习
人工智能培训2 小时前
具身智能:让人工智能拥有物理世界感知能力
大数据·人工智能·学习·算法·机器学习
果壳science2 小时前
张祥前最新研究成果登上SCI期刊!
笔记·嵌入式硬件·算法·硬件工程·几何学