串口通信USART(STM32F407)

 UART和USART

并行通信 -----各位同时传输、速度快 、占用引脚资源多
串行通信 -----数据按位顺序传输、占用资源少、速度相对较慢

```
          -----单工      数据传输只支持数据在一个方向上传输
          -----半双工    允许数据在两个方向上传输,但同一时刻,只允许数据在一个方向上传输
          -----全双工    允许数据同时在两个方向上传输,因此,全双工通信是两个单工通信方式的结合
          -----同步通信  带有时钟同步信号传输(SPI、IIC)
          -----异步通信  不带时钟同步信号 (USART),单总线
```

UART-------通用异步收发器  支持独立的发送接收使能
USART -------通用同步异步收发器
过采样 -------16倍过采样和8倍过采样
小数波特率发生器 ---------
SR寄存器 --------- 状态标志寄存器
CR1寄存器 --------- 控制寄存器
硬件流控制 --------- 
奇偶校验位 ------- 保证前面的数据位加上奇偶校验保持奇数或者偶数,于是分为奇校验和偶校验
串口1和6使用的是Pclk(2)、串口2~5使用的是Pclk(1)
STM32FXX最多支持8个UART STM32F407一般是6个
电脑使用的接口一般是DB9接口 通过一个RS232转换器

分数波特率发生器    

![avatar](./PHOTO/USART.jpg)

配置流程

使能

串口时钟使能          RCC_APBxPeriphClockCmd(); 

GPIO时钟使能        RCC_AHB1PeriphClockCmd();

引脚复用映射            GPIO_PinAFConfig();

GPIO配置模式设置    GPIO_Init();

串口参数初始化         USART_Init();

开启中断并初始化NVIC(如果需要开启中断才需要这个步骤)

                                 NVIC_Init();
                                 USART_ITConfig();

使能串口
                                 USARTx_IRQHander();

串口数据收发          

                                 void USART_SendData();
                                 Uint16_t USART_ReceiveData();

串口传输状态获取

                                 FlagStatus USART_GetFlagStatus();
                                 void USART_ClearITPendingBit();

宏定义标识符

                               USART_RX_STA  -------
                               USART_IT_RXNE -------  
                               USART_REC_LEN -------

通过中断标志位等待发送完成
准备知识-----端口复用映射

配置相关寄存器

USART_SR 状态寄存器  [9:0]     PE(parity error)    RXNE(Read data register not empty)  TC(发送完成)

USART_DR 数据寄存器  

USART_BRR 波特率寄存器[15:0]   主要设置的是usart的分频系数(USARTDIV)[15:4]整数部分,[3:0]小数部分

配置相关库函数

  1. FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx,uint16_USART_FLAG);

  2. void USART_SendData(USART_TypeDef* USARTx,uint16_t Data);    用于操作数据寄存器

  3. uint16_t  (USART_TypeDef* USARTx);                      

  4. USART_Init(USART_TypeDef* USARTx,USART_InitTypeDef* USART_InitStruct);//初始化波特率,字长,停止位,奇偶校验位,USART模式(使能发送、接收或者发送和接收),硬件流控制

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值