1.初始化串口
UART_initStruct.Instance =USART1;
UART_initStruct.Init.BaudRate = 9600;
UART_initStruct.Init.WordLength = UART_WORDLENGTH_8B;
UART_initStruct.Init.StopBits = UART_STOPBITS_1;
UART_initStruct.Init.Parity = UART_PARITY_NONE;
UART_initStruct.Init.HwFlowCtl = UART_HWCONTROL_NONE;
UART_initStruct.Init.Mode = UART_MODE_TX_RX;
if(HAL_UART_Init(&UART_initStruct) != 0)
{
return;
}
2.重写HAL_UART_MspInit()函数
注意:在HAL_UART_MspInit()函数中不能使用HAL_UART_Receive_IT()或HAL_UART_Transmit_IT()函数,否则不会进入中断处理函数中,也就是说设置中断无效;
void HAL_UART_MspInit(UART_HandleTypeDef *huart)
{
GPIO_InitTypeDef GPIO_InitStruct;
/* gpio clock enable */
USARTx_TX_GPIO_CLK_ENABLE();
USARTx_RX_GPIO_CLK_ENABLE();
/* uart clock enable */
USARTx_CLK_ENABLE();
/*set gpio*/
GPIO_InitStruct.Pin = USARTx_TX_PIN;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(USARTx_TX_GPIO_PORT, &GPIO_InitStruct);
GPIO_InitStruct.Pin = USARTx_RX_PIN;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
HAL_GPIO_Init(USARTx_RX_GPIO_P