STM32学习-8-[串口]USART模块的使用方法
USART模块简介
如图中所示,串口模块存在于单片机内

USART的基本用法
模块内部框图

发送数据的时候,我们将需要发送的数据写到发送数据寄存器,USART模块会自动将数据按照格式发送出去
接受的时候也是一样,我们只需要从接受数据寄存器中读取数据即可
移位寄存器和串并转换

当我们发送数据的时候,数据会被写道发送数据寄存器中,然后会被移到图中圆形的寄存器中,然后一比特一比特的向前移动发送出去,这就是并行转串行

接收的时候也是一样的,只需要将数据一比特一比特的存到图中圆形的寄存器中,一点点的向后移动,直到停止之后,并行转移到接收数据寄存器中,这就是串行转并行
数据帧格式设置方法
设置数据格式就是向图中的红圈的位置写入数据,设置格式

波特率的设置方法
波特率:每秒最多传输多少位
常见的波特率:9600、115200、921600

如图所示
通过设置波特率寄存器BRR的系数,然后对主时钟进行分频
假设设置的是2
输入的是32MHz
32 / 2 = 16MHz
在经过固定的16MHz分频得到1MHz

编程接口

简单设置一个串口
#include "stm32f10x.h"
int main(void)
{
RCC_APB2PriphClockCmd(RCC_APB2Periph_USART1, ENABLE); // 启动UASRT1模块的时钟
// 对串口进行初始化
USART_InitTypeDef USART_InitStruct;
USART_InitStruct.USART_BaudRate = 115200; // 设置波特率
USART_InitStruct.USART_Mode = USART_Tx | USART_Rx; // 设置收发方向
USART_InitStruct.USART_WordLength = USART_WordLength_8b; // 设置数据位数
USART_InitStruct.USART_StopBits = USART_StopBits_1; // 设置停止位
USART_InitStruct.USART_Parity = USART_Parity_No; // 设置校验位
// 调用初始化函数
USART_Init(USART1, &USART_InitStruct);
while(1)
{
}
}

浙公网安备 33010602011771号