stm32学习随记:DMA使用(HAL库)
2019-07-29 16:23
246 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_38956024/article/details/97623388
1、stm32f103 有两个DMA
2、DMA1 有 7个通道, DMA2有5个通道。同一时间内是能使用一个通道,所以要设定好优先级。
可以在 DMA_CCRx 寄存器中设 置,有最高优先级、高优先级、中等优先级和低优先级四个等级。
第二阶段 是硬件,如果两个请求有相同的软件优先级,则较低编号的通道比高编号的 通道有较高的优先权。例如:通道 2 优先于通道 4。
3、DMA 通道,每个通道都可以在由固定地址的外设寄存器和存储器之间执行 DMA 传输。 所以,我们要找到外设寄存器存放数据的地址 和 存储的变量的地址。
4、DMA有三种中断方式: 传输过半,传输完成和传输错误。
5、HAL函数部分,用stm32cube设置好DMA后,查看一下DMA的初始化。
[code]01 typedef struct { 02 uint32_t Direction; // 方向 03 uint32_t PeriphInc; // 寄存器自增 04 uint32_t MemInc; // 内存自增 05 uint32_t PeriphDataAlignment; // 寄存器数据对齐 06 uint32_t MemDataAlignment; // 内存数据对齐 07 uint32_t Mode; // 模式 08 uint32_t Priority; // 优先级 09 } DMA_InitTypeDef; Direction:传输方向,有三种,分别是外设到存储器、存储器到外设和存储 器到存储器,根据工程要求来选择三种传输方向。 PeriphInc:配置外设地址寄存器是否要自动递增,这里配置为递增 MemInc:使能存储器地址自动递增功能。我们自定义的存储器一般都是存放 多个数据的,所以使能存储器地址自动递增功能。 PeriphDataAlignment:外设数据长度调整,有三种分别是字节、字和半字,配 置为字节。 MemDataAlignment:存储器数据字长调整,类似外设。 Mode:配置传输模式,配置为常规类型。 Priority:优先权,配置为高。
相关文章推荐
- STM32学习笔记之DMA使用
- STM32采用HAL库使用usart_DMA问题
- STM32 使用HAL库做串口的DMA发送和中断接收
- STM32 使用DMA处理ADC 学习笔记!!
- STM32学习日志--使用DMA功能自动更新PWM的输出
- STM32 HAL库DMA串口使用问题集锦
- 【STM32学习】 串口接收数据 使用串口空闲中断与DMA
- STM32学习——STM32 独立看门狗的使用
- STM32-USART DMA_Interrupt例程的学习
- 个人学习stm32 DMA_AD采集温度
- 浅谈STM32的DMA模块的使用
- STM32学习笔记——使用函数库编程控制GPIO口输出
- stm32 内部AD和DMA使用
- STM32DMA使用详解
- 浅谈STM32的DMA模块的使用
- STM32学习(一)—STM32固件库的使用
- stm32学习笔记——DMA
- STM32使用DMA加串口空闲中断接收数据
- STM32学习笔记之fatfs文件系统接口函数使用
- STM32 SPI DMA 的使用