DMA叫做直接存储器访问,最大的作用就是在不站用CPU的情况下,完成数据的传输。stm32f4具有两个DMA,DMA1和DMA2,每个DMA有8个数据流(可以认为是数据链)每个数据流又有8个通道,下面是两个DMA的请求映射。(图片截于stm32官方手册)
在使用DMA传输数据时并不是你想用哪个数据流,哪个通道就可以选的,要根据上面的图来配置的。例如 使用 DMA 来传输 ADC1 采集到的数据传到存储器时,就要选择 DMA2 的 数据流0 通道0 来传输。(这么多DMA请求映射当然不记住啦,用时再找出来翻翻就行了)
这是之前做过的DMA结构体配置,要注意的就是外设的基地址,存储器的地址,还有就是数据流,通道的选择一定要选对。不然不注意话,就会出现一些稀奇古怪的问题,之前就是粗心遇到过,希望看到这篇文章的都能避免这个错误。