/*先初始化uart_tx引脚*/
GPIO_Init.Pin = UART_TX_PIN;
GPIO_Init.Mode = GPIO_MODE_AF_PP;
GPIO_Init.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
GPIO_Init.Pull = GPIO_PULLUP;
GPIO_Init.Alternate = UART_TX_AF;
HAL_GPIO_Init(UART_TX_PORT,&GPIO_Init);
/*后初始化uart_rx引脚*/
GPIO_Init.Pin = UART_RX_PIN;
GPIO_Init.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
GPIO_Init.Pull = GPIO_PULLUP;
GPIO_Init.Alternate = UART_RX_AF;
HAL_GPIO_Init(UART_RX_PORT,&GPIO_Init);
这样串口能正常收发数据
如果按照下面配置
/*先初始化uart_rx引脚*/
GPIO_Init.Pin = UART_RX_PIN;
GPIO_Init.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
GPIO_Init.Pull = GPIO_PULLUP;
GPIO_Init.Alternate = UART_RX_AF;
HAL_GPIO_Init(UART_RX_PORT,&GPIO_Init);
/*然后初始化uart_tx引脚*/
GPIO_Init.Pin = UART_TX_PIN;
GPIO_Init.Mode = GPIO_MODE_AF_PP;
GPIO_Init.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
GPIO_Init.Pull = GPIO_PULLUP;
GPIO_Init.Alternate = UART_TX_AF;
HAL_GPIO_Init(UART_TX_PORT,&GPIO_Init);
这样就只能发送数据,不能接收数据。
请教这是为什么?这个问题花了我好长时间才找到,但不知道为什么。
而且不管什么顺序,rx初始化都不能设置位输入模式。否则都不能接收数据。 |