|
STM32G474xx HAL 用户手册
|
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 操作函数 + 外设状态和错误函数。
版权所有 (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。
1.7.6.1