USART串口学习

基于STM32F407VG上USART1配置
1.根据原理图找到USART1的位置
找到USB转TTL串口模块
在这里插入图片描述USART1中TX和RX映射到板子的PA9和PA10引脚上,用跳线帽将PA9和CH340_RX短接,PA10和CH340_TX短接。
2.由此可见我们需要先打开GPIOA和USART1的时钟
根据数据手册中找到时钟树
在这里插入图片描述
GPIOA时钟线挂在AHB1上;USART1挂在APB2上;
根据参考手册配置RCC寄存器中的时钟源
在这里插入图片描述
在这里插入图片描述
找到GPIOA和USART1的使能位置1

RCC->AHB1ENR |= (1<<0); //打开PA时钟
RCC->APB2ENR |= (1<<4);//打开usart的时钟`

3.由于USART1是PA9/PA10的其它片上外设,要将PA9/PA10设置为复用推挽输出/输入模式。
其中GPIOA->AFR的复位高寄存器需要配置映射到USART1串口上,复用寄存器具体写什么值查看7.3.2IO引脚复用和映射
在这里插入图片描述
此时IO口需要复用到USART1上、PA9/PA10需要写AF7

	//初始化PA9/PA10
	GPIOA->MODER &= ~(0xf<<18);//清零
	GPIOA->MODER |=  (0xa<<18);//PA9/PA10配置成复用输出模式1010
	GPIOA->OTYPER &= ~(3<<9);//复用推挽输出和输入
	GPIOA->AFR[1] |= (0x77<<4);//复位高位寄存器设置成AF7,映射到usart1

4.配置USART1的波特率寄存器,控制寄存器中(CR1)接收发送控制器使能、禁止奇偶校验位、字长选择8位、(CR2)停止位。配置位置0或置1查看参考手册26.6USART寄存器

//配置usart1的波特率为115200
	float div;
	u32 div_m,div_f;
	div = (float)84000000/16/115200;//16为过采样倍数
	div_m = (u32)div;//取整数部分
	div_f = (div - div_m)*16+0.5;//取小数部分乘以16后四舍五入
	USART1->BRR = (div_m<<4) | div_f;//配置波特率寄存器,高12位存整数部分,低4位存小数部分
	USART1->CR1 |=  (3<< 2);//接收器和发送器控制使能打开
	USART1->CR1 &= ~(1<<15);//过采样16倍清零
	USART1->CR1 &= ~(1<<12);//字长选择8位
	USART1->CR1 &= ~(1<<10);//禁止奇偶校验
	USART1->CR2 &= ~(3<<12);//选择1位停止位
	USART1->CR1 |=  (1<<13);//usart1使能打开

5.这样GPIOA端口和USART1端口配置已完成,可以通过上位机收发进行测试。
在这里插入图片描述
通过操作SR寄存器的第五位和第七位进行数据收发
在这里插入图片描述
在发送的时候需要保证发送移位寄存器为空才能发送数据
在这里插入图片描述
逻辑代码:While(!(USART1->SR & (1<<7)));
在这里插入图片描述
在接收的时候可以我们可以通过判断接收移位寄存器有值时确定接到了数据 再进行读取
逻辑代码:While(!(USART1->SR & (1<<5)));
6.编写测试代码

void send_and_rec1(void)
{
	u8 data;
	while(!(USART1->SR & (1<<5)));//上位机写给单片机
	data=USART1->DR;
	while(!(USART1->SR & (1<<7)));//发送到上位机
	USART1->DR=data;
}

测试可实现上位机发送与打印字符一致。需要注意的是上位机配置波特率、奇偶校验位、停止位、字长数据位需要和代码一致,也就是保证双方通信协议一致。
数据位:32芯片中可选择8/9位 一般上位机可选择5~8位 两者保持一致 一般选择8位(刚好为一字节)
校验位:串口中指的校验为奇偶校验----奇校验 偶校验
校验准确率不是很高----一般选择不校验
//若要CRC—循环冗余校验
停止位:一帧通信结束的停止位 一般选择1位

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值