STM32学习——ADC采集
注意事项
暂时只做了单通道中断方式的采集
1.选择输入引脚时就已经确定了后面ADC的转换通道ADC_Channel
编程步骤
1.初始化ADC用到的GPIO
2.初始化ADC并设置其工作参数
3.设置ADC的时钟(分频因子)
4.设置ADC通道、顺序以及采样时间
5.使能ADC中断,并设置中断方式
6.使能ADC,并校准
7.使用软件触发ADC转换
代码实现
(1)配置GPIO
static void ADC_GPIO_Config(void)
{GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN;GPIO_Init(GPIOC,&GPIO_InitStructure);
}
(2)配置中断NVIC
#define ADC_IRQ ADC1_2_IRQnstatic void ADC_NVIC_Config()
{NVIC_InitTypeDef NVIC_InitStructure;// 优先级分组NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);// 配置中断优先级NVIC_InitStructure.NVIC_IRQChannel = ADC_IRQ;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);
}
(3)配置ADC工作方式并初始化
static void ADC_Mode_Config(void)
{ADC_InitTypeDef ADC_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE);ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;// 禁止扫描模式,多通道才要,单通道不需要ADC_InitStructure.ADC_ScanConvMode = DISABLE ; // 连续转换模式ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;// 不用外部触发转换,软件开启即可ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;// 转换结果右对齐ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;// 转换通道1个ADC_InitStructure.ADC_NbrOfChannel = 1; ADC_Init(ADC1,&ADC_InitStructure);//设置分频因子RCC_ADCCLKConfig(RCC_PCLK2_Div8 );//设置ADC通道为1,第一个转换,采样周期为55.5个时钟周期ADC_RegularChannelConfig(ADC1,ADC_Channel_11,1,ADC_SampleTime_55Cycles5);//ADC转换结束后产生中断ADC_ITConfig(ADC1,ADC_IT_EOC,ENABLE);//开启ADC,并开始转换ADC_Cmd(ADC1,ENABLE);//初始化ADC校准寄存器ADC_ResetCalibration(ADC1);//while(ADC_GetResetCalibrationStatus(ADC1));//ADC开始校准ADC_StartCalibration(ADC1);//while(ADC_GetCalibrationStatus(ADC1));ADC_SoftwareStartConvCmd(ADC1, ENABLE);
}
(4)完成ADC初始化
void ADC_Config(void)
{ADC_GPIO_Config();ADC_Mode_Config();ADC_NVIC_Config();
}
(6)编写中断服务函数
#define ADC1_2_IRQHandlervoid ADC_IRQHandler(void)
{if(ADC_GetITStatus(ADC1,ADC_IT_EOC)==SET){ADC_ClearITPendingBit(ADC1,ADC_IT_EOC);ADCvalue=ADC_GetConversionValue(ADC1);}
}
(7)主函数
利用printf打印出AD转换得到的结果
int main(void)
{USART_Config();ADC_Config();printf("hello,world!");while(1){ADCvalueLocal=(float)ADCvalue/4096*3.3;printf("\r\n The current AD value = %f V \r\n",ADCvalueLocal);Delay(0xffffff);}
}
STM32学习——ADC采集相关推荐
- STM32实现ADC采集(待优化)
1.ADC简介 STM32F103 系列最少都拥有 2 个 ADC ,我们选择的 STM32F103RCT 包含有 3 个 ADC,STM32的最大转换速率为1Mhz,也就是转换时间为1us,除此之外 ...
- STM32学习-ADC数值采样
文章目录 一.前言 二.ADC配置库函数解读 1.复位函数ADC_DeInit 2.初始化函数ADC_Init 3.使能函数 4.整合 三.读取ADC数值 四.由所读到的ADC值转化为实际电压 一.前 ...
- STM32的ADC采集的引脚汇总
- stm32学习笔记---ADC电压采集
1. ①电压输入范围 ADC 输入范围为:VREF- ≤ VIN ≤ VREF+.由 VREF-.VREF+ .VDDA .VSSA.这四个外部 引脚决定. 我们在设计原理图的时候一般把 VSSA ...
- STM32学习笔记(七) ADC模数转换测电平(普通和DMA模式)
嵌入式系统在微控制领域(温度,湿度,压力检测,四轴飞行器)中占据着重要地位,这些功能的实现是由微处理器cpu(如stm32)和传感器以及控制器共同完成的,而连接他们,使它们能够互相正常交流的正是本小节 ...
- STM32之ADC的学习心得(std+HAL)
STM32的ADC配置问题 问题介绍 最近要使用STM32F103C8T6来做个数字万用表,于是开始学习STM32,要用到32内部的12位ADC 等于是刚刚接触STM32,一切从零开始,现在分享下如何 ...
- STM32学习笔记一一ADC
前言: 为了方便查看博客,特意申请了一个公众号,附上二维码,有兴趣的朋友可以关注,和我一起讨论学习,一起享受技术,一起成长. github:my github 注:博客所涉及的关于 stm32 的代码 ...
- STM32学习笔记(13)——模数转换ADC
这个月一直忙于准备考试,已经考完一半科目了,偷闲写了这篇文章.因为还没考完试,估计还得咕一段时间了. STM32学习笔记(13)--模数转换ADC 第一部分:ADC功能框图 一.输入电压 二.输入通道 ...
- STM32学习1之ADC+DMA(使用定时器触发)
笔者之前用STM32的ADC外设通过DMA通道来传输数据,通常有两种方法,一个是直接通过DMA通道传输数据,二是通过定时器触发.相较而言,后者在实际中比较常使用,因为ADC读取传感器数据需要一段时间, ...
最新文章
- 这位年仅27岁的阿联酋人工智能部长,竟计划2117年火星造城,真是有钱帅气又任性!
- 第一课 第四节 数据转换
- JavaScript进阶1-学习笔记
- mysql怎么刷题_面试刷题mysql1:一条sql语句是如何经过mysql的体系结构的?
- Python脚本做接口测试,抛弃接口测试工具是否可行?(一)
- 2 找图像连通域_MATLAB--数字图像处理 简单人脸识别
- maya显示已安装_【3D建模】Maya操作秘籍83招(一)
- NASA好奇号发来战报,32368张火星路况实拍数据集上线 | 资源
- 使用微软MediaCreationTool21H1.exe制作u盘windous10启动盘
- docker视频教程 百度云网盘
- Unity 2019 安装教程
- WPS标题段前间距设置无效解决方案
- it黑马中学习的mybatis配置
- 学习神经网络:搭建一个vgg-11模型在FashionMNIST训练
- 六西格玛dfss_DFSS六西格玛设计的基本内容
- 使用javabean把小写金额转换成大写金额
- FPGA——用VGA时序显示图像原理详解(2)
- PHP的realpath(...)
- JS树结构操作:查找、遍历、筛选、树结构和列表结构相互转换
- 2022年全球与中国光通信芯片市场现状及未来发展趋势
热门文章
- numpy合并两个ndarry或多个
- kafka分区与分组原理_Kafka工作原理
- java读取打包时间_Java获取响应的日期时间,这样写是否合理?
- idea如何打开pom引用依赖_idea 怎么引入在pom.xml的jar
- c 直接访问mysql_C语言访问MySQL数据库的方法
- ei会议和ei源刊的区别_核心期刊SCI论文发表 | SCI和EI和核心有什么区别
- 【bzoj1036】 ZJOI2008—树的统计Count
- sql server实用工具sql prompt的安装与注册
- 笔记-Microsoft SQL Server 2008技术内幕:T-SQL语言基础-02 单表查询
- python txt转dataframe_Python格式化解析不规则txt文本并转为dataframe