STM32 DMA 初始化函数 DMA_Init() 参数详解

DMA_Init(DMA_Channel_TypeDef* DMAy_Channelx, DMA_InitTypeDef* DMA_InitStruct)

该函数用于初始化 STM32 的 DMA 通道。

参数说明:

  • DMAy_Channelx:表示要初始化的 DMA 通道,可以是 DMA1_ChannelxDMA2_Channelx
  • DMA_InitStruct:表示 DMA 初始化的参数结构体,包含了 DMA 通道的配置信息,包括数据传输方向、数据宽度、传输模式等。通过这个结构体来配置 DMA 通道的工作模式和参数

DMA_InitStruct 结构体包含的成员变量以及作用:

  • DMA_Mode: 表示 DMA 的传输模式,可以是以下几种:
    • DMA_Mode_Normal:单次传输模式,传输完一批数据后停止。
    • DMA_Mode_Circular:循环传输模式,传输完一批数据后自动从头开始传输。
    • DMA_Mode_DoubleBuffer:双缓冲传输模式,使用两个缓冲区交替进行数据传输,提高效率。
  • DMA_PeripheralBaseAddr: 表示外设的基地址,即要进行数据传输的外设的内存地址。
  • DMA_MemoryBaseAddr: 表示存储器的基地址,即数据传输的目的地或来源的内存地址。
  • DMA_DIR: 表示数据传输的方向,可以是以下几种:
    • DMA_DIR_PeripheralToMemory: 从外设到存储器。
    • DMA_DIR_MemoryToPeripheral: 从存储器到外设。
    • DMA_DIR_MemoryToMemory: 内存到内存之间的传输。
  • DMA_BufferSize: 表示要传输的数据的大小,以字节为单位。
  • DMA_PeripheralInc: 表示是否使能外设地址增量模式,即在数据传输过程中,外设的地址是否自动增加。
    • DMA_PeripheralInc_Disable: 不使能。
    • DMA_PeripheralInc_Enable: 使能。
  • DMA_MemoryInc: 表示是否使能存储器地址增量模式,即在数据传输过程中,存储器的地址是否自动增加。
    • DMA_MemoryInc_Disable: 不使能。
    • DMA_MemoryInc_Enable: 使能。
  • DMA_PeripheralDataSize: 表示外设数据的宽度,可以是以下几种:
    • DMA_PeripheralDataSize_Byte: 字节。
    • DMA_PeripheralDataSize_HalfWord: 半字。
    • DMA_PeripheralDataSize_Word: 字。
  • DMA_MemoryDataSize: 表示存储器数据的宽度,可以是以下几种:
    • DMA_MemoryDataSize_Byte: 字节。
    • DMA_MemoryDataSize_HalfWord: 半字。
    • DMA_MemoryDataSize_Word: 字。
  • DMA_Priority: 表示 DMA 通道的优先级,可以是以下几种:
    • DMA_Priority_Low: 低优先级。
    • DMA_Priority_Medium: 中等优先级。
    • DMA_Priority_High: 高优先级。
    • DMA_Priority_VeryHigh: 非常高优先级。
  • DMA_M2M: 表示是否是内存到内存的传输模式,如果是,DMA_PeripheralBaseAddr 参数将被忽略,数据直接在存储器之间传输,不需要通过外设。
    • DMA_M2M_Disable: 不是内存到内存传输。
    • DMA_M2M_Enable: 是内存到内存传输。

通过以上参数的配置,可以灵活地设置 DMA 通道的工作模式,实现不同的数据传输需求。


原文地址: https://www.cveoy.top/t/topic/brhi 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录