STM32CubeMx配置USART注意的一個問題


HAL_UART_Receive_IT(&huart1, (uint8_t *)aRxBuffer, Number);意思是接收到Number個字節后,觸發HAL_UART_RxCpltCallback,沒收滿是不會觸發的。而且HAL_UART_Receive_IT是一次性的,觸發完后需要時要再調用一下。條件允許的話,用DMA+空閑中斷實現不定長接收。

所以在接收處理函數中寫成這樣:

/**
* 函數功能: 串口接收完成回調函數
* 輸入參數: 無
* 返 回 值: 無
* 說 明:無
*/
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *UartHandle)
{
AddReceivedUartDataNoCode(aRxBuffer&0x00ff,&g_UartRecBuff[0]);
HAL_UART_Receive_IT(&huart1,&aRxBuffer,1);
}

當然,要想進入這個中斷,第一次配置串口完成后,在主函數的While(1)前面也要加上HAL_UART_Receive_IT(&huart1,&aRxBuffer,1);

意思是開啟接收中斷,只接收1個字節放到aRxBuffer,接收完就進入上面那個中斷回調。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM