DMA驱动API描述
DMA驱动的API主要包括:
| 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
| 函数原型 | 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
| 函数原型 | hal_status_t hal_dma_deinit(dma_handle_t *p_dma) |
|---|---|
| 功能说明 | 反初始化DMA外设。 |
| 输入参数 | p_dma:指向dma_handle_t结构体变量的指针,该结构体变量包含指定的DMA通道的配置信息。 |
| 返回值 | HAL状态。 |
| 备注 |
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
| 函数原型 | 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
| 函数原型 | hal_status_t hal_dma_abort(dma_handle_t *p_dma) |
|---|---|
| 功能说明 | 中止DMA传输。 |
| 输入参数 | p_dma:指向dma_handle_t结构体变量的指针,该结构体变量包含指定的DMA通道的配置信息。 |
| 返回值 | HAL状态。 |
| 备注 |
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
| 函数原型 | 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
| 函数原型 | void hal_dma_irq_handler(dma_handle_t *p_dma) |
|---|---|
| 功能说明 | 处理DMA中断请求。 |
| 输入参数 | p_dma:指向dma_handle_t结构体变量的指针,该结构体变量包含指定的DMA通道的配置信息。 |
| 返回值 | 无 |
| 备注 |
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:回调类型标识,该参数可以是下列值中的任意一个:
callback:指向私有回调函数的指针。 |
| 返回值 | HAL状态。 |
| 备注 |
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状态。 |
| 备注 |
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_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_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
| 函数原型 | hal_status_t hal_dma_resume_reg(dma_handle_t *p_dma); |
|---|---|
| 功能说明 | 唤醒时恢复与DMA配置相关的寄存器 |
| 输入参数 | p_dma:指向dma_handle_t结构体变量的指针,该结构体变量包含指定的DMA通道的配置信息。 |
| 返回值 | HAL状态 |
| 备注 |