STM32HAL库串口接收中断配置失效 HAL_UART_Receive_IT()
函数调用无效
问题:
- 使用stm32的hal库配置串口的时候调用
HAL_UART_Receive_IT()
函数开启串口接收中断,但是发现没有作用,将HAL_UART_Receive_IT()
函数丢在MX_USART2_UART_Init()
函数最后可以,但是丢在HAL_UART_MspInit()
函数最后却不行。
解决方案:
- 查看
HAL_UART_Receive_IT()
函数原型发现,在调用此函数的时候会首先进行判断
if (huart->RxState == HAL_UART_STATE_READY)
{
...
}
它会首先判断串口的状态,只有串口转态为就绪态的时候才会进行配置,而执行HAL_UART_MspInit()
函数的时候,串口初始化并未完成,因此串口的状态不为就绪态,因此HAL_UART_Receive_IT()
函数实际并不会执行。
所以调用HAL_UART_Receive_IT()
函数必须在串口初始化完成之后调用,一般放在MX_USART2_UART_Init()
函数最后