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()函数最后。
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()函数最后。
举报