1. 程式人生 > 其它 >STM32中斷與DMA通訊程式設計學習

STM32中斷與DMA通訊程式設計學習

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/