定义:DMA,全称为: Direct Memory Access,即直接存储器访问, DMA 传输将数据从一个地址空间复制到另外一个地址空间。 当 CPU 初始化这个传输动作,传输动作本身是由DMA 控制器 来实行和完成。典型的例子就是移动一个外部内存的区块到芯片内部更快的内存区。
作用对象:存储器和存储器间的传输,外设和存储器,存储器和外设的传输;闪存、 SRAM、外设的 SRAM、 APB1 APB2 和 AHB 外设均可作为访问的源和目标。
优点:DMA 传输方式无需 CPU 直接控制传输,也没有中断处理方式那样保留现场和恢复现场的过程,通过硬件为 RAM 与 I/O 设备开辟一条直接传送数据的通路, 能使 CPU 的效率大为提高。
注意:
1.子程序中定义了数组,若主函数中出现未定义或重复定义警告,则加extern u16 buf[4]表明变量已在其他地方定义 ;
不可再次赋值external u16 buf[4] = {200,400,600,800};则会报错。
2.TIM_DMACmd(TIM3, TIM_DMA_Update, ENABLE);TIM_DMA_Update对应通道3,刚开始设置TIM_DMA_CC1对应通道6无法实现本现象,原因未知。
1.DMA配置
void DMA_Configuration(void)
{
DMA_InitTypeDef D;
//详见函数库手册第90页解释
DMA_DeInit(DMA1_Channel3); //DMA1_3通道初始化
D.DMA_PeripheralBaseAddr =(u32)&TIM3->CCR1; //DMA外设基址 TIM3_CCR1_Address
D.DMA_Memor