A11 STM32_HAL库函数 之 DMA通用驱动所有函数的介绍及使用

这篇具有很好参考价值的文章主要介绍了A11 STM32_HAL库函数 之 DMA通用驱动所有函数的介绍及使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1 DMA通用驱动预览

序号 函数名 描述
1 HAL_DMA_Init() 初始化DMA通道。
2 HAL_DMA_DeInit() 反初始化DMA通道。
3 HAL_DMA_Start() 启动DMA传输。
4 HAL_DMA_Start_IT() 启动DMA传输并使用中断处理传输完成。
5 HAL_DMA_Abort() 中止DMA传输。
6 HAL_DMA_Abort_IT() 中止DMA传输并使用中断处理中止完成。
7 HAL_DMA_PollForTransfer() 轮询DMA传输是否完成。
8 HAL_DMA_IRQHandler() DMA中断处理程序。
9 HAL_DMA_RegisterCallback() 注册DMA回调函数。
10 HAL_DMA_UnRegisterCallback() 取消注册DMA回调函数。
11 HAL_DMA_GetState() 获取DMA通道的状态。
12 HAL_DMA_GetError() 获取DMA通道的错误状态。

使用模板:

#include "stm32f4xx_hal.h"

int main(void) {
    // HAL初始化
    HAL_Init();
    
    // 初始化DMA通道
    
    // 启动DMA传输
    
    // 进行其他操作...
    
    // 启动DMA传输并使用中断处理传输完成
    HAL_DMA_Start_IT();
    
    // 轮询DMA传输是否完成
    while (HAL_DMA_PollForTransfer() != HAL_OK);
    
    // 中止DMA传输
    HAL_DMA_Abort();
    
    // DMA中断处理程序
    HAL_DMA_IRQHandler();
    
    // 获取DMA通道的状态
    uint32_t dmaState = HAL_DMA_GetState();
    
    // 获取DMA通道的错误状态
    uint32_t dmaError = HAL_DMA_GetError();
    
    // 反初始化DMA通道
    
    return 0;
}

1.1 HAL_DMA_Init

函数名 HAL_DMA_Init
函数原形 HAL_StatusTypeDef HAL_DMA_Init(DMA_HandleTypeDef* hdma)
功能描述 初始化 DMA(直接内存存取)模块
输入参数 hdma:DMA 句柄,指向一个 DMA_HandleTypeDef 结构体
输出参数
返回值 HAL_StatusTypeDef:初始化结果,可以是 HAL_OK 或 HAL_ERROR
先决条件
被调用函数

1.2 HAL_DMA_DeInit

函数名 HAL_DMA_DeInit
函数原形 HAL_StatusTypeDef HAL_DMA_DeInit(DMA_HandleTypeDef* hdma)
功能描述 反初始化 DMA 模块
输入参数 hdma:DMA 句柄,指向一个 DMA_HandleTypeDef 结构体
输出参数
返回值 HAL_StatusTypeDef:反初始化结果,可以是 HAL_OK 或 HAL_ERROR
先决条件
被调用函数

1.3 HAL_DMA_Start

函数名 HAL_DMA_Start
函数原形 HAL_StatusTypeDef HAL_DMA_Start(DMA_HandleTypeDef* hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength)
功能描述 启动 DMA 传输
输入参数 1 hdma:DMA 句柄,指向一个 DMA_HandleTypeDef 结构体
输入参数 2 SrcAddress:源地址
输入参数 3 DstAddress:目的地址
输入参数 4 DataLength:数据长度
输出参数
返回值 HAL_StatusTypeDef:启动结果,可以是 HAL_OK 或 HAL_ERROR
先决条件
被调用函数

1.4 HAL_DMA_Start_IT

函数名 HAL_DMA_Start_IT
函数原形 HAL_StatusTypeDef HAL_DMA_Start_IT(DMA_HandleTypeDef* hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength)
功能描述 启动 DMA 传输,并启用中断
输入参数 1 hdma:DMA 句柄,指向一个 DMA_HandleTypeDef 结构体
输入参数 2 SrcAddress:源地址
输入参数 3 DstAddress:目的地址
输入参数 4 DataLength:数据长度
输出参数
返回值 HAL_StatusTypeDef:启动结果,可以是 HAL_OK 或 HAL_ERROR
先决条件
被调用函数

1.5 HAL_DMA_Abort

函数名 HAL_DMA_Abort
函数原形 HAL_StatusTypeDef HAL_DMA_Abort(DMA_HandleTypeDef* hdma)
功能描述 中止 DMA 传输
输入参数 hdma:DMA 句柄,指向一个 DMA_HandleTypeDef 结构体
输出参数
返回值 HAL_StatusTypeDef:中止结果,可以是 HAL_OK 或 HAL_ERROR
先决条件
被调用函数

1.6 HAL_DMA_Abort_IT

函数名 HAL_DMA_Abort_IT
函数原形 HAL_StatusTypeDef HAL_DMA_Abort_IT(DMA_HandleTypeDef* hdma)
功能描述 中止 DMA 传输,并禁用中断
输入参数 hdma:DMA 句柄,指向一个 DMA_HandleTypeDef 结构体
输出参数
返回值 HAL_StatusTypeDef:中止结果,可以是 HAL_OK 或 HAL_ERROR
先决条件
被调用函数

1.7 HAL_DMA_PollForTransfer

函数名 HAL_DMA_PollForTransfer
函数原形 HAL_StatusTypeDef HAL_DMA_PollForTransfer(DMA_HandleTypeDef* hdma, HAL_DMA_LevelCompleteTypeDef CompleteLevel, uint32_t Timeout)
功能描述 轮询 DMA 传输是否完成
输入参数 1 hdma:DMA 句柄,指向一个 DMA_HandleTypeDef 结构体
输入参数 2 CompleteLevel:完成级别,可以是 HAL_DMA_FULL_TRANSFER 或 HAL_DMA_HALF_TRANSFER
输入参数 3 Timeout:超时时间(以毫秒为单位)
输出参数
返回值 HAL_StatusTypeDef:传输状态,可以是 HAL_OK、HAL_TIMEOUT 或 HAL_ERROR
先决条件
被调用函数

1.8 HAL_DMA_IRQHandler

函数名 HAL_DMA_IRQHandler
函数原形 void HAL_DMA_IRQHandler(DMA_HandleTypeDef* hdma)
功能描述 DMA 中断服务函数
输入参数 hdma:DMA 句柄,指向一个 DMA_HandleTypeDef 结构体
输出参数
返回值
先决条件
被调用函数

1.9 HAL_DMA_RegisterCallback

函数名 HAL_DMA_RegisterCallback
函数原形 HAL_StatusTypeDef HAL_DMA_RegisterCallback(DMA_HandleTypeDef* hdma, HAL_DMA_CallbackIDTypeDef CallbackID, pDMA_CallbackTypeDef pCallback)
功能描述 注册 DMA 回调函数
输入参数 1 hdma:DMA 句柄,指向一个 DMA_HandleTypeDef 结构体
输入参数 2 CallbackID:回调函数类型,可以是 HAL_DMA_XFER_CPLT_CB_ID、HAL_DMA_XFER_HALFCPLT_CB_ID、HAL_DMA_XFER_ERROR_CB_ID 或 HAL

_DMA_XFER_ABORT_CB_ID |
| 输入参数 3 | pCallback:指向要注册的回调函数的指针 |
| 输出参数 | 无 |
| 返回值 | HAL_StatusTypeDef:注册结果,可以是 HAL_OK 或 HAL_ERROR |
| 先决条件 | 无 |
| 被调用函数 | 无 |


1.10 HAL_DMA_UnRegisterCallback

函数名 HAL_DMA_UnRegisterCallback
函数原形 HAL_StatusTypeDef HAL_DMA_UnRegisterCallback(DMA_HandleTypeDef* hdma, HAL_DMA_CallbackIDTypeDef CallbackID)
功能描述 注销 DMA 回调函数
输入参数 1 hdma:DMA 句柄,指向一个 DMA_HandleTypeDef 结构体
输入参数 2 CallbackID:回调函数类型,可以是 HAL_DMA_XFER_CPLT_CB_ID、HAL_DMA_XFER_HALFCPLT_CB_ID、HAL_DMA_XFER_ERROR_CB_ID 或 HAL_DMA_XFER_ABORT_CB_ID
输出参数
返回值 HAL_StatusTypeDef:注销结果,可以是 HAL_OK 或 HAL_ERROR
先决条件
被调用函数

1.11 HAL_DMA_GetState

函数名 HAL_DMA_GetState
函数原形 uint32_t HAL_DMA_GetState(DMA_HandleTypeDef* hdma)
功能描述 获取 DMA 当前状态
输入参数 hdma:DMA 句柄,指向一个 DMA_HandleTypeDef 结构体
输出参数
返回值 uint32_t:DMA 当前状态,可能的值有:
                            - HAL_DMA_STATE_RESET:复位状态
                            - HAL_DMA_STATE_READY:就绪状态
                            - HAL_DMA_STATE_BUSY:忙碌状态
                            - HAL_DMA_STATE_TIMEOUT:超时状态
                            - HAL_DMA_STATE_ERROR:错误状态 |

| 先决条件 | 无 |
| 被调用函数 | 无 |


1.12 HAL_DMA_GetError

函数名 HAL_DMA_GetError
函数原形 uint32_t HAL_DMA_GetError(DMA_HandleTypeDef *hdma)
功能描述 获取 DMA 错误状态
输入参数 hdma:DMA 句柄,指向一个 DMA_HandleTypeDef 结构体
输出参数
返回值 uint32_t:DMA 错误状态,可能的值有:
                            - HAL_DMA_ERROR_NONE:无错误
                            - HAL_DMA_ERROR_TE:传输错误
                            - HAL_DMA_ERROR_FE:FIFO错误
                            - HAL_DMA_ERROR_DME:直接模式错误
                            - HAL_DMA_ERROR_TIMEOUT:传输超时错误 |

| 先决条件 | 无 |
| 被调用函数 | 无 |

该文档修改记录:

修改时间 修改说明
2024年4月11日 第一次发布,介绍了A11 STM32_HAL库函数 之 DMA通用驱动所有函数的介绍及使用

总结

以上就是A11 STM32_HAL库函数 之 DMA通用驱动所有函数的介绍及使用的内容。
有不明白的地方欢迎留言;有建议欢迎留言,我后面编写文档好改进。
创作不容,如果文档对您有帮助,记得给个赞。
文章来源地址https://www.toymoban.com/news/detail-848586.html

到了这里,关于A11 STM32_HAL库函数 之 DMA通用驱动所有函数的介绍及使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • STM32HAL库驱动DHT11和BH1750

    STM32HAL库驱动DHT11和BH1750

    stm32f103c8t6 DHT11(温湿度传感器) BH1750(光照度传感器) OLED micro USB数据传输线 sys-Debug-Serial Wrie RCC-HSE-Crystal/Cerarnic Resonator PC13-GPIO_Out TIM1-Clock Source-Internal Clock Parameter Settings 为后面DHT11的延时us起作用 TIM2-Clock Source-Internal Clock Parameter Settings NVIC Settings-TIM2 global interrupt Enabled 打开I2C

    2024年02月01日
    浏览(8)
  • STM32系列(HAL库)——F103C8T6驱动WS2812全彩RGB模块(PWM+DMA方式)

    STM32系列(HAL库)——F103C8T6驱动WS2812全彩RGB模块(PWM+DMA方式)

    (1)编程平台:Keil5 (2)CubeMX (1)某宝买的RGB模块(4个灯珠级联) (2)F1的板子,本例使用经典F103C8T6 (3)ST-link 下载器 (4)杜邦线若干 (1)模块简介: 没什么比手册讲得更加清楚了,模块中文数据手册:ws2812b中文资料_数据手册_参数 (2)驱动原理:          以上这是数据手册中提到

    2023年04月11日
    浏览(11)
  • 【STM32】HAL库 STM32CubeMX——DMA (串口DMA发送接收)

    【STM32】HAL库 STM32CubeMX——DMA (串口DMA发送接收)

    软件: STM32CubeMX KEIL5 mcuisp 串口通信助手 硬件: STM32F103C8Tx 杜邦线,面包板,USB转TTL DMA,全称Direct Memory Access,即直接存储器访问。 DMA传输将数据从一个地址空间复制到另一个地址空间,提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。 我们知道系统的运

    2024年02月12日
    浏览(10)
  • STM32 HAL DMA中断配置

    STM32 HAL DMA中断配置

    使用HAL库方式DMA中断时,在网上找了好多资料都没有怎么介绍。所以就自己研究了一下,并做个记录。我的芯片型号是STM32G030。下面我以I2C传数据为例介绍下HAL库是如何使用DMA中断的。 我使用的是I2C2,简单配置下参数,加上DMA通道。 DMA貌似默认开启了中断,蓝色的勾勾是我

    2024年04月23日
    浏览(13)
  • 【STM32】CUBEMX之串口:串口三种模式(轮询模式、中断模式、DMA模式)的配置与使用示例 + 串口重定向 + 使用HAL扩展函数实现不定长数据接收

    【STM32】CUBEMX之串口:串口三种模式(轮询模式、中断模式、DMA模式)的配置与使用示例 + 串口重定向 + 使用HAL扩展函数实现不定长数据接收

    目录   总览 使用CUBEMX创建工程的基本配置 CUBEMX中的配置 Keil中的配置 实物连接 串口轮询模式 轮询模式HAL库函数 特点 实验一:发送数据给单片机并让其返回相同值 串口重定向 串口中断模式 在CUBEMX中打开串口中断 中断模式HAL库函数 特点 实验二:使用中断回调完成实验一

    2024年04月10日
    浏览(26)
  • STM32 HAL库 ADC+DMA

    STM32 HAL库 ADC+DMA

       软件触发:STM32 HAL库 软件触发ADC 多通道连续转换_随风飘零翼的博客-CSDN博客 配置如图      注意采样周期不要过小,不然频繁中断会导致在RTOS中卡死 写了部分关键代码,在两个任务中OLED和串口打印分别显示的通道值。 后来发现使用的杜邦线接触不良,固定好之后,接

    2024年02月14日
    浏览(6)
  • 【STM32+HAL】DAC+DMA输出波形实现

    【STM32+HAL】DAC+DMA输出波形实现

    有关CUBEMX的初始化配置,参见我的另一篇blog:【STM32+HAL】CUBEMX初始化配置 1、芯片: STM32F407ZGT6 2、STM32CubeMx软件 3、IDE: MDK-Keil软件 4、STM32F4xxHAL库 1、DAC+DMA输出波形 2、按键切换波形及频率 3、串口打印当前波形以及频率值 1、开启DAC 这里开启的是通道一 Output Buffer:关闭后可

    2024年02月02日
    浏览(9)
  • STM32 HAL库 通用定时器介绍及相关应用例程 定时器中断 输出PWM (点亮LED呼吸灯、输出PWM、输入捕获) CubeMX

    STM32 HAL库 通用定时器介绍及相关应用例程 定时器中断 输出PWM (点亮LED呼吸灯、输出PWM、输入捕获) CubeMX

    (部分图引自于ATK) 前情提要(基本定时器) 点此进入 通用定时器类别 通用定时器和基本定时器相比大致的工作方式是相似的,不过通用定时器比基本定时器多了一些很好用的功能,比如: 外部输入捕获 输出比较 输出PWM 时钟源 CubeMX为我们提供了配置时钟的非常方便的工

    2024年04月15日
    浏览(17)
  • STM32-UART-DMA HAL库缓冲收发

    STM32-UART-DMA HAL库缓冲收发

    1.1、注意事项: HAL库的DMA底层基本都会默认开启中断使能,如果在STM32CubeMx禁用了中断相关的功能,程序可能会进入空中断回调出不来。 切记使用STM32-HAL库的DMA发送时需要开启USART中断和DMA中断。 在一般时间要求不是很高很高的场合,使用HAL库自带的函数就可以,并不会很频

    2024年01月18日
    浏览(17)
  • STM32—HAL库中断/DMA控制和完成串口通信

    STM32—HAL库中断/DMA控制和完成串口通信

    目录 一、解决的问题 二、串口通讯协议和RS-232的介绍以及USB/TTL转232模块的工作原理   1、 串口协议和RS-232标准:  (1)串口协议: (2)RS-232 标准:   2、RS232电平与TTL电平的区别   3、USB/TTL转232“模块(CH340芯片为例)  (1)基本原理:  (2)CH340模块介绍: ​三、搭

    2024年02月02日
    浏览(9)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包