上一篇是STM32F4的初级例程,主要就是对GPIO的操作。接下来要进行的就是Usart了,有时候我把想把某些中间量或者其他程序状态信息打印出来显示在电脑上,那么这是串口的作用就可想而知了。
STM32F407xx内嵌四个通用同步/异步接收器(USART1,USART2,USART3 和USART6)和两个通用异步收发器(UART4和UART5)。这6个接口提供异步通信的IrDASIR ENDEC支持,多机通信模式,单线半双工通信模式LIN主/从功能。 USART1和USART6接口能够速度高达10.5 Mbit / s的通信其他可用的接口通信高达5.25bit/s。USART1,USART2,USART3和USART6还提供硬件管理的CTS,RTS信号,智能卡的模式(ISO7816兼容)和类似的SPI通信能力。所有接口都可以通过DMA控制器。
这里我使用了两个线的最简单串口设置。
首先第一步就是串口初始化,配置Usart的GPIO、工作模式
/*************************************************************************************
* 函数名: USART2_Config
* 描述 : USART2 GPIO、工作模式的配置
* 输入 : 无
* 输出 : 无
* 批注 : PA2->TX PA3->RX
*************************************************************************************/
void USART2_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure; //初始化GPIO结构体
USART_InitTypeDef USART_InitStructure; //初始化Usart结构体
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); //使能GPIOA的时钟
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE); //使能USART2的时钟
GPIO_PinAFConfig(GPIOA,GPIO_PinSource2,GPIO_AF_USART2);
GPIO_PinAFConfig(GPIOA,GPIO_PinSource3,GPIO_AF_USART2);
/* 配置USART2的GPIO */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;
GPIO_InitStructu