当前位置: 首页 > 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

 

相关文章:

HAL库源码移植与使用之DMA

内存到内存不支持传输计数器自动重装 结构&#xff1a; 与DMA具有连线的外设都可以完成搬运 DMA触发源 DMA优先级分配 由仲裁器来决定 寄存器作用&#xff1a; DMA.C #include "./BSP/DMA/dma.h" #include "./SYSTEM/delay/delay.h"DMA_HandleTypeDef…...

Scrapy爬虫框架介绍、创建Scrapy项目

Scrapy官网&#xff1a;https://scrapy.org/ 什么是Scrapy Scrapy 是一个基于 Python 的快速的高级网页抓取和网页爬取框架&#xff0c;用于抓取网站并从其页面中提取结构化数据。它可用于多种用途&#xff0c;从数据挖掘到监控和自动化测试。 Scrapy核心组件 1. Scrapy Engin…...

如何监测某个进程是否退出(C++)?

使用WaitForSingleObject函数&#xff0c;可以判断进程是否退出。 WaitForSingleObject函数的作用是&#xff1a;等待直到指定的对象处于信号状态&#xff08;通知状态&#xff09;或到达指定的等待时间&#xff08;超时时间&#xff09;。 函数声明如下&#xff1a; 1 DWOR…...

Python:Neo 库读取 ABF 文件,数据格式详解

Neo 库读取 ABF 文件后的数据格式 neo 是一个用于处理电生理数据的 Python 库&#xff0c;支持多种数据格式&#xff0c;包括 ABF 文件。了解 neo 读入 ABF 文件后的数据结构非常重要&#xff0c;以下给大家介绍一下使用 neo 读取 ABF 文件&#xff0c;及其对象格式。 1. ABF…...

【Linux】网络基础_3

文章目录 十、网络基础5. socket编程socket 常见APIsockaddr结构简单的UDP网络程序 未完待续 十、网络基础 5. socket编程 socket 常见API // 创建 socket 文件描述符 (TCP/UDP, 客户端 服务器) int socket(int domain, int type, int protocol);// 绑定端口号 (TCP/UDP, 服…...

C++之从C过渡(上)

C之从C过渡 前言 暂时告别C语言&#xff0c;我们走进C。对于有C语言基础&#xff0c;初学C的我们来说&#xff0c;在正式学习C的主体内容之前&#xff0c;我们需要先有一个过渡&#xff0c;本文中会总结过渡需要了解的零散知识&#xff0c;主要是语法。 正文 C的第一个程序 …...

MongoDB 100问

基础问题 1. 什么是MongoDB&#xff1f; MongoDB是一种面向文档的NoSQL数据库&#xff0c;使用BSON&#xff08;二进制JSON&#xff09;格式存储数据。它支持动态模式设计&#xff0c;具有高性能、高可用性和易扩展性。 2. MongoDB和传统关系型数据库的区别是什么&#xff1f…...

Arduino ESP32使用 HardwareSerial创建一个任意串口

文章目录 前言使用 `HardwareSerial` 创建任意串口创建 `HardwareSerial` 对象示例代码`begin` 函数总结前言 在 Arduino 项目中,串口通信是一种常见且重要的通信方式。ESP32 作为一款功能强大的微控制器,提供了多个 UART(通用异步收发传输器)接口,允许用户灵活地进行串口…...

数据中台建设之数据存储

目录 一、技术选型需要明确的问题 二、技术选型需要考虑的几个方面 2.1 数据规模 2.2 数据生产方式 2.3 数据应用方式 三、技术选型的场景分析 3.1 概述 3.2 在线与离线 3.2.1 在线存储 3.2.2 离线存储 3.3 OLTP与OLAP 3.3.1 OLTP 3.3.2 OLAP 3.3.3 OLTP与OLAP的关…...

最常见的AI大模型总结

前言&#xff1a;大模型可以根据其主要的应领域和功能&#xff0c;可以分类为“文生文”&#xff08;Text-to-Text&#xff09;、“文生图”&#xff08;Text-to-Image&#xff09;和“文生视频”&#xff08;Text-to-Video&#xff09;&#xff0c;都是基于自然语言处理&#…...

源码安装docker和docker-compose

前言 前提条件&#xff1a;内核要求 目前&#xff0c;CentOS 仅发行版本中的内核支持 Docker。 Docker 运行在 CentOS 7 上&#xff0c;要求系统为64位、系统内核版本为3.10 以上。 Docker 运行在 CentOS-6.5 或更高的版本的 CentOS 上&#xff0c;要求系统为64位、系统内核版…...

Java、PHP、Node 操作 MySQL 数据库常用方法

一、Java 操作 MySQL 数据库 1、Java 连接 MySQL 数据库 1. 使用 JDBC 驱动程序连接 使用这种方式&#xff0c;首先需要导入 MySQL 的 JDBC 驱动程序依赖&#xff0c;然后通过 Class.forName() 方法加载驱动程序类。其创建连接的过程相对直接&#xff0c;只需提供准确的数据库…...

nVisual分享社区正式上线啦!

nVisual分享社区正式上线啦&#xff01; 访问地址&#xff1a;分享社区 nVisual是耐威迪基于数字孪生技术物联网技术开发的一款基础设施数字孪生软件工具&#xff0c;主要实现OSP室外与ISP室内基础设施的规划、记录、分析的可视化管理。 规划&#xff1a;nVisual可视化、智能化…...

4.5.门控循环单元GRU

门控循环单元GRU ​ 对于一个序列&#xff0c;不是每个观察值都是同等重要的&#xff0c;可能会遇到一下几种情况&#xff1a; 早期观测值对预测所有未来观测值都具有非常重要的意义。 考虑极端情况&#xff0c;第一个观测值包含一个校验和&#xff0c;目的是在序列的末尾辨别…...

10种 Python数据结构,从入门到精通

今天我们将深入探讨 Python 中常用的数据结构&#xff0c;帮助你从基础到精通。每种数据结构都有其独特的特点和适用场景&#xff0c;通过实际代码示例和生活中的比喻&#xff0c;让你更容易理解这些概念。 学习数据结构的三个阶段 1、掌握基本用法&#xff1a;使用这些数据结…...

【AI】人工智能时代,程序员如何保持核心竞争力?

目录 程序员在AI时代的应对策略1. 引言2. AI在编程领域的影响2.1 AI辅助编程工具的现状2.2 AI对编程工作的影响2.3 程序员的机遇与挑战 3. 深耕细作&#xff1a;专注领域的深度学习3.1 专注领域的重要性3.2 深度学习的策略3.2.1 选择合适的领域3.2.2 持续学习和研究3.2.3 实践与…...

WPF学习(3)- WrapPanel控件(瀑布流布局)+DockPanel控件(停靠布局)

WrapPanel控件&#xff08;瀑布流布局&#xff09; WrapPanel控件表示将其子控件从左到右的顺序排列&#xff0c;如果第一行显示不了&#xff0c;则自动换至第二行&#xff0c;继续显示剩余的子控件。我们来看看它的结构定义&#xff1a; public class WrapPanel : Panel {pub…...

【python】Python中实现定时任务常见的几种方式原理分析与应用实战

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…...

老公请喝茶,2024年老婆必送老公的养生茶,暖暖的很贴心

在这个快节奏的时代&#xff0c;每个人都在为生活奔波&#xff0c;而家的温馨与关怀&#xff0c;成了我们最坚实的后盾。随着2024年的已经过半&#xff0c;作为妻子&#xff0c;你是否也在寻找一份特别的礼物&#xff0c;来表达对老公深深的爱意与关怀&#xff1f;在这个充满爱…...

3d打印相关资料

模型库 拓竹makerworld爱给...

lingbot-depth-pretrain-vitl-14入门必看:DINOv2 ViT-L/14编码器在深度任务中的特征迁移机制

lingbot-depth-pretrain-vitl-14入门必看&#xff1a;DINOv2 ViT-L/14编码器在深度任务中的特征迁移机制 1. 引言&#xff1a;从一张照片到三维世界 你有没有想过&#xff0c;为什么我们人类看一张照片&#xff0c;就能大概判断出照片里物体的远近&#xff1f;比如&#xff0…...

保姆级教程:用Arch Linux为你的旧手机编译LineageOS 21(附LG G8 ThinQ实战记录)

深度实战&#xff1a;在Arch Linux上为LG G8 ThinQ编译LineageOS 21的完整指南 当老旧手机逐渐被厂商放弃系统更新时&#xff0c;自行编译定制ROM成为延长设备寿命的最佳选择。本文将详细记录在Arch Linux环境下为LG G8 ThinQ&#xff08;代号alphaplus&#xff09;编译Lineage…...

技术探索:硬件信息伪装的内核级实现方案

技术探索&#xff1a;硬件信息伪装的内核级实现方案 【免费下载链接】EASY-HWID-SPOOFER 基于内核模式的硬件信息欺骗工具 项目地址: https://gitcode.com/gh_mirrors/ea/EASY-HWID-SPOOFER 如何通过驱动级操作实现系统硬件标识的深度修改&#xff1f; 技术解析&#x…...

松江少儿英语口碑好的?

松江少儿英语口碑好的 环球乐学少儿英语&#xff0c;指出幼儿英语学习三大痛点&#xff1a; 1. 兴趣不足易抵触&#xff1a;教学形式枯燥&#xff0c;多以机械记单词、跟读为主&#xff0c;不符合幼儿认知特点&#xff0c;易产生厌学情绪。 2. 缺语境不会运用&#xff1a…...

大模型学习进阶:收藏必备,小白程序员快速掌握RAG架构核心技术!

大模型学习进阶&#xff1a;收藏必备&#xff0c;小白程序员快速掌握RAG架构核心技术&#xff01; 本文深入解析了RAG&#xff08;检索增强生成&#xff09;大模型的核心技术及其重要性&#xff0c;详细介绍了标准RAG、对话式RAG、纠正式RAG、自适应RAG、自我反思RAG、融合RAG、…...

2026年SCI论文AI率5%以下怎么做到?这3款降AI工具帮你稳过顶刊

投了三篇SCI&#xff0c;AI率问题折腾了快半年。 第一次投稿时完全不知道期刊有AI率要求&#xff0c;论文被直接拒稿&#xff0c;编辑在邮件里特别说明了AI生成内容的问题。从那以后就开始认真研究这个。先说结论&#xff1a;嘎嘎降AI&#xff08;www.aigcleaner.com&#xff…...

仅限产线工程师获取:Python网关调试禁忌清单(含12个厂商文档刻意回避的硬件层坑点,第7条致90%项目延期)

第一章&#xff1a;Python网关调试的产线准入机制与权限边界在工业级Python网关部署场景中&#xff0c;产线准入并非简单验证服务可达性&#xff0c;而是融合身份认证、环境隔离、行为审计与动态策略执行的多维控制体系。所有调试接入请求必须通过统一API网关前置鉴权模块&…...

从CVE-2023-3450看锐捷RG-BCR860路由器:一次网络诊断功能引发的命令注入实战剖析

1. 漏洞背景与设备介绍 锐捷RG-BCR860是面向中小型商业场景设计的云路由器&#xff0c;主打简单易用的中文Web管理界面。这款设备常见于连锁餐饮、快捷酒店等需要稳定网络环境的场所&#xff0c;最大支持150台终端同时接入。作为一款商用设备&#xff0c;它内置了安全审计模块和…...

告别“手搓论文”焦虑:百考通AI期刊写作全流程通关秘籍

从选题到投稿&#xff0c;一套工具&#xff0c;帮你避开90%的审稿雷区 在学术研究的漫长旅途中&#xff0c;许多研究者都曾面临这样的困境&#xff1a;精心培育的 idea&#xff0c;扎实的实验数据&#xff0c;却在转化为论文、投向期刊的“最后一公里”屡屡碰壁。不是因为研究本…...

BiliTools全平台高效解决方案:从新手到进阶的B站资源管理指南

BiliTools全平台高效解决方案&#xff1a;从新手到进阶的B站资源管理指南 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱&#xff0c;支持视频、音乐、番剧、课程下载……持续更新 项目地址: https://gitcode.com/GitHub_Trending/bil…...