STM32 利用Hal庫實現(xiàn)UART中斷處理

實驗室項目需要使用STM32開發(fā),Hal庫的資料相對較少,關于UART中斷與之前使用飛思卡爾芯片的中斷不同。
首先在CubeMX中配置好UART中斷;重點是:需要在主循環(huán)之前手動開啟接收中斷:

HAL_UART_Receive_IT(&huart1, (uint8_t *)aRxBuffer, 1);

只有手動開啟之后才能進入中斷。
此外,HAL庫中,無論何種類型的UART中斷,都會進入:

void HAL_UART_IRQHandler(UART_HandleTypeDef *huart)

在此函數(shù)中判斷具體是何種中斷,再調(diào)用相應的中斷服務函數(shù),接收中斷是:

static HAL_StatusTypeDef UART_Receive_IT(UART_HandleTypeDef *huart)

而此函數(shù)會調(diào)用:

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
只需要把相應代碼寫到此回調(diào)函數(shù)中即可。

最需要注意的一點是:
在回調(diào)函數(shù)最后需要再次開啟中斷??!否則只能執(zhí)行一次??!

/* USER CODE BEGIN 4 */
/**
  * @brief Rx Transfer completed callbacks
  * @param huart: uart handle
  * @retval None
  */
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
  /* Prevent unused argument(s) compilation warning */
  
  /* NOTE : This function should not be modified, when the callback is needed,
            the HAL_UART_RxCpltCallback can be implemented in the user file
   */
      HAL_UART_Transmit(&huart1, (uint8_t *)aRxBuffer, 1,0xFFFF);
      HAL_UART_Receive_IT(&huart1, (uint8_t *)aRxBuffer, 1);
}
/* USER CODE END 4 */

個人理解 這里將中斷服務設置為等待模式 等待接收字符。
在Keil中進行斷點調(diào)試 發(fā)現(xiàn)接受字符后會首先進入

HAL_UART_IRQHandler
函數(shù),而不是直接進入 UART_Receive_IT 函數(shù)進行處理
相當于UART中斷服務程序有一個統(tǒng)一入口
HAL_UART_Receive_IT(&huart1, (uint8_t *)aRxBuffer, 1) 語句相當于打開這個入口,經(jīng)測試如果去掉這句的話,再發(fā)送字符是不會進入HAL_UART_IRQHandler語句的。

剛開始接觸STM32與HAL庫函數(shù),理解肯定不是很到位。
參考自:
http://www.eeworld.com.cn/mcu/article_2017092734800.html
http://www.stm32cube.com/article/74

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 實驗環(huán)境依然是windows + CubeMX + Keil v5。 實驗連接圖 連接圖與Lab3基本一致,ST-...
    lmzqwer2閱讀 1,735評論 0 4
  • # STM32之串口DMA接收不定長數(shù)據(jù) ## 引言 在使用stm32或者其他單片機的時候,會經(jīng)常使用到串口通訊,...
    杰杰T_T閱讀 607評論 0 0
  • SPI通信實驗 SPI簡介 串行外設接口(Serial Peripheral Interface Bus,SPI)...
    btskyrmb閱讀 9,924評論 1 12
  • 命運之手在搖擺著什么,不能永遠追求與表象世界,而應著手于意志的支撐。以哲學書為參照物,站在巨人的的肩膀上去...
    記億之葉閱讀 446評論 0 0
  • 鋼筆畫
    親親寶貝_bec8閱讀 161評論 0 5

友情鏈接更多精彩內(nèi)容