我试图在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
效果很好。
答案 0 :(得分:-1)
HAL不是理想的图书馆。如果出现问题,您必须检查寄存器。 你的问题看起来像是非工作的NVIC。检查一下,如果它没有打开,请使用类似的方法 - NVIC_EnableIRQ(USART3_IRQn); 或者可能没有在USART3的CR1中打开RE寄存器。 无论如何,我重复 - 检查寄存器。