USART:通用同步/异步接收/发送器

要使用NVIC中断控制器的话,那么就得加入misc.c文件,在这个文件里面包含了NVIC的主要功能代码。


1.关于USART_InitTypeDef结构体

直接看代码:

typedef struct {
  uint32_t USART_BaudRate;//设置波特率
  uint32_t USART_Mode;//设置模式是读还是写或者两者都是
  uint32_t USART_WordLength;//设置传输的数据位长度
  uint32_t USART_StopBits;//设置停止位
  uint32_t USART_HardwareFlowControl;//设置硬件数据流控制
  uint32_t USART_Parity;//设置是否需要奇偶校验
} USART_InitTypeDef;

下面看看每个结构体成员可以取的值:

USART_Mode
  • USART_Mode_Rx: 只读
  • USART_Mode_Tx: 只写
  • USART_Mode_Rx | USART_Mode_Tx: 读写

USART_WordLength
  • USART_WordLength_8b:
  • USART_WordLength_9b: 如果开启了奇偶校验的话那么最好数据位是9位,因为校验位会插入在数据位的最高位上

USART_StopBits
  • USART_StopBits_1: 一位停止位
  • USART_StopBits_0_5: 0.5个停止位
  • USART_StopBits_2: 2个停止位
  • USART_StopBits_1_5: 1.5个停止位

USART_Parity
  • USART_Parity_No: 不设置奇偶校验位
  • USART_Parity_Even: 设置偶检验位
  • USART_Parity_Odd: 设置奇校验位
    需要注意的地方:经过计算出来得到的校验位被放在数据位的最高位,所以为了避免乱码,最好在开启了奇偶校验的话那么就将USART_WordLength设置为9位

USART_HardwareFlowControl
  • USART_HardwareFlowControl_None: 不需要硬件流控制
  • USART_HardwareFlowControl_RTS: request to send
  • USART_HardwareFlowControl_CTS: clear to send
  • USART_HardwareFlowControl_RTS_CTS:

2.相关库函数的大致使用流程

这里以伪代码简易介绍一下:

USART_InitTypeDef USART_InitStructure;
USART_InitStructure.xxx = xxx;//填充好这个USART_InitTypeDef对象
USART_Init(USARTx, &USART_InitStructure);//应用配置
USART_Cmd(USARTx, ENABLE);//使能具体的USART

当然,前面还得配置一下端口。需要注意的是如果端口的默认功能就是用作USART的话,那么不需要开启AFIO时钟,我们只需要开启端口时钟以及usart时钟。还有就是对于STM32F103ZE来说,我们的usart1属于APB2外设。


你可能感兴趣的:(USART:通用同步/异步接收/发送器)