STM32学习-8-[串口]USART模块的使用方法

USART模块简介

如图中所示,串口模块存在于单片机内
image

USART的基本用法

模块内部框图
image

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

移位寄存器和串并转换

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

image
接收的时候也是一样的,只需要将数据一比特一比特的存到图中圆形的寄存器中,一点点的向后移动,直到停止之后,并行转移到接收数据寄存器中,这就是串行转并行

数据帧格式设置方法

设置数据格式就是向图中的红圈的位置写入数据,设置格式
image

波特率的设置方法

波特率:每秒最多传输多少位
常见的波特率:9600、115200、921600
image
如图所示
通过设置波特率寄存器BRR的系数,然后对主时钟进行分频
假设设置的是2
输入的是32MHz
32 / 2 = 16MHz
在经过固定的16MHz分频得到1MHz
image

编程接口

image

简单设置一个串口

#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)
	{
	}
}
posted @ 2026-08-31 09:56  灵垚克府  阅读(4)  评论(0)    收藏  举报