不同外设都有个启动DMA的函数,如果是M2M的话也有单独的函数
比如串口启动DMA接收
HAL_UART_Receive_DMA
如何建立联系的见下图:
DMA 控制器执行直接存储器传输:因为采用 AHB 主总线,它可以控制 AHB 总线矩阵来启动 AHB 事务。它可以执行下列事务:● 外设到存储器的传输● 存储器到外设的传输● 存储器到存储器的传输 DMA 控制器提供两个 AHB 主端口: AHB 存储器端口(用于连接存储器)和 AHB 外设端口(用于连接外设)。但是,要执行存储器到存储器的传输, AHB 外设端口必须也能访问存储器。AHB 从端口用于对 DMA 控制器进行编程(它仅支持 32 位访问)。
以上抄自《STM32F4XX参考手册》。大概就是这么回事
对DMA进行配置后,有个使能DMA通道的函数DMA_Cmd(DMA_Channel1ENABLE)就能开启DMA通道。
不同外设对应的DMA通道不一样,要看下手册上的对照表。