1. 程式人生 > >stm32 hal庫串列埠通訊資料彙集

stm32 hal庫串列埠通訊資料彙集

串列埠的傳送接收函式:
HAL_UART_Transmit();串列埠輪詢模式傳送,使用超時管理機制。
HAL_UART_Receive();串列埠輪詢模式傳送,使用超時管理機制。
HAL_UART_Transmit_IT();串列埠中斷模式傳送,
HAL_UART_Receive_IT();串列埠中斷模式傳送
HAL_UART_Transmit_DMA();串列埠DMA模式傳送
HAL_UART_Receive_DMA();串列埠DMA模式傳送

串列埠相關的中斷函式:
HAL_UART_TxHalfCpltCallback():一半資料(half transfer)傳送完成後,通過中斷處理函式呼叫。
HAL_UART_TxCpltCallback():傳送完成後,通過中斷處理函式呼叫。
HAL_UART_RxHalfCpltCallback():一半資料(half transfer)接收完成後,通過中斷處理函式呼叫。
HAL_UART_RxCpltCallback():接收完成後,通過中斷處理函式呼叫。
HAL_UART_ErrorCallback():傳輸過程中出現錯誤時,通過中斷處理函式呼叫。

可看到串列埠傳送和就是有三種通訊模式:
       第一種是上面用到的輪詢的模式。CPU不斷查詢IO裝置,如裝置有請求則加以處理。例如CPU不斷查詢串列埠是否傳輸完成,如傳輸超過則返回超時錯誤。輪詢方式會佔用CPU處理時間,效率較低。
       第二種就是中斷控制方式。當I/O操作完成時,輸入輸出裝置控制器通過中斷請求線向處理器發出中斷訊號,處理器收到中斷訊號之後,轉到中斷處理程式,對資料傳送工作進行相應的處理。
       第三種就是直接記憶體存取技術(DMA)方式。所謂直接傳送,即在記憶體與IO裝置間傳送一個數據塊的過程中,不需要CPU的任何中間干涉,只需要CPU在過程開始時向裝置發出“傳送塊資料”的命令,然後通過中斷來得知過程是否結束和下次操作是否準備就緒。

相關參考資料的網址有:

HAL庫UART的幾個常用函式講解+中斷處理過程講解

HAL庫UART按DMA方式傳送和接收函式簡析及測試

STM32CubeMX系列教程5:序列通訊(USART)

HAL串列埠宕機原因分析及其解決方法