翻开对应GPIO时钟 复用时钟 USART时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO | RCC_APB2Periph_USART1, ENABLE );
USART2
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE );
USART3
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE );
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE );
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE );
GPIO设置 TX装备为 复用推挽 RX装备为 开漏输入
void GPIO_Configuration(void)
{
GPIO_InitTypeDefGPIO;
GPIO.GPIO_Pin =GPIO_Pin_9;
GPIO.GPIO_Speed =GPIO_Speed_50MHz;
GPIO.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOA,&GPIO);//端口初始化
GPIO.GPIO_Pin =GPIO_Pin_10;
GPIO.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA,&GPIO);//端口初始化
}
USART装备
void USART_Configuration(void)//初始化USART
{USART_InitTypeDef USART_InitStructure;//声明参数结构
USART_InitStructure.USART_BaudRate = 9600;//速率9600
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_Rx | USART_Mode_Tx;//发送接纳使能
USART_Init(USART1, &USART_InitStructure);//依据USART_InitStruct中指定的参数初始化外设USART1寄存器
USART_Cmd(USART1,ENABLE);//敞开USART外设
}
发送数据
USART_SendData(USART1, ch);
while(USART_GetFlagStatus(USART1, USART_FLAG_TC)==RESET) {}
引脚界说
IO |
USART |
重界说 |
重界说 |
|||
PA8 |
USART1_CK |
|||||
PA9 |
USART1_TX |
PB6 |
||||
PA10 |
USART1_RX |
PB7 |
||||
PA11 |
USART1_CTS |
|||||
PA12 |
USART1_RTS |
|||||
PA0 |
USART2_CTS |
PD3 |
||||
PA1 |
USART2_RTS |
PD4 |
||||
PA2 |
USART2_TX |
PD5 |
||||
PA3 |
USART2_RX |
PD6 |
||||
PA4 |
USART2_CK |
PD7 |
||||
PB10 |
USART3_TX |
PD8 |
PC10 |
|||
PB11 |
USART3_RX |
PD9 |
PC11 |
|||
PB12 |
USART3_CK |
PD10 |
PC12 |
|||
PB13 |
USART3_CTS |
PD11 |
||||
PB14 |
USART3_RTS |
PD12 |
||||