按照官方的标准例程测试发现串口并不完整,无法使用。
按照以下方法及注意事项可以正确配置串口:
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);
}
}
}