CN / EN
文档反馈
感谢关注汇顶文档,期待您的宝贵建议!
感谢您的反馈,祝您愉快!
无匹配项 共计114个匹配页面

DMA驱动API描述

DMA驱动的API主要包括:

表 124 DMA驱动的APIs
API类别 API名称 描述

初始化

hal_dma_init()

初始化DMA外设的指定通道,配置外设及目的外设的参数。

hal_dma_deinit()

反初始化DMA外设的指定通道。

IO操作

hal_dma_start()

启动DMA传输,轮询方式,传输完成时无中断。

hal_dma_start_it()

启动DMA传输,中断方式,传输完成时触发中断。

hal_dma_poll_for_transfer()

轮询DMA传输,传输完成时退出该函数,与hal_dma_start()配合使用。

hal_dma_abort()

中止传输,中止完成时不调用中止完成回调函数。

hal_dma_abort_it()

中止传输,中止完成时调用中止完成回调函数。

中断处理及回调函数

hal_dma_irq_handler()

中断处理函数。

hal_dma_register_callback()

注册DMA的中断回调函数。

hal_dma_unregister_callback()

注销DMA的中断回调函数。

状态及错误

hal_dma_get_state()

获取驱动运行状态。

hal_dma_get_error()

获取错误码。

睡眠相关

hal_dma_suspend_reg()

睡眠时挂起与DMA配置相关的寄存器。

hal_dma_resume_reg()

唤醒时恢复与DMA配置相关的寄存器。

下面章节将对各API进行详细描述。

hal_dma_init

表 125 hal_dma_init接口
函数原型

hal_status_t hal_dma_init(dma_handle_t *p_dma)

功能说明

根据dma_init_t中的指定参数初始化DMA外设的指定通道。

输入参数

p_dma:指向dma_handle_t结构体变量的指针,该结构体变量包含指定的DMA通道的配置信息。

返回值

HAL状态。

备注

该函数只对DMA通道进行初始化配置,可调用hal_dma_start()hal_dma_start_it()进行DMA传输。

hal_dma_deinit

表 126 hal_dma_deinit接口
函数原型

hal_status_t hal_dma_deinit(dma_handle_t *p_dma)

功能说明

反初始化DMA外设。

输入参数

p_dma:指向dma_handle_t结构体变量的指针,该结构体变量包含指定的DMA通道的配置信息。

返回值

HAL状态。

备注

hal_dma_start

表 127 hal_dma_start接口
函数原型

hal_status_t hal_dma_start(dma_handle_t *p_dma, uint32_t src_address, uint32_t dst_address, uint32_t data_length)

功能说明

开始DMA传输。

输入参数

p_dma:指向dma_handle_t结构体变量的指针,该结构体变量包含指定的DMA通道的配置信息。

src_address:源内存缓冲区地址,该地址必须与hal_dma_init()配置的src_data_alignment对齐。

dst_address:目的内存缓冲区地址,该地址必须与hal_dma_init()配置的dst_data_alignment对齐。

data_length:从源到目的地传输的数据的长度,该长度的最小数据单元与src_data_alignment相同。

返回值

HAL状态。

备注

hal_dma_start_it

表 128 hal_dma_start_it接口
函数原型

hal_status_t hal_dma_start_it(dma_handle_t *p_dma, uint32_t src_address, uint32_t dst_address, uint32_t data_length)

功能说明

使能DMA传输并使能中断。

输入参数

p_dma:指向dma_handle_t结构体变量的指针,该结构体变量包含指定的DMA通道的配置信息。

src_address:源内存缓冲区地址,该地址必须与hal_dma_init()配置的src_data_alignment对齐。

dst_address:目的内存缓冲区地址,该地址必须与hal_dma_init()配置的dst_data_alignment对齐。

data_length:从源到目的地传输的数据的长度,该地址必须与hal_dma_init()配置的src_data_alignment对齐。

返回值

HAL状态。

备注

hal_dma_abort

表 129 hal_dma_abort接口
函数原型

hal_status_t hal_dma_abort(dma_handle_t *p_dma)

功能说明

中止DMA传输。

输入参数

p_dma:指向dma_handle_t结构体变量的指针,该结构体变量包含指定的DMA通道的配置信息。

返回值

HAL状态。

备注

hal_dma_abort_it

表 130 hal_dma_abort_it接口
函数原型

hal_status_t hal_dma_abort_it(dma_handle_t *p_dma)

功能说明

在中断模式下中止DMA传输。

输入参数

p_dma:指向dma_handle_t结构体变量的指针,该结构体变量包含指定的DMA通道的配置信息。

返回值

HAL状态。

备注

hal_dma_poll_for_transfer

表 131 hal_dma_poll_for_transfer接口
函数原型

hal_status_t hal_dma_poll_for_transfer(dma_handle_t *p_dma, uint32_t timeout)

功能说明

轮询传输完成。

输入参数

p_dma:指向dma_handle_t结构体变量的指针,该结构体变量包含指定的DMA通道的配置信息。

timeout:超时时间。

返回值

HAL状态。

备注

hal_dma_irq_handler

表 132 hal_dma_irq_handler接口
函数原型

void hal_dma_irq_handler(dma_handle_t *p_dma)

功能说明

处理DMA中断请求。

输入参数

p_dma:指向dma_handle_t结构体变量的指针,该结构体变量包含指定的DMA通道的配置信息。

返回值

备注

hal_dma_register_callback

表 133 hal_dma_register_callback接口
函数原型

hal_status_t hal_dma_register_callback(dma_handle_t *p_dma, hal_dma_callback_id_t id, void (* callback)( dma_handle_t *p_dma))

功能说明

注册回调函数。

输入参数

p_dma:指向dma_handle_t结构体变量的指针,该结构体变量包含指定的DMA通道的配置信息。

id:回调类型标识,该参数可以是下列值中的任意一个:

  • HAL_DMA_XFER_TFR_CB_ID(传输完成回调函数ID)
  • HAL_DMA_XFER_BLK_CB_ID(块传输完成回调函数ID)
  • HAL_DMA_XFER_ABORT_CB_ID(中止完成回调函数ID)

callback:指向私有回调函数的指针。

返回值

HAL状态。

备注

hal_dma_unregister_callback

表 134 hal_dma_unregister_callback接口
函数原型

hal_status_t hal_dma_unregister_callback(dma_handle_t *p_dma, hal_dma_callback_id_t callback_id)

功能说明

注销回调函数。

输入参数

p_dma:指向dma_handle_t结构体变量的指针,该结构体变量包含指定的DMA通道的配置信息。

callback_id:回调类型标识,该参数可以是下列值中的任意一个:

  • HAL_DMA_XFER_TFR_CB_ID(传输完成回调函数ID)
  • HAL_DMA_XFER_BLK_CB_ID(块传输完成回调函数ID)
  • HAL_DMA_XFER_ABORT_CB_ID(中止完成回调函数ID)
  • HAL_DMA_XFER_ALL_CB_ID(所有的完成回调函数ID)
返回值

HAL状态。

备注

hal_dma_get_state

表 135 hal_dma_get_state接口
函数原型

hal_dma_state_t hal_dma_get_state(dma_handle_t *p_dma)

功能说明

获取DMA运行状态。

输入参数

p_dma:指向dma_handle_t结构体变量的指针,该结构体变量包含指定的DMA通道的配置信息。

返回值

DMA运行状态,该参数的取值可能是下列值中的任意一个:

  • HAL_DMA_STATE_RESET(未初始化)
  • HAL_DMA_STATE_READY(已初始化且空闲)
  • HAL_DMA_STATE_BUSY(忙)
  • HAL_DMA_STATE_TIMEOUT(超时)
  • HAL_DMA_STATE_ERROR(错误)
备注

hal_dma_get_error

表 136 hal_dma_get_error接口
函数原型

hal_dma_state_t hal_dma_get_state(dma_handle_t *p_dma)

功能说明

获取DMA 错误码。

输入参数

p_dma:指向dma_handle_t结构体变量的指针,该结构体变量包含指定的DMA通道的配置信息。

返回值

DMA错误码,该参数的取值可能是下列值中的任意一个:

  • HAL_DMA_ERROR_NONE(无错误)
  • HAL_DMA_ERROR_TE(传输错误)
  • HAL_DMA_ERROR_NO_XFER(无正在进行的数据传输)
  • HAL_DMA_ERROR_TIMEOUT(超时)
备注

hal_dma_suspend_reg

表 137 hal_dma_suspend_reg接口
函数原型

hal_status_t hal_dma_suspend_reg(dma_handle_t *p_dma)

功能说明

睡眠时挂起与DMA配置相关的寄存器

输入参数

p_dma:指向dma_handle_t结构体变量的指针,该结构体变量包含指定的DMA通道的配置信息。

返回值

HAL状态

备注

hal_dma_resume_reg

表 138 hal_dma_resume_reg接口
函数原型

hal_status_t hal_dma_resume_reg(dma_handle_t *p_dma);

功能说明

唤醒时恢复与DMA配置相关的寄存器

输入参数

p_dma:指向dma_handle_t结构体变量的指针,该结构体变量包含指定的DMA通道的配置信息。

返回值

HAL状态

备注

扫描关注

打开微信,使用“扫一扫”即可关注。