当前位置: 首页 > news >正文

HAL库源码移植与使用之DMA

内存到内存不支持传输计数器自动重装 

结构:

与DMA具有连线的外设都可以完成搬运

 DMA触发源

 

DMA优先级分配

由仲裁器来决定

 寄存器作用:

DMA.C 

#include "./BSP/DMA/dma.h"
#include "./SYSTEM/delay/delay.h"DMA_HandleTypeDef  g_dma_handle;            /* DMA句柄 */
extern UART_HandleTypeDef g_uart1_handle;   /* UART句柄 *//*** @brief       串口TX DMA初始化函数*   @note      这里的传输形式是固定的, 这点要根据不同的情况来修改*              从存储器 -> 外设模式/8位数据宽度/存储器增量模式** @param       dmax_chy    : DMA的通道, DMA1_Channel1 ~ DMA1_Channel7, DMA2_Channel1 ~ DMA2_Channel5*                            某个外设对应哪个DMA, 哪个通道, 请参考<<STM32中文参考手册 V10>> 10.3.7节*                            必须设置正确的DMA及通道, 才能正常使用! * @retval      无*/
void dma_init(DMA_Channel_TypeDef* DMAx_CHx)
{if ((uint32_t)DMAx_CHx > (uint32_t)DMA1_Channel7)     /* 大于DMA1_Channel7, 则为DMA2的通道了 */{__HAL_RCC_DMA2_CLK_ENABLE();                      /* DMA2时钟使能 */}else {__HAL_RCC_DMA1_CLK_ENABLE();                      /* DMA1时钟使能 */}__HAL_LINKDMA(&g_uart1_handle, hdmatx, g_dma_handle);           /* 将DMA与USART1联系起来(发送DMA) *//* Tx DMA配置 */g_dma_handle.Instance = DMAx_CHx;                               /* USART1_TX使用的DMA通道为: DMA1_Channel4 */g_dma_handle.Init.Direction = DMA_MEMORY_TO_PERIPH;             /* DIR = 1 , 存储器到外设模式 */g_dma_handle.Init.PeriphInc = DMA_PINC_DISABLE;                 /* 外设非增量模式 */g_dma_handle.Init.MemInc = DMA_MINC_ENABLE;                     /* 存储器增量模式 */g_dma_handle.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;    /* 外设数据长度:8位 */g_dma_handle.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;       /* 存储器数据长度:8位 */g_dma_handle.Init.Mode = DMA_NORMAL;                            /* 外设流控模式 */g_dma_handle.Init.Priority = DMA_PRIORITY_MEDIUM;               /* 中等优先级 */HAL_DMA_Init(&g_dma_handle);
}

 DMA.H

#ifndef __DMA_H
#define	__DMA_H#include "./SYSTEM/sys/sys.h"void dma_init(DMA_Channel_TypeDef* DMAx_CHx);#endif

 

http://www.lryc.cn/news/416194.html

相关文章:

  • Scrapy爬虫框架介绍、创建Scrapy项目
  • 如何监测某个进程是否退出(C++)?
  • Python:Neo 库读取 ABF 文件,数据格式详解
  • 【Linux】网络基础_3
  • C++之从C过渡(上)
  • MongoDB 100问
  • Arduino ESP32使用 HardwareSerial创建一个任意串口
  • 数据中台建设之数据存储
  • 最常见的AI大模型总结
  • 源码安装docker和docker-compose
  • Java、PHP、Node 操作 MySQL 数据库常用方法
  • nVisual分享社区正式上线啦!
  • 4.5.门控循环单元GRU
  • 10种 Python数据结构,从入门到精通
  • 【AI】人工智能时代,程序员如何保持核心竞争力?
  • WPF学习(3)- WrapPanel控件(瀑布流布局)+DockPanel控件(停靠布局)
  • 【python】Python中实现定时任务常见的几种方式原理分析与应用实战
  • 老公请喝茶,2024年老婆必送老公的养生茶,暖暖的很贴心
  • 3d打印相关资料
  • MySQL1 DDL语言
  • el-tree懒加载状态下实现搜索筛选(纯前端)
  • NLP——Transfromer 架构详解
  • 大模型算法面试题(二十)
  • 2024最新最全面的Selenium 3.0 + Python自动化测试框架
  • 海运中的甩柜是怎么回事❓怎么才能避免❓
  • Win11+docker+gpu+vscode+pytorch配置anomalib(2)
  • AI在招聘市场趋势分析中的应用
  • AMEYA360:太阳诱电应对 165℃的叠层金属类功率电感器实现商品化!
  • Nginx进阶-常见配置(三)
  • 开源协作式书签管理器推荐