stm32f407串口通信:
void UART1_config(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
USART_InitTypeDef USART_InitStruct;
//1.配置GPIO管脚复用
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);//开时钟
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_9|GPIO_Pin_10;//同组管脚一次设置多个
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF;//管脚复用
GPIO_Init(GPIOA, &GPIO_InitStruct);
//2.管脚复用绑定
GPIO_PinAFConfig(GPIOA, GPIO_PinSource9,GPIO_AF_USART1);
GPIO_PinAFConfig(GPIOA, GPIO_PinSource10,GPIO_AF_USART1);
//3.初始化串口
USART_InitStruct.USART_BaudRate = 9600;//波特率
USART_InitStruct.USART_WordLength = USART_WordLength_8b;//字节长度
USART_InitStruct.USART_Parity = USART_Parity_No;//校验
USART_InitStruct.USART_StopBits = USART_StopBits_1;//停止位
USART_InitStruct.USART_Mode = USART_Mode_Rx|USART_Mode_Tx;//模式
USART_InitStruct.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//流控
USART_Init(USART1,&USART_InitStruct);//初始化
USART_Cmd(USART1, ENABLE);//串口使能 (不是所有寄存器都需要使能)
}
void uart_send_data(u8 data)
{
USART_SendData(USART1, data);//发送数据
while(USART_GetFlagStatus(USART1,USART_FLAG_TXE) == RESET);//等待标志位
}