stm32关于USART串口配置(小白教程)

本文详细解析STM32中USART模块的配置过程,包括GPIO复用至USART、配置USART参数如波特率、数据位等关键步骤。通过具体实例演示如何在STM32上启用USART1,适合初学者理解并实践串口通信配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一步理解usart的作用:

粗暴理解,USART这个串口就起到连接外设的作用。
处理器发送数据--------gpio(然后通过gpio口给发送到片上外设)-------usart-----外设。
简单来说,gpio是一扇大门,usart也是一扇大门,只有通过这两扇大门你才能拿到宝藏。当你你打开gpio这个大门你会看到很多路,有一条路是走向usart这个大门,但是这条路有条河你得搭个桥才能过去到达usart的门口,然后打开大门,拿到宝藏。所以你要配置gpio先打开gpio这个大门,然后在通往usart的路上搭建一座桥。最后打开usart的大门。
这 就是,将gpio复用到usart上。
具体代码如下(代码为什么这么写,对着编程手册,慢慢看,慢慢理解,要是用术语巴拉巴拉一大堆,更懵咯!)
实例以配置usart1为例子:

	/*配置GPIO口 复用到USART1上*/
	RCC->AHB1ENR |= (1<<0);
	GPIOA->MODER &= ~(0xF<<18);
	//配置成复用模式
	GPIOA->MODER |= (0x2<<18)|(0x2<<20);
	GPIOA->AFR[1] &= ~(0xFF<<4);
	GPIOA->AFR[1] |= (0x77<<4);
	/*配置USART  1个开始位 8个数据 1个停止*/
	RCC->APB2ENR |= (1<<4);
	//配置波特率 
	float USARTDIV = fpclk*1000000 / brr / (8.0*(2-0));
	u32 DIV_Mantissa = (u32)USARTDIV;//整数部分
	u32 DIV_Fraction = (USARTDIV - DIV_Mantissa) * (8*(2-0));//小数部分
	USART1->BRR = (DIV_Mantissa<<4)|DIV_Fraction;//存储整数和小数部分  
//	USART1->CR1 = 0;
	USART1->CR1 |= (1<<2)|(1<<3);//使能发送器和接收器
	USART1->CR2 |= ~(0x3<<12);//1个停止位
	
	USART1->CR1 |= (1<<13);//使能串口

具体波特率配置如下:
在这里插入图片描述
USARTDIV = fPCLKx / 波特率 / 8*(2-over8))
fpclk是usart1的频率为84 over8选择1或者0,1是8倍采样频率,0是16倍。这里我们选用16倍即0。波特率是你在串口软件选择的波特率。所求的就是USARTDIV,对应上图中的DIV_Man和DIV_Fra,整数部分和小数部分。

ps:写的比较急,没有省察,欢迎指正!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值