STM32学习笔记【江科协】【8-2】DMA数据转运&DMA+AD多通道

存储器地址,常量、变量,结构体访问寄存器

首先做个小实验,验证上节中变量和只读变量的存储地址

取出的地址如果想要作为数字显示的话,还需要强制类型转换

用 const 关键字是当处于大量数据不需要修改时,比如 OLED 的字符库的定义,可以节省 SRAM 的空间

寄存器外设所在的起始地址,然后再在外设寄存器的总表里查询地址偏移量,就可以得到某个寄存器的地址了,这个地址是固定的


首先还是初始化

第一步,RCC 时钟开启 DMA 的时钟

第二步,调用 DMA_Init 初始化各个参数,如果使用的是硬件触发,还需在对应外设调用 XXXDMA_Cmd,开启一下触发信号的输出

最后,打开开关

如果需要 DMA 的中断,那就调用 DMA_ITConfig 开启中断输出,再在 NVIC 里开启相应的通道,再写对应的中断函数

传输计数器清零之后,DMA 失能、写传输计数器、DMA 使能,这样就行了

第二步可以通过结构体配置,这里没有体现通道优先级

 


开启 RCC 时钟时,DMA 是 AHB 总线上的设备,所以用 AHB 开启时钟,跳转定义

这里说的互联型设备,指的是 STM32F105/107 的型号,我们使用的是 STM32F103

 


 第二个程序接线图

DMA 工作的三个条件:1. 传输寄存器不为0 2. DMA 失能 3. 硬件触发下,有触发源

在 DMA 自动重装模式下加上 ADC 的连续模式,可以实现硬件自动化,完全占用软件资源完成这一列操作


本节的代码展示了存储器到存储器,外设到存储器的现象

还有存储器到外设的情况,比如串口发送一大批数据,就可以用 DMA 进行外设到存储器的转运,这个需要自己去研究了

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值