学习STM32DMA之前去书上学习详细点的知识
来源:计算机组成原理(唐朔飞)
1.DMA接口具备的功能
可以总结为三步:1.请求DMA传输2.得到权限,确定数据传输双方的地址和数据的结构3.传输结束进行通知
使用DMA重点
1.初始化
初始化中也就是两个基地址的选择,第一个是外设基地址。外设及地址在<<stm参考手册>>中进行下载,以串口的发送寄存器作用示例作为展示
首先需要下载stm32参考手册(是参考手册而不是数据手册),在参考手册中找到对应的存储器组织结构中对应外设的映射,取得地址
第二步找到对应的寄存器,然后得到他的寄存器地址(给出一般是偏移地址,偏移地址就是相对基地址的移动量)
两个地址量相加就是外设地址,一般会将这个计算变成有实际意义的声明(使用宏定义的形式)
内存中的地址
一般作为数组来进行设置,所以传递是数组名的一个指针
中断
想要使用来自DMA的中断,使用的步骤为:
1.给NVIC对应的DMA1中断进行配置
2.使用DMA中断库函数进行初始化
3.配置中断服务函数,在中断服务函数中检测数据完成的事件相关的状态位是否发生改变,如果改变的选择相应的操作,同时最后还有对状态位的清除操作
时钟
前面我们对时钟的配置是在APB2总线上设定定的
usart:
而现在是对AHB总线上的DMA1进行初始化这一点和其他不一致