按照官方的標準例程測試發現串口並不完整,無法使用。
按照以下方法及注意事項可以正確配置串口:
1,如果不是特別需要註冊多餘的回調函數,宏USE_HAL_UART_REGISTER_CALLBACKS不需要打開。
2,實現中斷向量表中串口IRQ中斷,在中斷中調用Hal庫中HAL_UART_IRQHandler函數。
3,重寫接收完成回調函數HAL_UART_RxCpltCallback,在改函數中調用HAL_UART_Receive_IT一邊準備下一次接收。
具體代碼如下:
void USART1_IRQHandler(void)
{
HAL_UART_IRQHandler(&uart1_handler);
}
void USART2_IRQHandler(void)
{
HAL_UART_IRQHandler(&uart2_handler);
}
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
if (huart->Instance == USART2)
{
if (uart2_handler.Init.Mode == UART_MODE_TX_RX || uart2_handler.Init.Mode == UART_MODE_RX)
{
HAL_UART_Receive_IT(&uart2_handler, (uint8_t *)aRxBuffer, RXBUFFERSIZE);
}
}
}