|
老大,您的建议很犀利。。
以下是我的初始化,您能顺便帮我指出一下我的配置哪里有问题吗?
谢谢版主。
void USART2_SETUP()
{
GPIO_InitTypeDef GPIO_InitStructure; //声明一个GPIO初始化的结构变量 GPIO_InitTypeDef
USART_InitTypeDef USART_InitStructure; //声明一个USART初始化的结构变量 USART_InitStructure
USART_ClockInitTypeDef USART_ClockInitStruct;//声明一个USARTx时钟初始化的结构变量
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE);
// RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA , ENABLE); //屏蔽RCC_APB2Periph_AFIO
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2 , ENABLE);
//使能使用到的功能模块的时钟
//一,以下用来配置USART2的AFIO引脚
//1,配置USART_TX引脚为AF_PP模式
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; //选择PA2
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
//2,配置USART_RX引脚为AF_OD模式
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3; //选择PA3
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA, &GPIO_InitStructure);
//二,以下用来配置USART2的相关初始化
USART_InitStructure.USART_BaudRate = 115200;
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
USART_InitStructure.USART_StopBits = USART_StopBits_1;
USART_InitStructure.USART_Parity = USART_Parity_No;
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode = USART_Mode_Tx | USART_Mode_Rx;
USART_Init(USART2, &USART_InitStructure);
//三,以下用来配置USART2的时钟初始化
USART_ClockInitStruct.USART_Clock = USART_Clock_Disable ;
USART_ClockInitStruct.USART_CPOL = USART_CPOL_Low ;
USART_ClockInitStruct.USART_CPHA = USART_CPHA_1Edge ;
USART_ClockInitStruct.USART_LastBit = USART_LastBit_Disable ;
USART_ClockInit(USART2, &USART_ClockInitStruct);
USART_Cmd(USART2, ENABLE);//使能USART2外设
} |
|