根据本人的一些理解,对于DMA在这里进行一些解释:
DMA(Direct Memory Access,直接内存存取) 是所有现代电脑的重要特色,它允许不同速度的硬件装置来沟通,而不需要依赖于 CPU 的大量中断负载。否则,CPU 需要从来源把每一片段的资料复制到暂存器,然后把它们再次写回到新的地方。在这个时间中,CPU 对于其他的工作来说就无法使用。(选自360百科)
我们进行如下的一个比较通俗的理解,在32中也有DMA,存放于内核,最常用的功能就是搬运数据,我们都知道,单片机执行程序是依次执行的,但是如果有了DMA,我们的单片机可以同时执行两件事情,这样就可以节省大量的CUP资源,在执行DMA数据传输的时候,还可以进行其他工作。
最简单的例子就是,我们在用DMA进行串口传输数据的时候,还可以让单片机去执行流水灯等。
DMA可以搬运数据可以从外设到存储器(ADC采样数据给程序里的一个变量),也可以从存储器到外设(FLASH到SRAM),也可以从存储器到存储器三种。存储器到存储器最直观的就是从FLASH到SRAM。
这里也同时讲一下FLASH跟SRAM(静态随机存取存储器)的区别,FLASH(存储器又成为闪存)是存放代码的,SRAM是存放程序运行的中间变量的,FLASH具有掉电不丢失。
首先我们要知道大容量的1系列的32有两个DMA,分为DMA1,DMA2
我们可以从