STM32中斷與DMA通訊程式設計學習
阿新 • • 發佈:2021-11-08
STM32中斷與DMA通訊程式設計學習
1.stm32中斷
1.中斷原理
中斷是由核心外部產生的,一般由硬體引起,比如外設中斷和外部中斷等。
處理器和外部裝置的資料傳輸方式:
中斷全過程:
中斷過程執行示意圖:
中斷的作用:
中斷優先順序:
中斷響應過程:
2. 通過中斷控制LED燈(使用cubemx軟體)
1.專案生成
1.新建專案選擇自己的開發板型號
2.選擇PC13(即板載的LED燈)設定為GPIO_Output輸出模式,PB9設定為GPIO_EXTI9中斷模式
3.設定PB9的GPIOmode
4.將PC13引腳預設設定為高
5.SYS配置為serialwire
6.在NVIC中開啟中斷
7.將專案名稱等設定好生成程式碼。
2.編寫程式碼
在main.c檔案中加上如下程式碼,他是中斷回撥函式中斷時便會呼叫這個函式。
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) { /* Prevent unused argument(s) compilation warning */ HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_4); //翻轉電平 /* NOTE: This function Should not be modified, when the callback is needed, the HAL_GPIO_EXTI_Callback could be implemented in the user file */ }
3.編譯燒錄執行觀察結果
可以發現將PB9線接上拔掉都會使這個LED發生變化
3.編寫程式碼實現串列埠中斷
1.通過cubemx生成專案
依然是依靠cubemx建立一個專案
大部分設定照舊
這裡要設定串列埠,選擇USART1,將他設定成非同步(Asynchronous)模式,在下方可以看到他的一些相關引數
2.設定使能中斷
3.其他照舊設定,生成專案。
2.在keil中編寫程式碼
在while中新增如下語句,通過串列埠傳送“hello windows"
HAL_UART_Transmit_DMA(&huart1, (uint8_t *)Senbuff, sizeof(Senbuff)); HAL_Delay(1000);
3.通過flymcu燒錄
4.執行結果
五、總結
通過本次實驗瞭解了中斷的使用方法,學習了DAM傳送資料。
4.參考文獻
https://blog.csdn.net/m0_58414679/article/details/121060073?spm=1001.2014.3001.5501
https://blog.csdn.net/as480133937/article/details/104827639/