STM32F4寄存器初始化系列:三重ADC——DMA
static void ADC_Init(void)
{
/********************DMA配置**************************/
DMA2_Stream0->PAR=(uint32_t)&(ADC->CDR); //DMA外设地址 多重ADC->CDR
DMA2_Stream0->M0AR=(uint32_t)_AD_Value; //DMA 存储器0地址
DMA2_Stream0->NDTR=24; //传输数据项个数
DMA2_Stream0->CR=0; //先全部复位CR寄存器值
DMA2_Stream0->CR|=0<<25; //通道选择
DMA2_Stream0->CR|=0<<23; //存储器单次传输
DMA2_Stream0->CR|=0<<21; //外设单次传输
DMA2_Stream0->CR|=1<<16; //中等优先级 2:高 3:非常高
DMA2_Stream0->CR|=1<<13; //存储器数据大小为16位 0:8位 1:16位 2:32位
DMA2_Stream0->CR|=1<<11; //外设数据大小为16位 0:8位 1:16位 2:32位
DMA2_Stream0->CR|=1<<10; //存储器地址递增
DMA2_Stream0->CR|=0<<9; //外设地址固定
DMA2_Stream0->CR|=1<<8; //循环模式
DMA2_Stream0->CR|=0<<6; //外设到存储器 1:存储器到外设 2:存储器到存储器
DMA2_Stream0->CR|=1<<0; //开启DMA传输
/******************************************************/ /********************ADC通用配置**************************/
ADC->CCR|=1<<16; //ADCCLK=PCLK2/4=84/4=21Mhz,ADC时钟最好不要超过36Mhz
ADC->CCR|=1<<14; //多重DMA模式1
ADC->CCR|=1<<13; //多重DMA持续转换
ADC->CCR|=0X16; //仅三重模式规则同时模式
/******************************************************/ /********************CR1配置**************************/
ADC1->CR1|=1<<24; //10位模式 1:10位 2:8位 3:6位
ADC1->CR1|=1<<8; //扫描模式
ADC2->CR1|=1<<24; //10位模式 1:10位 2:8位 3:6位
ADC2->CR1|=1<<8; //扫描模式
ADC3->CR1|=1<<24; //10位模式 1:10位 2:8位 3:6位
ADC3->CR1|=1<<8; //扫描模式
/******************************************************/ /********************采样时间**************************/
ADC1->SMPR2|=7; //通道0的采样时间为480个周期
ADC1->SMPR2|=7<<3*1; //通道1的采样时间为480个周期
ADC1->SMPR2|=7<<3*2; //通道2的采样时间为480个周期
ADC1->SMPR2|=7<<3*3; //通道3的采样时间为480个周期
ADC1->SMPR2|=7<<3*4; //通道4的采样时间为480个周期
ADC1->SMPR2|=7<<3*5; //通道5的采样时间为480个周期
ADC1->SMPR2|=7<<3*6; //通道6的采样时间为480个周期
ADC1->SMPR2|=7<<3*7; //通道7的采样时间为480个周期 ADC2->SMPR2|=7<<3*8; //通道8的采样时间为480个周期
ADC2->SMPR2|=7<<3*9; //通道9的采样时间为480个周期
ADC2->SMPR1|=7; //通道10的采样时间为480个周期
ADC2->SMPR1|=7<<3*1; //通道11的采样时间为480个周期
ADC2->SMPR1|=7<<3*2; //通道12的采样时间为480个周期
ADC2->SMPR1|=7<<3*3; //通道13的采样时间为480个周期
ADC2->SMPR1|=7<<3*4; //通道14的采样时间为480个周期
ADC2->SMPR1|=7<<3*5; //通道15的采样时间为480个周期 ADC3->SMPR2|=7<<3*4; //通道4的采样时间为480个周期
ADC3->SMPR2|=7<<3*5; //通道5的采样时间为480个周期
ADC3->SMPR2|=7<<3*6; //通道6的采样时间为480个周期
ADC3->SMPR2|=7<<3*7; //通道7的采样时间为480个周期
ADC3->SMPR2|=7<<3*8; //通道8的采样时间为480个周期
ADC3->SMPR2|=7<<3*9; //通道9的采样时间为480个周期
ADC3->SMPR1|=7<<3*4; //通道14的采样时间为480个周期
ADC3->SMPR1|=7<<3*5; //通道15的采样时间为480个周期
/******************************************************/ /********************转换序列**************************/
ADC1->SQR1|=7<<20; //8个转换在规则序列中
ADC1->SQR3|=0; //第一次转换ADC_IN0
ADC1->SQR3|=1<<5; //第二次转换ADC_IN1
ADC1->SQR3|=2<<2*5; //第三次转换ADC_IN2
ADC1->SQR3|=3<<3*5; //第四次转换ADC_IN3
ADC1->SQR3|=4<<4*5; //第五次转换ADC_IN4
ADC1->SQR3|=5<<5*5; //第六次转换ADC_IN5
ADC1->SQR2|=6; //第七次转换ADC_IN6
ADC1->SQR2|=7<<5; //第八次转换ADC_IN7 ADC2->SQR1|=7<<20; //8个转换在规则序列中
ADC2->SQR3|=8; //第一次转换ADC_IN8
ADC2->SQR3|=9<<5; //第二次转换ADC_IN9
ADC2->SQR3|=10<<2*5; //第三次转换ADC_IN10
ADC2->SQR3|=11<<3*5; //第四次转换ADC_IN11
ADC2->SQR3|=12<<4*5; //第五次转换ADC_IN12
ADC2->SQR3|=13<<5*5; //第六次转换ADC_IN13
ADC2->SQR2|=14; //第七次转换ADC_IN14
ADC2->SQR2|=15<<5; //第八次转换ADC_IN15 ADC3->SQR1|=7<<20; //8个转换在规则序列中
ADC3->SQR3|=4; //第一次转换ADC_IN4
ADC3->SQR3|=5<<5; //第二次转换ADC_IN5
ADC3->SQR3|=6<<2*5; //第三次转换ADC_IN6
ADC3->SQR3|=7<<3*5; //第四次转换ADC_IN7
ADC3->SQR3|=8<<4*5; //第五次转换ADC_IN8
ADC3->SQR3|=9<<5*5; //第六次转换ADC_IN9
ADC3->SQR2|=14; //第七次转换ADC_IN14
ADC3->SQR2|=15<<5; //第八次转换ADC_IN15
/******************************************************/ ADC1->CR2|=1<<9; //使能ADC1_DMA
ADC1->CR2|=1<<8; //使能ADC1_DMA
ADC1->CR2|=1<<1; //连续转换
ADC1->CR2|=1<<0; //使能ADC1 ADC2->CR2|=1<<9; //使能ADC2_DMA
ADC2->CR2|=1<<1; //连续转换
ADC2->CR2|=1<<0; //使能ADC2 ADC3->CR2|=1<<9; //使能ADC2_DMA
ADC3->CR2|=1<<1; //连续转换
ADC3->CR2|=1<<0; //使能ADC3 ADC1->CR2|=1<<30; //开启AD转换器 }
STM32F4寄存器初始化系列:三重ADC——DMA的更多相关文章
- stm32之TIM+ADC+DMA采集50HZ交流信号
http://cache.baiducontent.com/c?m=9d78d513d98207f04fece47f0d01d7174a02d1743ca6c76409c3e03984145b5637 ...
- STM32 F4 ADC DMA Temperature Sensor
STM32 F4 ADC DMA Temperature Sensor Goal: detecting temperature variations using a temperature senso ...
- 自制反汇编工具使用实例 其二(使用xmm寄存器初始化对象,以及空的成员函数指针)
在反汇编代码中,当看到xmm寄存器,第一反应是将要进行浮点操作或访问,但是更加多的情况是在使用xmm寄存器初始化局部对象. 下面是自制反汇编工具翻译出来的代码: // -[CALayer setAll ...
- STM32CubeMX 多通道 ADC DMA 配置 测试小程序
要点: 1.STM32F103C8T6单片机 2.ADC+DMA 多通道 重点是ADC+DMA配置,ADC+DMA配置如下 其他配置略略略略. 然后各位自行直看.ioc文件,生成代码后在while之前 ...
- 关于Stm32定时器+ADC+DMA进行AD采样的实现
Stm32的ADC有DMA功能这都毋庸置疑,也是我们用的最多的!然而,如果我们要对一个信号(比如脉搏信号)进行定时采样(也就是隔一段时间,比如说2ms),有三种方法: 1.使用定时器中断每隔一定时间进 ...
- 记STM32F030多通道ADC DMA读取乱序问题
问题描述通过 uint16_t ConvData[8]保存DMA搬运的ADC转换数值,但是这个数组数值的顺序总是和ADC不是顺序对应的.比如用7个通道的ADC,当设置ADC_InitStructure ...
- 【ARM】2410裸机系列-ADC数模转换
开发环境 1.硬件平台:FS2410 2.主机:Ubuntu 12.04 ADC寄存器配置 1.初始化ADC(ADCCON) 设置预分频,预分频因子,选择A/D转换通道,并选择正常模式 ...
- stm32寄存器版学习笔记08 DMA
DMA(Direct Memory Access),直接存储器访问.DMA传输方式无需CPU直接控制传输,通过硬件为RAM与I/O设备开辟一条直接传送数据的通路,使CPU效率大大提高.stm32f10 ...
- stm32 ADC模数转换 ADC多通道 ADC DMA
通过调节电位器,改变AD转换值和电压值 STM32F1 ADC 配置步骤 1.使能GPIO时钟和ADC时钟 2.配置引脚模式为模拟输入 3.配置ADC的分频因子 4.初始化ADC参数,ADC_Init ...
- STM32F4 SPI2初始化及收发数据【使用库函数】
我的STM32F4 Discovery上边有一个加速度传感器LIS302DL.在演示工程中,ST的工程师使用这个传感器做了个很令人羡慕的东西:解算开发板的姿态.当开发板倾斜时候,处于最上边的LED点亮 ...
随机推荐
- Velocity模板引擎的的使用示例(入门级)
简单说下这个引擎的两个分支(虽然语言不同调用方法大同小异): 1.Java平台下的:org.apache.velocity 2..Net平台下的:NVelocity 注:本文章不涉及到后端只说模板的使 ...
- python3获取列表逆序的五种方式
前言 我们将这几种方式分为两类,一种是对列表本身进行操作,改变对应内存中的值,另一种是带有返回值的,相当于拷贝了一份 对列表内存中进行操作 sort() 函数 a = [1,2,3,4] a.sort ...
- Docker使用Calico配置网络模式
一.Calico介绍 Calico是一种容器之间互通的网络方案,在虚拟化平台中,比如OpenStack.Docker等都需要实现workloads之间互连,但同时也需要对容器做隔离控制,就像在Inte ...
- Zabbix技术分享——使用Zabbix6.0监控业务日志
企业日常IT运维过程中,常会碰到需要监控业务日志的情况,以下将介绍如何使用Zabbix6.0监控业务日志. 应用场景描述: 企业IT运维部门使用自建zabbix平台对公司某业务系统进行了监控.近段时间 ...
- 【Shell案例】【取指定列的方式$5 p[6],双括号运算、awk、管道运算】8、统计所有进程占用内存大小的和
假设 nowcoder.txt 内容如下:root 2 0.0 0.0 0 0 ? S 9月25 0:00 [kthreadd]root 4 0.0 0.0 0 0 ? I< 9月25 0:00 ...
- Elasticsearch模糊查询、多字段in查询、时间范围查询,DSL和java API两种方式
Elasticsearch模糊查询.多字段in查询.时间范围查询,DSL和java API两种方式 项目场景: Elasticsearch模糊查询某字段.多字段in查询.时间范围查询,通过DSL和ja ...
- [编程基础] Python对象的浅拷贝与深拷贝笔记
Python中的赋值语句不创建对象的副本,它们只将名称绑定到对象.对于不可变的对象,这通常没有什么区别.但是对于处理可变对象或可变对象的集合,您可能需要寻找一种方法来创建这些对象的"真实副本 ...
- python进阶之路15 之异常处理、生成器相关
异常捕获处理 1.异常 异常就是代码运行报错 行业术语叫bug 代码运行中一旦遇到异常会直接结束整个程序的运行 我们在编写代码的过程中要尽可能避免 2.异常分类 语法错误 不允许出现 一旦出现立刻改正 ...
- 小H的小屋
题解 [NOI2004]小H的小屋 前记 又鸽了好久,这回可要努力更新了 2019.6.2,痛下杀心,把电脑上所有的游戏都删掉了,提前160天奋力备考NOIP.目标:A类省队! 我是传送门 题解 这道 ...
- Ubuntu 22.04 运行 Appimage 文件
解决方法 sudo apt-get update sudo apt install fuse libfuse2 chmod a+x *.appimage 参考资料 https://bynss.com/ ...