首先说明一下何为USART,USART是一个全双工通用同步/异步串行收发模块,该接口是一个高度灵活的串行通信设备,全称为通用同步/异步串行接收/发送器。要说一下的是,什么叫全双工:全双工是串行通信传输数据方法的一种,另外的两种为:单工,半双工。它们的区别是什么?简单来说,单双工的传输为A发B收(单方向传输),半通信双工为A发B收,B发A收(可以互相传输,但同一时间只能A传到B,或者B传到A,不能同时传输),全双工便是A和B能同一时间地互相传输数据。再来便是同步通信和异步通信了,同步通信是有时钟信号来传输数据的,而异步通信是没有时钟的,这就是为什么SPI和I2C有额外的时钟线的原因。
STM32的串口有三组:USART1-USART3,每一个的串口的复用引脚不一样,USART1的复用引脚是PA9(TXD),PA10(RXD),何为引脚复用?引脚复用和普通引脚有什么区别?关于引脚复用,不妨想一下,stm32的外围资源越来越多,所需要的引脚也越来越多,但cpu的引脚是有限的,那怎么办?于是引脚复用便产生了。比如PA9和PA10,在不复用USART1时,这两个引脚是可以完全独立的,也就是可以当做普通的GPIO口使用。
接下来便是配置相关的寄存器了:
#include "UART.h"
void Uart_Init()
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO,ENABLE);
GPIO_InitTypeDef ua