STM32F1库函数初始化系列:DMA—ADC采集
1 void ADC_Configure(void)
2 {
3 ADC_InitTypeDef ADC_InitStructure;
4 GPIO_InitTypeDef GPIO_InitStructure;
5 RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE);
6 RCC_AHBPeriphClockCmd(RCC_APB2Periph_GPIOA , ENABLE);
7
8 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6;
9 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
10 GPIO_Init(GPIOA, &GPIO_InitStructure);
11
12 RCC_ADCCLKConfig(RCC_PCLK2_Div4); //配置ADC时钟分频 2,4,6,8
13 ADC_InitStructure.ADC_Mode=ADC_Mode_Independent; //独立工作模式
14 ADC_InitStructure.ADC_ScanConvMode=ENABLE; //工作在扫描模式
15 ADC_InitStructure.ADC_ContinuousConvMode=ENABLE; //连续模式
16 ADC_InitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None; //转换由软件触发启动
17 //ADC_InitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_T1_CC1; //定时器1的捕获比较通道1作为外部触发转换源(T1_2,T1_3,T2_2,T4_4)
18 //ADC_InitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_Ext_1T11; //外部中断通道11的事件作为外部触发转换源
19 ADC_InitStructure.ADC_DataAlign=ADC_DataAlign_Right; //ADC数据右对齐
20 ADC_InitStructure.ADC_NbrOfChannel =5; //进行规则转换的ADC通道的数目为2
21 ADC_Init(ADC1,&ADC_InitStructure);
22 ADC_RegularChannelConfig(ADC1,ADC_Channel_2,1,ADC_SampleTime_55Cycles5); //选择通道2,转换顺序1,采样时间为1.5周期
23 ADC_RegularChannelConfig(ADC1,ADC_Channel_3,2,ADC_SampleTime_55Cycles5); //选择通道3,转换顺序2,采样时间为1.5周期
24 ADC_RegularChannelConfig(ADC1,ADC_Channel_4,3,ADC_SampleTime_55Cycles5); //选择通道4,转换顺序3,采样时间为1.5周期
25 ADC_RegularChannelConfig(ADC1,ADC_Channel_5,4,ADC_SampleTime_55Cycles5); //选择通道5,转换顺序4,采样时间为1.5周期
26 ADC_RegularChannelConfig(ADC1,ADC_Channel_6,5,ADC_SampleTime_55Cycles5); //选择通道6,转换顺序5,采样时间为1.5周期
27 ADC_DMACmd(ADC1, ENABLE);
28 ADC_Cmd(ADC1,ENABLE); //使能AD1
29 ADC_ResetCalibration(ADC1); //复位ADC1的校准寄存器
30 ADC_StartCalibration(ADC1); //开始ADC1的校准
31 while(ADC_GetCalibrationStatus(ADC1)); //等待ADC1校准完成
32 ADC_SoftwareStartConvCmd(ADC1,ENABLE); //启动ADC1转换
33 }
34 void DMA_Configure(void)
35 {
36 DMA_InitTypeDef DMA_InitStructure;
37 RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1,ENABLE);
38 DMA_DeInit(DMA1_Channel1); //复位DMA1通道
39 DMA_InitStructure.DMA_PeripheralBaseAddr=DR_ADDRESS;
40 DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)ad_value;
41 DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC; //外设作为数据传输的来源
42 DMA_InitStructure.DMA_M2M=DMA_M2M_Disable;
43 DMA_InitStructure.DMA_BufferSize = 5; //
44 DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable; //外设地址不变
45 DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable; //内存地址递增
46 DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord; //外设数据宽度为16位
47 DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord; //内存数据宽度为16位
48 DMA_InitStructure.DMA_Mode = DMA_Mode_Circular; //循环缓存模式
49 DMA_InitStructure.DMA_Priority = DMA_Priority_High; //高优先级
50 DMA_InitStructure.DMA_M2M = DMA_M2M_Disable; //没有设置内存到内存的传输
51 DMA_Init(DMA1_Channel1, &DMA_InitStructure);
52 DMA_ITConfig(DMA1_Channel1, DMA_IT_TC, ENABLE);
53 DMA_Cmd(DMA1_Channel1,ENABLE); //开启DMA1通道传输
54 }
STM32F1库函数初始化系列:DMA—ADC采集的更多相关文章
- ADC-单通道DMA到多通道DMA ADC采集修改事项
1. 使能通道IO,因为从单通道到多通道,需要添加规则转换通道数,故需要使能扫描模式,否则只能扫描第一个通道: 2. DMA模式配置需修改为循环传输模式,否则只转换一次: 3. 开启ADC规则转换通道 ...
- STM32之DMA+ADC
借用小甲鱼的经典:各位互联网的广大网友们.大家早上中午晚上好..(打下小广告,因为小甲鱼的视频真的很不错).每次看小甲鱼的视频自学都是比较轻松愉快的..我在想,如果小甲鱼出STM32的视频,我会一集不 ...
- TMS320VC5509片内ADC采集
1. ADC采集比较简单,内部的10位的ADC,AIN0-AIN3的输入,主要是用的CSL的库函数#include <csl_adc.h> ; Uint16 samplestoraage[ ...
- 关于esp32的ADC采集
对于ADC采集 程序源码如下: /* ADC1 Example This example code is in the Public Domain (or CC0 licensed, at your ...
- 关于ADC采集
对于ADC采集,想问的一些问题 1.如何初始化? 需要初始化 2.哪里可以看到是多少位采集? 3.8位ADC采集的误差是多少? 4.基准电压从哪里取?
- CC2530的ADC采集外部电压
初窥ZIGBEE 要在zigbee的组网中加入烟雾传感器的模块,所以需要用到cc2530的ADC对传感器输出的模拟信号进行采样.下面是自己对实现用CC2530的ADC采集外部电压的程序过程. 以下是A ...
- ADC采集电流相关知识
1.AD电流采样电路,是把电路中的电流用采样元件转换为电压信号,然后用ADC量化转换为相应的数字信号.需要你在被采集端串联一个采样电阻,然后采集采样电阻两端的电压,这样就可以把电流输出变换为电压输出. ...
- STM32L15x——ADC采集DMA数据只第一次正确(已解决)
前提:我用的芯片是STM32L系列,可能对其它STM32系列不完全适用,仅供参考! 一.问题描述 我在使用DMA方式读取单ADC单通道采集的数据时,发现只能正确的采集一次数据,后来的就一直与第一次的相 ...
- STM32F405的内部ADC采集
1. ADC的初始化部分基本一致,下面是引脚复用配置 void HAL_ADC_MspInit(ADC_HandleTypeDef *hadc) { GPIO_InitTypeDef GPIO_Ini ...
- STM32F103VET6 ADC采集64点做FFT变换
http://www.stmcu.org/module/forum/thread-598459-1-11.html http://bbs.21ic.com/icview-589756-1-1.html ...
随机推荐
- php + layui 文件上传 以及 拖拽上传
HTML: <div id="box"> <div id="drop_area">将文件拖拽到此区域</div> <d ...
- 学习ASP.NET Core Blazor编程系列十三——路由(完)
学习ASP.NET Core Blazor编程系列一--综述 学习ASP.NET Core Blazor编程系列二--第一个Blazor应用程序(上) 学习ASP.NET Core Blazor编程系 ...
- C# Aspose.Words.Document.PageCount 踩坑笔记(获取文档页数)
事情是这样的,我需要获取Word文档的页数,结果就遇到了这个坑人的问题. var doc = new Aspose.Words.Document(@"相对路径"); doc.Pag ...
- 【Shell案例】【tail/head/sed、echo $res ·· cat和管道】2、打印文件的最后5行
描述经常查看日志的时候,会从文件的末尾往前查看,于是请你写一个 bash脚本以输出一个文本文件 nowcoder.txt中的最后5行示例:假设 nowcoder.txt 内容如下: #include& ...
- 【每日一题】【双指针/栈/reverse】2022年2月19日-判断是否为回文字符串
给定一个长度为 n 的字符串,请编写一个函数判断该字符串是否回文.如果是回文请返回true,否则返回false. 字符串回文指该字符串正序与其逆序逐字符一致. 数据范围:0 < n \l ...
- SVNAdmin2 - 基于web的SVN管理系统
1. 介绍 SVNAdmin2 是一款通过图形界面管理服务端SVN的web程序. 正常情况下配置SVN仓库的人员权限需要登录到服务器手动修改 authz 和 passwd 两个文件,当仓库结构和人员权 ...
- Python 什么是flask框架?快速入门(flask安装,登录,新手三件套,登录认证装饰器,配置文件,路由系统,CBV)
目录 一:Python flask框架 前言 补充一下,我们前面学习的库都是叫模块,那么框架与库的区别? 二:flask 框架概述 1.简介 2.须知: 3.flask框架的优势 三:flask 安装 ...
- python从公众号文章中获取二维码
在做一个公众号采集的项目中,客户有个要求,想把二维码的url保存到数据库中,如图. 原本以为要各种骚操作各种逆向才能获取得到,没想到竟然很简单. 第一步 观察二维码url的规范 https://mp. ...
- NOIP2022 退役记
无所谓,我还能卡队线. 无所谓,我还能被卡校线.
- 阿里云Imagine Computing创新技术大赛决赛启幕!
2023年1月,由阿里云与英特尔主办,阿里云天池平台.边缘云.视频云共同承办的"新算力 新体验"Imagine Computing创新技术大赛复赛圆满落幕.经过两个多月的激烈角逐, ...