STM32F1的USARTx发送与接收
一、概述
- USART 含义是通用同步异步收发器,本人用的 STM32F103C8T6 有三个串口,分别是USART1、USART2 和 USART3;
- USART1 工作在高速总线 APB2 上,USART2 和 USART3 工作在低速总线 APB1 上;
- 串口有两种工作模式,一种是发送数据,另一种是接收数据,无论使用哪一种都需要进行串口初始化;
- 串口初始化中包括对串口所在 IO 口的初始化,串口的波特率、停止位、奇偶校验位等初始化。
二、思维导图
具体的工作流程如图所示:
三、特殊代码说明
- usart.c 文件中不同串口的时钟使能
- USART1 初始化中的时钟使能
// 使能 USART1、GPIOA 时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA, ENABLE);
- USART2 初始化中的时钟使能
// 使能 USART2 所在 GPIOA 的时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA , ENABLE);
// 使能串口的 RCC 时钟
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);
- usart.h 文件中定义使用 printf 函数的串口,如果要使用串口 2 ,则将 USART1 改成 USART2 即可
#define USART_n USART1
- usart.h 文件中使能或禁止端口号,不使用某个串口时要禁止此串口,以减少编译量
#define EN_USART1 1 //使能(1)/禁止(0)串口 1
#define EN_USART2 0
#define EN_USART3 0