stm32没有从UART接收Rx中断

时间:2017-07-10 12:49:40

标签: interrupt stm32 stm32f4discovery usart stm32-hal

我试图在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效果很好。

1 个答案:

答案 0 :(得分:-1)

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