在stm32编程时,最常用的通讯方式就是串口通讯。
一般使用HAL库来实现串口通讯。
但有时,我们不满足于HAL库的代码,或者出现“玄学bug”需要了解具体原理来debug。
下面将通过详解HAL库函数来解释uart原理
一、初始化
uart的初始化比较简单(至少比gpio简单一点)。
只需要解释几个概念:
比特率——传输速率
字长——一次传输数据的长度,8-9位
停止位——每次接收数据时,检测数据是否接受完成所用的位
校验位——检测数据是否正确
STM32CubeMX配置如下:
几个重要的寄存器:
DR寄存器——接受或传输数据
SR寄存器——用于控制,其中FLAG位在第7位
二、发送数据
HAL库的大致思路是:
检测是否空闲->判断发送8位数据还是16位数据->按位将要发送的数据放到DR寄存