首页 文章

stm32没有从UART接收Rx中断

提问于
浏览
0

我正在尝试在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 回答

  • -1

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

相关问题