stm32 没有收到来自 UART 的 Rx 中断



我正在尝试在stm32f4发现板上为UART实现简单的回显(使用freertos(。据我了解,这应该很容易。 首先,我在任务中调用HAL_UART_Receive_IT(&huart3, &rx_char,1)。在收到中断后,USART3_IRQHandler应该触发。然后在HAL_UART_RxCpltCallback我会做HAL_UART_Transmit(&huart3, &rx_char, 1, timeout),也许会用HAL_UART_Receive_IT重新启用它。我的想法对了吗?它应该有效吗?

但就我而言,事实并非如此。我正在尝试从终端发送字符,但从未触发USART3_IRQHandler。什么也没发生。

该代码是使用Stm32CubeMX生成的,具有Freertos,USART3,NVIC和启用USART3全局中断的功能。

我也在主函数中调用__HAL_UART_ENABLE_IT(&huart3, UART_IT_RXNE)。 怎么了?HAL_UART_Transmit完美运作。

HAL 不是理想的库。如果出现问题,您必须检查寄存器。 您的问题看起来像不工作的 NVIC。检查它,如果它没有打开,请使用类似 - NVIC_EnableIRQ(USART3_IRQn(; 或者可能没有在 USART3 的 CR1 中打开 RE 寄存器。 无论如何,我在重复 - 检查寄存器。

最新更新