STM32外設DMA使用總結

2021-07-03 06:43:32 字數 833 閱讀 2460

stm32外設dma使用總結:

1、根據需要選擇dam模式:

(1)迴圈模式—dma_mode =  dma_mode_circular

(2)正常模式—dma_mode =  dma_mode_normal

2、對於dma1的chanel3,對應外設為usart3的rx

試想:如果串列埠接收中斷和dam中斷同時開啟,cpu如何相應?

(1)中斷優先順序不同:這好說,支援巢狀中斷(nvic)的cortex-m3自然優先服務中斷優先順序高的

(2)中斷優先順序相同:處理原則,先來先處理;若同時到來,中斷號低的優先處理

查詢手冊可知,dma(irqn number 13)會先於usart3(39)被cpu處理

3、設定dma模式為迴圈模式,則:

(1)只開dma中斷,關閉外設中斷,將只進一次dma服務函式

(2)開啟dma中斷,開啟外設中斷,才會迴圈進dma服務函式

4、在開啟多個dma中斷時,注意每個中斷的優先順序設定

5、在中斷函式中,禁止dma使能後要重新設定dma傳輸資料量大小並開啟dma

void dma1_channel3_irqhandler(void)

}

6、dma配置選項:

typedef struct

dma_inittypedef;

STM32使用DMA方式Printf

使用庫函式除錯printf時需要占用系統資源所以採用dma方式來printf資料 兩種實現方式 pre 已經有dma傳送管理函式 include stdio.h include stdarg.h brief modbus傳送管理 void startmodbustranst uart handlet...

STM32使用DMA控制器試驗總結

在使用串列埠dma試驗過程中,遇到了一些問題,通過試驗找到了問題所在,也對dma的應用有了新的認識,僅以此分享給大家,不足之處請多多指教。dma初始化 串列埠對應的dma請求通道 define usart tx dma channel dma1 channel4 define usart tx dm...

STM32中DMA的使用入門

今天剛看了乙個adc採集的程式,和之前用其他微控制器寫的程式還是有比較大的差別,這個差別主要就在dma。這裡面總結一下,有一部分是 別人的。什麼是stm32 的dma 其全稱是 direct memory access 根據st 公司提供的相關資訊,dma是 stm32 中乙個獨立與 cortex ...