STM32 DMA的學習筆記

2021-09-25 00:15:01 字數 1203 閱讀 4805

dma配置參考stm32學習手冊即可

函式說明:dma1的x通道初始化,可完成儲存器到儲存器、外設到儲存器(如串列埠1的接收)、儲存器到外設的初始化(如串列埠1的傳送)

引數說明:

dma1_channe1x:dma1第x通道(x=1....7)

cpar:外設位址,cmap:儲存器位址

turn:傳輸方向,0---從外設到儲存器,1從儲存器到儲存器

turn2:1---儲存器到儲存器

circ:0---不執行迴圈操作,1---執行

data_w:搬運一次的資料寬度,可以是8,16,32

sum:外設是否進行增量操作

使用方法:

例子如串列埠傳送(即從外設接收到資料才能去傳送,實質是儲存器到外設):

dma1_chx_init(dma1_channel4,(u32)&usart1->dr,(u32)usart_tx,1,0,0,0,8);

例如儲存器到儲存器

dma1_chx_init(dma1_channel1,(u32)rx,(u32)tx,1,1,1,0,8);//儲存器到儲存器

例如從外設到儲存器

dma1_chx_init(dma1_channel1,(u32)&adc1->dr,(u32)adc_read_data,0,0,0,0,16);

*/void dma1_chx_init(dma_channel_typedef * dma1_channelx,u32 cpar,u32 cmap,u8 turn,u8 turn2,u8 sum,u8 circ,u8 data_w)

/*開始dma傳輸

dma1_channelx:dma1傳輸用到的通道,len:搬運資料的(字、半字、全字)總長度

*/void dma1_chx_send(dma_channel_typedef * dma1_channelx,u32 len)

//清除標誌位方式例如(可專門寫乙個清除標誌位的函式):

/*if(dma1->isr&1<<13) //1:在通道4產生了傳輸完成事件(tc

*/

STM32 DMA 學習筆記(一)

dma 傳輸將資料從乙個位址空間複製到另外乙個位址空間。不需要cpu干涉 傳統的資料傳輸 位址a cpu 位址b dma資料傳輸 位址a 位址b 這樣也就為cpu減負了 含有兩個通道,dma1有7個通道,dma2有5個通道。每一乙個通道都可以連線乙個外設。那麼就有乙個仲裁器,來處理了通道間的優先順序...

STM32 DMA原理特性

dma,直接儲存器訪問。dma 傳輸方式無需 cpu 直接控制傳輸,也沒有中斷處理方式那樣保留現場和恢復現場的過程,通過硬體為 ram 與 i o 裝置開闢一條直接傳送資料的通路,能使 cpu 的效率大為提高。stm32f4 最多有 2 個 dma 控制器 dma1 和 dma2 共 16 個資料流...

Stm32 DMA配置 庫函式筆記

1.簡介 1 dma,全稱為 direct memory access,即直接儲存器訪問。實際上,dma作為乙個硬體電路,實現在無cpu干預的情況下,記憶體 memory 和外設之間的聯絡 2 stm32最多有兩個dma的控制器,dma1有7個通道,dma2有5個通道,也存在乙個仲裁器來判斷優先順序...