__HAL_LINKDMA与HAL_DMA_Start的区别
时间: 2023-11-22 15:54:25 浏览: 287
`HAL_LINKDMA` 和 `HAL_DMA_Start` 都是 STM32 HAL 库中与 DMA 相关的函数。它们的作用不同,具体说明如下:
1. `HAL_LINKDMA` 函数
`HAL_LINKDMA` 函数用于将 DMA 通道与外设或者内存进行绑定,以实现 DMA 传输。其函数原型如下:
```c
HAL_DMA_Linkedlist_TypeDef HAL_LINKDMA (DMA_HandleTypeDef *hdma, DMA_ListNode_TypeDef *listNode);
```
其中,`hdma` 是 DMA 句柄,`listNode` 是 DMA 链表节点。此函数的作用是将 `hdma` 和 `listNode` 进行绑定,以实现 DMA 传输。该函数常用于实现 DMA 循环传输,即将多个 DMA 通道链接在一起,循环传输数据。
2. `HAL_DMA_Start` 函数
`HAL_DMA_Start` 函数用于启动 DMA 传输。其函数原型如下:
```c
HAL_StatusTypeDef HAL_DMA_Start (DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength);
```
其中,`hdma` 是 DMA 句柄,`SrcAddress` 是源地址,`DstAddress` 是目的地址,`DataLength` 是传输数据长度。此函数的作用是启动 DMA 传输,将源地址的数据传输到目的地址。
综上所述,`HAL_LINKDMA` 和 `HAL_DMA_Start` 的作用不同,`HAL_LINKDMA` 用于将 DMA 通道与外设或者内存进行绑定,以实现 DMA 传输;`HAL_DMA_Start` 用于启动 DMA 传输,将源地址的数据传输到目的地址。
阅读全文