赞
踩
USART波特率为9600,采用8倍过采样 USART6 fck频率:84Mhz;
USARTDIV = 1093.75
DIV_M = (u32)USARTDIV
DIV_F = (USARTDIV - DIV_M) * 8 + 0.5
USART6->BRR |= (DIV_M << 4) |= DIV_F
- float USARTDIV;
- u32 DIV_M,DIV_F;
-
- RCC->AHB1ENR |= 1;//端口A使能
- RCC->APB2ENR |= (1<<4);//usart1时钟使能
-
- GPIOA->MODER &= ~(0xf<<18);//PA9,PA10模式清零
- GPIOA->MODER |= (0xa<<18);//PA9,PA10模式为复用
- //AFP复位功能高位寄存器
- GPIOA->AFR[1] |= 7<<8;//USART1_RX 复用到PA10
- GPIOA->AFR[1] |= 7<<4;//USART1_RX 复用到PA9
- //配置usart1
- USARTDIV = 84000000 / 16 / bps;//波特率配置
- DIV_M = (u32)USARTDIV;//整数部分公式
- DIV_F = (USARTDIV - DIV_M) * 16 + 0.5f;//小数部分公式
- USART1->BRR |= DIV_M<<4 | DIV_F;//写入波特率寄存器
-
-
- USART1->CR1 &= ~(1<<15);//过采样为16倍,OVER8 = 0;
- USART1->CR1 &= ~(1<<12);//字长:1 起始位,8 数据位,n 停止位
-
- USART1->CR1 |= (1<<3);//使能发送器
- USART1->CR1 |= (1<<2);//使能接收器
-
- USART1->CR2 &= ~(3<<12);//停止位为1bit
-
- USART1->CR1 |= 1<<13;//串口1使能
串口四要素:波特率,停止位,数据位,校验位
波特率:控制两个器件之间的数据传输速率,波特率越大数据传输速率就快 MCU -à PC通信 波特率设置为9600/115200256000(也是可以的,不建议用)
停止位:代表一帧数据传输的结束 选择1bit
数据位:决定数据传输长度 8bit= 1byte
校验位:奇偶校验 不使用
Odd:奇校验
Even: 偶校验
串口初始化
硬件分析,先对原理图进行分析可以复用的IO口,确认IO口
复用的IO初始化为复用模式
//AFP复位功能高位寄存器 不用担心发送和接受端,硬件自动调整
GPIOA->AFR[1] |= 7<<8;//USART1_RX 复用到PA10
GPIOA->AFR[1] |= 7<<4;//USART1_RX 复用到PA9
配置串口
USART_BRR波特率寄存器
USART_CR1对着配,使能以及过采样的倍数,最后串口使能
USART_CR2设置停止位
USART_SR为状态寄存器,判断是否发送和接收数据
USART_DR为数据寄存器,包括数据接收和发送两个寄存器,是数据所在地
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。