0

我正在尝试在 stm32f4 发现板上(使用 freertos)为 UART 实现简单的回显。据我了解,这应该很容易。首先我调用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未被触发。什么都没发生。

该代码是使用带有 Freertos、USART3、NVIC 并启用了 USART3 全局中断的 Stm32CubeMX 生成的。

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

4

1 回答 1

0

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

于 2017-07-10T15:02:36.727 回答