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_Init();
HAL_DMA_Start_IT();
while (HAL_DMA_PollForTransfer() != HAL_OK);
HAL_DMA_Abort();
HAL_DMA_IRQHandler();
uint32_t dmaState = HAL_DMA_GetState();
uint32_t dmaError = HAL_DMA_GetError();
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通用驱动所有函数的介绍及使用的内容。
有不明白的地方欢迎留言;有建议欢迎留言,我后面编写文档好改进。
创作不容,如果文档对您有帮助,记得给个赞。