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…...
AB下载管理器终极指南:高效管理你的下载任务
AB下载管理器终极指南:高效管理你的下载任务 【免费下载链接】ab-download-manager A Download Manager that speeds up your downloads 项目地址: https://gitcode.com/GitHub_Trending/ab/ab-download-manager AB下载管理器是一款基于Kotlin开发的开源跨平…...
Page Assist终极指南:5分钟为浏览器安装本地AI助手,彻底告别云端依赖
Page Assist终极指南:5分钟为浏览器安装本地AI助手,彻底告别云端依赖 【免费下载链接】page-assist Use your locally running AI models to assist you in your web browsing 项目地址: https://gitcode.com/GitHub_Trending/pa/page-assist 想要…...
微软UFO项目:统一AI模型调用的抽象层设计与工程实践
1. 项目概述:当“统一”成为AI开发的新范式最近在折腾大模型应用开发的朋友,可能都绕不开一个痛点:模型太多,工具链太杂。想用闭源的GPT-4处理文本,用开源的Llama搞本地推理,再用DALL-E 3生成图片ÿ…...
AI 项目经理 Agent:拆解任务、分配资源与监控风险
AI项目经理Agent:拆解任务、分配资源与监控风险的全流程落地指南从GPT-4发布以来,“AI替代白领”的声音此起彼伏,但作为一名在互联网大厂带过3个亿级SaaS交付项目、同时搞了2年AI辅助项目管理(AIPM)落地的软件工程师&a…...
5个实战案例:使用Promises/A+规范解决复杂异步编程难题
5个实战案例:使用Promises/A规范解决复杂异步编程难题 【免费下载链接】promises-spec An open standard for sound, interoperable JavaScript promises—by implementers, for implementers. 项目地址: https://gitcode.com/gh_mirrors/pr/promises-spec P…...
spoof 与网络安全:如何利用 MAC 地址伪造增强企业安全防护
spoof 与网络安全:如何利用 MAC 地址伪造增强企业安全防护 【免费下载链接】spoof Easily spoof your MAC address in macOS, Windows, & Linux! 项目地址: https://gitcode.com/gh_mirrors/sp/spoof 在当今数字化时代,网络安全已成为企业运营…...
Arm Ethos-U85 NPU架构解析与边缘AI优化实践
1. Arm Ethos-U85 NPU架构解析:边缘AI的算力引擎在嵌入式AI领域,算力与功耗的平衡始终是核心挑战。Arm Ethos-U85 NPU的诞生,为Cortex-M/A系列处理器提供了专用的神经网络加速方案。这款NPU采用独特的微架构设计,支持TOSA标准指令…...
基于AI宏观流动性监测框架的黄金三日连跌研究:美联储加息预期按兵不动后的市场重定价逻辑
摘要:本文通过AI宏观利率模型、美元流动性监测系统与黄金波动率因子分析,结合美通胀数据、美债收益率变化及市场利率预期重定价过程,分析黄金连续三日回落背后的核心驱动逻辑,并探讨当前“高利率持续”环境下黄金资产的阶段性压力…...
GitHub PR全流程实战:从创建、自动化测试到代码审查与合并
1. 项目概述与核心价值 如果你参与过开源项目,或者在公司内部使用GitHub进行团队协作,那么“Pull Request”(PR)这个流程你一定不陌生。它不仅仅是把代码从一个分支合并到另一个分支那么简单,而是一整套围绕代码质量、…...
别只重启软件!解决ThingWorx连接KepServer报错的正确姿势:瞄准后台驱动
别只重启软件!解决ThingWorx连接KepServer报错的正确姿势:瞄准后台驱动 在工业物联网(IIoT)系统的运维中,ThingWorx与KepServer的通信问题堪称经典难题。许多工程师遇到连接报错时,第一反应往往是重启配置界…...
