stm32之30.DMA
DMA(硬件加速方法)一般用于帮运比较大的数据(如:摄像头数据图像传输),寄存器-》DMA-》RAM 或者 RAM-》DMA-》寄存器提高CPU的工作效率

源码--
#include "myhead.h"
#include "adc.h"#include "delay.h"#include "usart.h"
extern u16 ADC1_Value;u16 ADC1_Value;void DMA_init(void)
{GPIO_InitTypeDef GPIO_InitStructure;ADC_InitTypeDef ADC_InitStructure;ADC_CommonInitTypeDef ADC_CommonInitStructure;DMA_InitTypeDef DMA_InitStructure;//1.时钟使能ADC1 GPIOARCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);//1分频RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);//2分频RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA2, ENABLE);//1分频//DMA2初始化DMA_InitStructure.DMA_Channel = DMA_Channel_0; //通道0DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)&(ADC1->DR); //搬运的起始地址DMA_InitStructure.DMA_Memory0BaseAddr = (uint32_t)&ADC1_Value; //搬运的目的地址DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralToMemory; //DMA搬运的方向DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord; //设置搬运起始点到目的地发数据宽度DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord; //字节大小 半个字节DMA_InitStructure.DMA_BufferSize = 1; //设置缓存块数DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable; //设置地址自动递增 DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Disable; DMA_InitStructure.DMA_Mode = DMA_Mode_Circular; //DMA搬运模式 Nomal Circular循环DMA_InitStructure.DMA_Priority = DMA_Priority_High; //触发优先级DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Disable; DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_HalfFull;DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single;DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single;DMA_Init(DMA2_Stream0, &DMA_InitStructure);DMA_Cmd(DMA2_Stream0, ENABLE); //使能DMAGPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL ;//不需要上下拉电阻GPIO_Init(GPIOA, &GPIO_InitStructure);//3.ADC的公共部分配置ADC_CommonInitStructure.ADC_Mode = ADC_Mode_Independent;//独立模式,双重模式,三重模式ADC_CommonInitStructure.ADC_Prescaler = ADC_Prescaler_Div4; //84MHZ---/4 给到具体ADC 21MHZ<=36MHZADC_CommonInitStructure.ADC_DMAAccessMode = ADC_DMAAccessMode_Disabled; //多重ADC模式有关,一般独立ADC都不需要开启ADC_CommonInitStructure.ADC_TwoSamplingDelay = ADC_TwoSamplingDelay_5Cycles;//多重ADC模式的采样间隔ADC_CommonInit(&ADC_CommonInitStructure);//4.指定ADC配置ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b; //精度选择ADC_InitStructure.ADC_ScanConvMode = DISABLE; //扫描模式选择 开扫描/关扫描 单个ADC开了多个通道才要扫描模式ADC_InitStructure.ADC_ContinuousConvMode = ENABLE; //连续转换模式 开/关ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None; //ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T1_CC1;ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;ADC_InitStructure.ADC_NbrOfConversion = 1; //待转换的通道数量 如果adc通道开多个(adc1,adc3),通道数量跟数量一样多,上面扫描模式就得开ADC_Init(ADC1, &ADC_InitStructure);/* Enable DMA request after last transfer (Single-ADC mode) */ //ADC1->CR2 第9bit DDS位 中文手册276页ADC_DMARequestAfterLastTransferCmd(ADC1, ENABLE);/* Enable ADC3 DMA *///ADC1->CR2 第8bit DMA位 中文手册276页ADC_DMACmd(ADC1, ENABLE);//5.通道规则设置--设置adc通道的转换顺序ADC_RegularChannelConfig(ADC1, ADC_Channel_5, 1, ADC_SampleTime_3Cycles);//ADC_SampleTime_3Cycles通道转换速度,等级越高转换速度越快//6.使能ADC模块ADC_Cmd(ADC1,ENABLE);
}int main(void)
{adc_init();usart1_init(9600);DMA_init();ADC_SoftwareStartConv(ADC1); //ADC通道配置必须放DMA_init/adc_init()后面while(1){//3.3v/4096 =xV/ADC1->DRprintf("%.2fv\r\n",ADC1_Value*3.3/4095); //不断读取ADC1的转换结果 转换成电压值 (.2f表示double类型小数点后两位打印结果)delay_ms(1000);}}

DMA2支持搬运的外设有如图
相关文章:
stm32之30.DMA
DMA(硬件加速方法)一般用于帮运比较大的数据(如:摄像头数据图像传输),寄存器-》DMA-》RAM 或者 RAM-》DMA-》寄存器提高CPU的工作效率 源码-- #include "myhead.h" #include "adc.h"#…...
【LeetCode75】第四十九题 数组中的第K个最大元素
目录 题目: 示例: 分析: 代码: 题目: 示例: 分析: 题目很简单,就是给我们一个数组,让我们返回第K大的元素。 那么很直观的一个做法就是我们直接对数组进行降序排序…...
嵌入式面试笔试刷题(day14)
文章目录 前言一、进程控制块1.PCB控制块的作用2.PCB的存储位置 二、进程的三级映射三、return , exit, pthread_exit四、pthread_join作用五、互斥锁和信号量的区别六、怎么判断链表是否有环总结 前言 本篇文章继续我们的刷题之路。 一、进程控制块 这里只讲解进程的PCB控制…...
好用免费的Chat GPT(亲测有用)
1、MindLink麦灵 MindLink麦灵 点进登录后 普通用户可以提问100次 2、你问我答 你问我答 无限次数的。 3、灵感 灵感 点击链接后会提示你如何下载使用。 这个有win版和mac版,点击登陆后,每日都会有30次GPT3/3.5的提问。 4、WebTab 在浏览器插件中…...
SpringBoot项目--电脑商城【上传头像】
一、易错点 1.错误写法: 把文件存到数据库中,需要图片时访问数据库,数据库将文件解析为字节流返回,最后写到本地的某一个文件.这种方法太耗费资源和时间了 2.正确写法: 将对应的文件保存在操作系统上,然后再把这个文件路径记录下来,因为在记录路径的…...
优化SOCKS5的方法
在今天的互联网世界中,保护个人隐私和提升网络速度至关重要。作为一种常用的代理协议,SOCKS5代理服务器不仅可以保护您的隐私,还可以实现更快速的网络访问。本文将为您介绍一些优化SOCKS5代理服务器的方法,以提高网络速度和安全性…...
使用 HelpLook Chatbot,让AI聊天机器人变成销售经理
想要增强AI聊天机器人销售技巧的话,我们需要一个强大的搭建工具来帮助我们增加客户互动,通过很多的客户互动数据来支撑和锻炼我们的AI聊天机器人。在本篇文章中,looklook将会系统地来说说该如何定制聊天机器人的行为。 使用AI聊天机器人的好处…...
MT9700 80mΩ,可调快速响应限流配电开关芯片
MT9700 80mΩ,可调快速响应限流配电开关芯片 特征 符合USB规范 集成80mΩ电源MOSFET 低电源电流 15μA典型开启状态 1μA典型关闭状态 宽输入电压Range:2.4V到5.5V 快速瞬态响应:<2μs 反向电流流阻塞 热关机保护 热插件应…...
RabbitMQ之延迟队列
RabbitMQ之延迟队列 1. 延迟队列概念2. 延迟队列使用场景3. RabbitMQ 中的 TTL3.1 消息设置 TTL3.2 队列设置 TTL3.3 两者的区别 4. 整合 SpringBoot4.1 创建项目4.2 添加依赖4.3 修改配置文件4.4 添加 Swagger 配置类 5. 队列 TTL5.1 代码架构图5.2 配置文件类代码5.3 消息生产…...
k8s部署手册-v06
一、基础配置 1.修改主机名 hostnamectl set-hostname k8s-master01 hostnamectl set-hostname k8s-master02 hostnamectl set-hostname k8s-master03 hostnamectl set-hostname k8s-node01 hostnamectl set-hostname k8s-node022.添加 主机名与IP地址解析 cat > /etc/ho…...
Qt 5.15集成Crypto++ 8.7.0(MSVC 2019)笔记
一、背景 笔者已介绍过在Qt 5.15.x中使用MinGW(8.10版本)编译并集成Crypto 8.7.0。 但是该编译出来的库(.a和.dll)不适用MSVC(2019版本)构建环境,需要重新编译(.lib或和.dll…...
LeetCode——贪心篇(一)
刷题顺序及思路来源于代码随想录,网站地址:https://programmercarl.com 目录 455. 分发饼干 376. 摆动序列 53. 最大子数组和 122. 买卖股票的最佳时机 II 55. 跳跃游戏 45. 跳跃游戏 II 1005. K 次取反后最大化的数组和 455. 分发饼干 假设你是…...
2023高教社杯 国赛数学建模C题思路 - 蔬菜类商品的自动定价与补货决策
1 赛题 在生鲜商超中,一般蔬菜类商品的保鲜期都比较短,且品相随销售时间的增加而变差, 大部分品种如当日未售出,隔日就无法再售。因此, 商超通常会根据各商品的历史销售和需 求情况每天进行补货。 由于商超销售的蔬菜…...
【理解线性代数】(四)线性运算的推广与矩阵基础
1. 数值加法和乘法 数值加法与乘法,是小学数学课程中的基本数学运算。例如: 加法:112 乘法:2*24 在这个知识层次下,运算的基本单位是数字。 2. 从数值到向量 数值加法,可以看作一维空间中的向量加法&…...
C# 什么是继承和派生
C# 什么是继承和派生 在 C# 中,继承(Inheritance)是一种机制,它允许一个类(子类)从另一个类(父类)中继承属性和方法。这种关系使得子类可以重用父类的代码,同时可以在子…...
无涯教程-JavaScript - HEX2BIN函数
描述 HEX2BIN函数将十六进制数转换为二进制数。 语法 HEX2BIN (number, [places])争论 Argument描述Required/Optionalnumber 您要转换的十六进制数。 数字不能超过10个字符(40位)。数字的最高有效位是符号位(从右数第40位)。其余的39位是幅度位。 负数使用二进制补码表示。…...
前端面试0906
// 请给出输出结果 function foo(){ console.log(a); } function bar(){ var a 3; console.log(this.a); foo(); } var a 2; bar(); 2 2 // 请从下面的问题中挑选3道进行回答 1. 防抖和节流分别是什么,一般用在什么场景? 防抖(Debounc…...
OceanBase社区版4.x核心技术解密
数字化时代,各行各业的数据量呈现爆发式增长,对于海量数据价值的挖掘和应用,正成为推动创新的主要力量,与此同时,数据计算复杂度正在提升。在此背景下,对于数据处理的基石数据库而言,正面临市场…...
快速安装k8s
RKE安装方式 官方文章资源地址 https://rke.docs.rancher.com/installation rke工具下载地址(arm,amd,windows都有) https://github.com/rancher/rke/releases x86的用amd64下载rke工具 https://github.com/rancher/rke/releases/download/v1.4.8/rke_li…...
[FFmpeg] 常用ffmpeg命令
去水印 ffmpeg -i water.jpeg -strict -2 -vf delogox300:y250:w56:h18:show0 no_water.jpeg 打时间戳 ffmpeg -i perf_60Hz_Raw.mp4 -vf "drawtextfontsize160:fontcolorred:text%{pts\:hms}" -c:v libx264 -an -f mp4 perf_output.mp4 -y ffmpeg -i perf_8k.mp4 -v…...
CS-Notes:从汇编到现代编程语言的系统化学习路径
CS-Notes:从汇编到现代编程语言的系统化学习路径 【免费下载链接】CS-Notes :books: 编程语言语法基础与工程实践,JavaScript | Java | Python | Go | Rust | CPP | Swift 项目地址: https://gitcode.com/gh_mirrors/csno/CS-Notes 掌握多门编程语…...
如何通过智能备份技术实现微信聊天记录的数据主权?本地化管理方案全解析
如何通过智能备份技术实现微信聊天记录的数据主权?本地化管理方案全解析 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_…...
文墨共鸣应用场景:高校思政课教案语义重复检测与创新性评估
文墨共鸣应用场景:高校思政课教案语义重复检测与创新性评估 1. 引言:当传统思政课遇上AI语义分析 高校思政课教师每年都要准备大量教案,从经典理论阐释到时事热点分析,内容创作压力不小。一个常见的问题是:不同章节的…...
如何全面移除开源工具残留?四步环境净化实施方案
如何全面移除开源工具残留?四步环境净化实施方案 【免费下载链接】ralph-claude-code Autonomous AI development loop for Claude Code with intelligent exit detection 项目地址: https://gitcode.com/GitHub_Trending/ra/ralph-claude-code 一、问题诊断…...
AI生成内容检测新思路:除了红绿词表,我们还能用哪些方法识别ChatGPT写的文章?
AI生成内容检测技术全景:超越红绿词表的七种实战方法 当ChatGPT生成的论文摘要通过学术评审、AI撰写的新闻稿被主流媒体刊发时,内容真实性的边界正在变得模糊。某高校教授最近向我展示了一份学生作业——文笔流畅的哲学论述,最终被证实完全由…...
太原教育平台评价好的服务商
在太原,随着家长对孩子教育的重视程度不断提高,越来越多的教育平台和服务商应运而生。本文将从多个维度对太原几家知名的教育平台进行对比分析,帮助家长们选择最适合孩子的教育服务。一、山西国科天光教育科技有限公司1. 标准化体系数据支持&…...
如何免费解锁网盘高速下载:网盘直链下载助手终极指南
如何免费解锁网盘高速下载:网盘直链下载助手终极指南 【免费下载链接】baiduyun 油猴脚本 - 一个免费开源的网盘下载助手 项目地址: https://gitcode.com/gh_mirrors/ba/baiduyun 你是否曾经因为网盘下载速度慢如蜗牛而烦恼?是否在办公环境中无法…...
终极Flash浏览器使用指南:让经典Flash内容重获新生的3个秘诀
终极Flash浏览器使用指南:让经典Flash内容重获新生的3个秘诀 【免费下载链接】CefFlashBrowser Flash浏览器 / Flash Browser 项目地址: https://gitcode.com/gh_mirrors/ce/CefFlashBrowser 你是否还记得那些令人怀念的Flash游戏和互动课件?随着…...
春联生成模型-中文-base行业落地:新能源车企‘碳中和’‘智驾’等科技春联生成
春联生成模型-中文-base行业落地:新能源车企碳中和智驾等科技春联生成 1. 引言:当传统春联遇上现代科技 春节贴春联是千百年来的传统习俗,但传统的"福禄寿喜"已经难以完全表达现代企业的科技内涵。特别是新能源车企,既…...
零代码部署GEMMA-3像素工作站:复古界面下的多模态AI体验
零代码部署GEMMA-3像素工作站:复古界面下的多模态AI体验 1. 开篇:当JRPG美学遇上多模态AI 想象一下,90年代经典日式角色扮演游戏的像素风格界面,与现代最先进的多模态AI技术完美融合——这就是GEMMA-3像素工作站带给我们的独特体…...
