STM32F4库函数初始化系列:三重ADC——DMA
1 void _DMA_Configuration(void)
2 {
3 DMA_InitTypeDef DMA_InitStructure;
4
5 /* DMA2 Stream0 channel0 configuration */
6 DMA_InitStructure.DMA_Channel = DMA_Channel_0;
7 DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)&(ADC->CDR);
8 DMA_InitStructure.DMA_Memory0BaseAddr = (uint32_t)_AD_Value;
9 DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralToMemory;
10 DMA_InitStructure.DMA_BufferSize = 24;
11 DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
12 DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
13 DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Word;
14 DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Word;
15 DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;
16 DMA_InitStructure.DMA_Priority = DMA_Priority_High;
17 DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Disable;
18 DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_HalfFull;
19 DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single;
20 DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single;
21 DMA_Init(DMA2_Stream0, &DMA_InitStructure);
22
23 /* DMA2_Stream0 enable */
24 DMA_Cmd(DMA2_Stream0, ENABLE);
25 }
26 void _ADC_Configuration(void)
27 {
28 ADC_InitTypeDef ADC_InitStructure;
29 ADC_CommonInitTypeDef ADC_CommonInitStructure;
30
31 /* ADC Common configuration *************************************************/
32 ADC_CommonInitStructure.ADC_Mode = ADC_TripleMode_RegSimult;
33 ADC_CommonInitStructure.ADC_TwoSamplingDelay = ADC_TwoSamplingDelay_5Cycles;
34 ADC_CommonInitStructure.ADC_DMAAccessMode = ADC_DMAAccessMode_1;
35 ADC_CommonInitStructure.ADC_Prescaler = ADC_Prescaler_Div2;
36 ADC_CommonInit(&ADC_CommonInitStructure);
37
38 /* ADC1 regular channel 12 configuration ************************************/
39 ADC_InitStructure.ADC_Resolution = ADC_Resolution_10b;
40 ADC_InitStructure.ADC_ScanConvMode = ENABLE;
41 ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;
42 ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None;
43 ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
44 ADC_InitStructure.ADC_NbrOfConversion = 8;
45 ADC_Init(ADC1, &ADC_InitStructure);
46
47 ADC_RegularChannelConfig(ADC1, ADC_Channel_0 , 1, ADC_SampleTime_480Cycles);
48 ADC_RegularChannelConfig(ADC1, ADC_Channel_1 , 2, ADC_SampleTime_480Cycles);
49 ADC_RegularChannelConfig(ADC1, ADC_Channel_2 , 3, ADC_SampleTime_480Cycles);
50 ADC_RegularChannelConfig(ADC1, ADC_Channel_3 , 4, ADC_SampleTime_480Cycles);
51 ADC_RegularChannelConfig(ADC1, ADC_Channel_4 , 5, ADC_SampleTime_480Cycles);
52 ADC_RegularChannelConfig(ADC1, ADC_Channel_5 , 6, ADC_SampleTime_480Cycles);
53 ADC_RegularChannelConfig(ADC1, ADC_Channel_6 , 7, ADC_SampleTime_480Cycles);
54 ADC_RegularChannelConfig(ADC1, ADC_Channel_7 , 8, ADC_SampleTime_480Cycles);
55 /* Enable ADC1 DMA */
56 ADC_DMACmd(ADC1, ENABLE);
57
58 /* ADC2 regular channel 12 configuration ************************************/
59 ADC_Init(ADC2, &ADC_InitStructure);
60 /* ADC2 regular channel12 configuration */
61 ADC_RegularChannelConfig(ADC2, ADC_Channel_8 , 1, ADC_SampleTime_480Cycles);
62 ADC_RegularChannelConfig(ADC2, ADC_Channel_9 , 2, ADC_SampleTime_480Cycles);
63 ADC_RegularChannelConfig(ADC2, ADC_Channel_10, 3, ADC_SampleTime_480Cycles);
64 ADC_RegularChannelConfig(ADC2, ADC_Channel_11, 4, ADC_SampleTime_480Cycles);
65 ADC_RegularChannelConfig(ADC2, ADC_Channel_12, 5, ADC_SampleTime_480Cycles);
66 ADC_RegularChannelConfig(ADC2, ADC_Channel_13, 6, ADC_SampleTime_480Cycles);
67 ADC_RegularChannelConfig(ADC2, ADC_Channel_14, 7, ADC_SampleTime_480Cycles);
68 ADC_RegularChannelConfig(ADC2, ADC_Channel_15, 8, ADC_SampleTime_480Cycles);
69
70 /* ADC3 regular channel 12 configuration ************************************/
71 ADC_Init(ADC3, &ADC_InitStructure);
72 /* ADC3 regular channel12 configuration */
73 ADC_RegularChannelConfig(ADC3, ADC_Channel_4 , 1, ADC_SampleTime_480Cycles);
74 ADC_RegularChannelConfig(ADC3, ADC_Channel_5 , 2, ADC_SampleTime_480Cycles);
75 ADC_RegularChannelConfig(ADC3, ADC_Channel_6 , 3, ADC_SampleTime_480Cycles);
76 ADC_RegularChannelConfig(ADC3, ADC_Channel_7 , 4, ADC_SampleTime_480Cycles);
77 ADC_RegularChannelConfig(ADC3, ADC_Channel_8 , 5, ADC_SampleTime_480Cycles);
78 ADC_RegularChannelConfig(ADC3, ADC_Channel_9 , 6, ADC_SampleTime_480Cycles);
79 ADC_RegularChannelConfig(ADC3, ADC_Channel_14, 7, ADC_SampleTime_480Cycles);
80 ADC_RegularChannelConfig(ADC3, ADC_Channel_15, 8, ADC_SampleTime_480Cycles);
81
82 /* Enable DMA request after last transfer (multi-ADC mode) ******************/
83 ADC_MultiModeDMARequestAfterLastTransferCmd(ENABLE);
84
85 /* Enable ADC1 **************************************************************/
86 ADC_Cmd(ADC1, ENABLE);
87
88 /* Enable ADC2 **************************************************************/
89 ADC_Cmd(ADC2, ENABLE);
90
91 /* Enable ADC3 **************************************************************/
92 ADC_Cmd(ADC3, ENABLE);
93
94 /* Start ADC1 Software Conversion */
95 ADC_SoftwareStartConv(ADC1);
96
97 }
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 ...
- STM32CubeMX 多通道 ADC DMA 配置 测试小程序
要点: 1.STM32F103C8T6单片机 2.ADC+DMA 多通道 重点是ADC+DMA配置,ADC+DMA配置如下 其他配置略略略略. 然后各位自行直看.ioc文件,生成代码后在while之前 ...
- STM32F4 SPI2初始化及收发数据【使用库函数】
我的STM32F4 Discovery上边有一个加速度传感器LIS302DL.在演示工程中,ST的工程师使用这个传感器做了个很令人羡慕的东西:解算开发板的姿态.当开发板倾斜时候,处于最上边的LED点亮 ...
- 记STM32F030多通道ADC DMA读取乱序问题
问题描述通过 uint16_t ConvData[8]保存DMA搬运的ADC转换数值,但是这个数组数值的顺序总是和ADC不是顺序对应的.比如用7个通道的ADC,当设置ADC_InitStructure ...
- 关于Stm32定时器+ADC+DMA进行AD采样的实现
Stm32的ADC有DMA功能这都毋庸置疑,也是我们用的最多的!然而,如果我们要对一个信号(比如脉搏信号)进行定时采样(也就是隔一段时间,比如说2ms),有三种方法: 1.使用定时器中断每隔一定时间进 ...
- stm32 ADC模数转换 ADC多通道 ADC DMA
通过调节电位器,改变AD转换值和电压值 STM32F1 ADC 配置步骤 1.使能GPIO时钟和ADC时钟 2.配置引脚模式为模拟输入 3.配置ADC的分频因子 4.初始化ADC参数,ADC_Init ...
- STM32F407 ADC DMA 采样实验
转载:http://home.eeworld.com.cn/my/space-uid-361439-blogid-239703.html STM32F407ADC采样实验 热度 1已有 5472 次阅 ...
- 【ARM】2410裸机系列-ADC数模转换
开发环境 1.硬件平台:FS2410 2.主机:Ubuntu 12.04 ADC寄存器配置 1.初始化ADC(ADCCON) 设置预分频,预分频因子,选择A/D转换通道,并选择正常模式 ...
- stm32CubeMx 实现单通道ADC DMA采集
今天要做的是ADC单通道DMA采集实验 MCU : STM32F429 开发工具:STM32CubeMx 版本号 5.0.0 实验目的:实现ADC1 13通道 DMA采集 一 :简介 首先,我们来看一 ...
随机推荐
- i春秋Fuzz
点开只有三个单词plz fuzz parameter 大概意思就是让我们疯狂尝试参数... 我们通过url尝试传入参数 ?user=123 ?name=123 ?username=123 ?id=12 ...
- (GCC) gcc编译选项 -Wl, -start-group,whole-archive,-Wl, Bstatic
1. start-group 编译选项 假设程序x依赖三个静态库:libX1.a.libX2.a和libX3.a,而libX2.a又依赖libX1.a,libX3.a依赖libX2.a和libX1.a ...
- 解决 linux mint 安装显卡驱动失败解决
前言 安装显卡驱动的基本流程就是,禁用 nouveau驱动,然后安装 nnvidia驱动,然后重启电脑.但是我重新启动, 使用NVIDIA X Server Settings查看一直显示空白,毫无疑问 ...
- Jmeter中通过V函数使Foreach控制器有多个输入变量
需求:Foreach 控制器只能有一个输入变量.但是实际情况会出现需要使用多个变量. 如:上一个接口获取到多个字段且每个字段用Json提取器获取的时候都是一个集合,期望将获取到的字段传给下一个接口. ...
- K8s安装乐维5.0应用部署文档
乐维产品包具体打包为4个镜像包,分别为:mysql5.7.36.tar.zabbix_server.tar.itops_v1_4_x86_64.tar.bpm0.1.tar,对应的配置文件分别为:da ...
- dotnet new cli 以及Abp-cli命令的简单使用
1:要求 首先dotnet new 需要 .NET Core 3.1 SDK 以及更高版本 dotnet new - 根据指定的模板,创建新的项目.配置文件或解决方案 2:变化 从 .NET 7 S ...
- Kubernetes单机创建MySQL+Tomcat演示程序:《Kubernetes权威指南》第一章demo报错踩坑
引言 最近做边缘计算项目,因为没有基础,所以首先学习Kubernetes.感觉系统的中文入门资料比较少,只找到<Kubernetes权威指南>(龚正.吴治辉等著,下称<指南>) ...
- 2021-01-26HDOJ_Lowest_Bit
挺水的,但也学到了简单方法 题目如下: Lowest Bit Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (J ...
- 【基于OpenAI的ChatGPT】搭建属于自己的微信聊天机器人(附带注册英国手机号码方式)
前言:这几天 OpenAI的聊天机器人很火,前两天也爆发了很多关于ChatGPT接入微信的文章.我就顺便[借用别人已有的项目],来部署一个属于自己的微信聊天机器人.项目地址见下文. 1.首先需要有一个 ...
- JavaScript:操作符:空值合并运算符(??)
这是一个新增的运算符,它的功能是: 对于表达式1 ?? 表达式2,如果表达式1的结果是null或者undefined时,返回表达式b的结果:否则返回表达式a的结果: 它与赋值运算符结合使用,即??=, ...