[英]stm32 doesn't receive a Rx interrupt from UART
我正在嘗試在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
從未觸發。 什么都沒發生。
該代碼是使用帶有Freertos,USART3,NVIC和啟用了USART3全局中斷的Stm32CubeMX生成的。
我也在主函數中調用__HAL_UART_ENABLE_IT(&huart3, UART_IT_RXNE)
。 怎么了? HAL_UART_Transmit
完美運行。
HAL不是理想的庫。 如果出現問題,必須檢查寄存器。 您的問題看起來像是無法正常工作的NVIC。 檢查它,如果它沒有打開,請使用-NVIC_EnableIRQ(USART3_IRQn); 或者可能不是在USART3的CR1中打開RE寄存器。 無論如何,我要重復-檢查寄存器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.