当前位置:   article > 正文

4.串口通信

4.串口通信

 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

  1. float USARTDIV;
  2. u32 DIV_M,DIV_F;
  3. RCC->AHB1ENR |= 1;//端口A使能
  4. RCC->APB2ENR |= (1<<4);//usart1时钟使能
  5. GPIOA->MODER &= ~(0xf<<18);//PA9,PA10模式清零
  6. GPIOA->MODER |= (0xa<<18);//PA9,PA10模式为复用
  7. //AFP复位功能高位寄存器
  8. GPIOA->AFR[1] |= 7<<8;//USART1_RX 复用到PA10
  9. GPIOA->AFR[1] |= 7<<4;//USART1_RX 复用到PA9
  10. //配置usart1
  11. USARTDIV = 84000000 / 16 / bps;//波特率配置
  12. DIV_M = (u32)USARTDIV;//整数部分公式
  13. DIV_F = (USARTDIV - DIV_M) * 16 + 0.5f;//小数部分公式
  14. USART1->BRR |= DIV_M<<4 | DIV_F;//写入波特率寄存器
  15. USART1->CR1 &= ~(1<<15);//过采样为16倍,OVER8 = 0;
  16. USART1->CR1 &= ~(1<<12);//字长:1 起始位,8 数据位,n 停止位
  17. USART1->CR1 |= (1<<3);//使能发送器
  18. USART1->CR1 |= (1<<2);//使能接收器
  19. USART1->CR2 &= ~(3<<12);//停止位为1bit
  20. USART1->CR1 |= 1<<13;//串口1使能

串口四要素:波特率,停止位,数据位,校验位

波特率:控制两个器件之间的数据传输速率,波特率越大数据传输速率就快      MCU -à PC通信   波特率设置为9600/115200256000(也是可以的,不建议用)

停止位:代表一帧数据传输的结束    选择1bit

数据位:决定数据传输长度     8bit= 1byte

校验位:奇偶校验     不使用

Odd:奇校验

Even:  偶校验

串口初始化

  1. 硬件分析,先对原理图进行分析可以复用的IO口,确认IO口

  2. 复用的IO初始化为复用模式

  3. //AFP复位功能高位寄存器 不用担心发送和接受端,硬件自动调整

    GPIOA->AFR[1] |= 7<<8;//USART1_RX 复用到PA10

    GPIOA->AFR[1] |= 7<<4;//USART1_RX 复用到PA9

  1. 配置串口

  2. USART_BRR波特率寄存器

  3. USART_CR1对着配,使能以及过采样的倍数,最后串口使能

  4. USART_CR2设置停止位

USART_SR为状态寄存器,判断是否发送和接收数据

USART_DR为数据寄存器,包括数据接收和发送两个寄存器,是数据所在地

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/507140
推荐阅读
相关标签
  

闽ICP备14008679号