这篇具有很好参考价值的文章主要介绍了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:传输超时错误 |
| 先决条件 | 无 |
| 被调用函数 | 无 |文章来源:https://www.toymoban.com/news/detail-848586.html
该文档修改记录:
修改时间 |
修改说明 |
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模板网!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!