STM32G474xx HAL 用户手册
函数
stm32g4xx_hal_dma.c 文件参考

DMA HAL 模块驱动程序。此文件提供固件函数,用于管理直接存储器访问 (DMA) 外设的以下功能:+ 初始化和反初始化函数 + IO 操作函数 + 外设状态和错误函数。 更多...

#include "stm32g4xx_hal.h"

转到此文件的源代码。

函数

static void DMA_SetConfig (DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength)
 设置 DMA 传输参数。
static void DMA_CalcDMAMUXChannelBaseAndMask (DMA_HandleTypeDef *hdma)
 根据流号更新 DMA 句柄的 DMAMUX 通道和状态掩码。
static void DMA_CalcDMAMUXRequestGenBaseAndMask (DMA_HandleTypeDef *hdma)
 更新 DMA 句柄的 DMAMUX 请求生成器参数。
HAL_StatusTypeDef HAL_DMA_Init (DMA_HandleTypeDef *hdma)
 根据 DMA_InitTypeDef 中指定的参数初始化 DMA,并初始化关联的句柄。
HAL_StatusTypeDef HAL_DMA_DeInit (DMA_HandleTypeDef *hdma)
 反初始化 DMA 外设。
HAL_StatusTypeDef HAL_DMA_Start (DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength)
 启动 DMA 传输。
HAL_StatusTypeDef HAL_DMA_Start_IT (DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength)
 启动 DMA 传输并使能中断。
HAL_StatusTypeDef HAL_DMA_Abort (DMA_HandleTypeDef *hdma)
 中止 DMA 传输。
HAL_StatusTypeDef HAL_DMA_Abort_IT (DMA_HandleTypeDef *hdma)
 在中断模式下中止 DMA 传输。
HAL_StatusTypeDef HAL_DMA_PollForTransfer (DMA_HandleTypeDef *hdma, HAL_DMA_LevelCompleteTypeDef CompleteLevel, uint32_t Timeout)
 轮询传输完成。
void HAL_DMA_IRQHandler (DMA_HandleTypeDef *hdma)
 处理 DMA 中断请求。
HAL_StatusTypeDef HAL_DMA_RegisterCallback (DMA_HandleTypeDef *hdma, HAL_DMA_CallbackIDTypeDef CallbackID, void(*pCallback)(DMA_HandleTypeDef *_hdma))
 注册回调函数。
HAL_StatusTypeDef HAL_DMA_UnRegisterCallback (DMA_HandleTypeDef *hdma, HAL_DMA_CallbackIDTypeDef CallbackID)
 取消注册回调函数。
HAL_DMA_StateTypeDef HAL_DMA_GetState (DMA_HandleTypeDef *hdma)
 返回 DMA 句柄状态。
uint32_t HAL_DMA_GetError (DMA_HandleTypeDef *hdma)
 返回 DMA 错误代码。

详细描述

DMA HAL 模块驱动程序。此文件提供固件函数,用于管理直接存储器访问 (DMA) 外设的以下功能:+ 初始化和反初始化函数 + IO 操作函数 + 外设状态和错误函数。

作者:
MCD Application Team
注意:

版权所有 (c) 2019 STMicroelectronics。保留所有权利。

本软件的许可条款可在本软件组件根目录下的 LICENSE 文件中找到。如果本软件未附带 LICENSE 文件,则按原样提供。

  ==============================================================================
                        ##### 如何使用此驱动程序 #####
  ==============================================================================
  [..]
   (#) 使能并配置要连接到DMA通道的外设
       (内部SRAM / FLASH存储器除外:无需初始化)。
       请参阅参考手册了解外设与DMA请求之间的连接。

   (#) 对于给定的通道,通过以下参数编程所需的配置:
       通道请求、传输方向、源和目标数据格式、
       循环或正常模式、通道优先级、源和目标递增模式,
       使用 HAL_DMA_Init() 函数。

       在调用 HAL_DMA_Init 之前,应为 DMA 和 DMAMUX 使能外设时钟,
       通过以下方式:
      (##) DMA1 或 DMA2:__HAL_RCC_DMA1_CLK_ENABLE() 或 __HAL_RCC_DMA2_CLK_ENABLE();
      (##) DMAMUX1:      __HAL_RCC_DMAMUX1_CLK_ENABLE();

   (#) 使用 HAL_DMA_GetState() 函数返回 DMA 状态,使用 HAL_DMA_GetError() 检测错误。

   (#) 使用 HAL_DMA_Abort() 函数中止当前传输

     -@-   在内存到内存传输模式下,不允许使用循环模式。

     *** 轮询模式 IO 操作 ***
     =================================
    [..]
          (+) 使用 HAL_DMA_Start() 在配置源地址、目标地址和要传输的数据长度后启动 DMA 传输
          (+) 使用 HAL_DMA_PollForTransfer() 轮询当前传输的结束,在这种情况下,
              用户可以根据其应用配置固定的超时时间。

     *** 中断模式 IO 操作 ***
     ===================================
    [..]
          (+) 使用 HAL_NVIC_SetPriority() 配置 DMA 中断优先级
          (+) 使用 HAL_NVIC_EnableIRQ() 使能 DMA IRQ 处理程序
          (+) 使用 HAL_DMA_Start_IT() 在配置源地址、目标地址和要传输的数据长度后启动 DMA 传输。
              在这种情况下,DMA 中断已配置
          (+) 在 DMA_IRQHandler() 中断子程序下调用 HAL_DMA_IRQHandler()
          (+) 在数据传输结束时,执行 HAL_DMA_IRQHandler() 函数,用户可以
              添加自己的函数,使用 HAL_DMA_RegisterCallback() 注册回调。

     *** DMA HAL 驱动程序宏列表 ***
     =============================================
      [..]
       以下是 DMA HAL 驱动程序中的宏列表。

       (+) __HAL_DMA_ENABLE:使能指定的 DMA 通道。
       (+) __HAL_DMA_DISABLE:禁用指定的 DMA 通道。
       (+) __HAL_DMA_GET_FLAG:获取 DMA 通道待处理标志。
       (+) __HAL_DMA_CLEAR_FLAG:清除 DMA 通道待处理标志。
       (+) __HAL_DMA_ENABLE_IT:使能指定的 DMA 通道中断。
       (+) __HAL_DMA_DISABLE_IT:禁用指定的 DMA 通道中断。
       (+) __HAL_DMA_GET_IT_SOURCE:检查指定的 DMA 通道中断是否已发生。

     [..]
      (@) 您可以参考 DMA HAL 驱动程序头文件以获取更多有用的宏

  

定义于文件 stm32g4xx_hal_dma.c