注意事项

暂时只做了单通道中断方式的采集
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采集相关推荐

  1. STM32实现ADC采集(待优化)

    1.ADC简介 STM32F103 系列最少都拥有 2 个 ADC ,我们选择的 STM32F103RCT 包含有 3 个 ADC,STM32的最大转换速率为1Mhz,也就是转换时间为1us,除此之外 ...

  2. STM32学习-ADC数值采样

    文章目录 一.前言 二.ADC配置库函数解读 1.复位函数ADC_DeInit 2.初始化函数ADC_Init 3.使能函数 4.整合 三.读取ADC数值 四.由所读到的ADC值转化为实际电压 一.前 ...

  3. STM32的ADC采集的引脚汇总

  4. stm32学习笔记---ADC电压采集

    1.  ①电压输入范围 ADC 输入范围为:VREF- ≤ VIN ≤ VREF+.由 VREF-.VREF+ .VDDA .VSSA.这四个外部 引脚决定. 我们在设计原理图的时候一般把 VSSA ...

  5. STM32学习笔记(七) ADC模数转换测电平(普通和DMA模式)

    嵌入式系统在微控制领域(温度,湿度,压力检测,四轴飞行器)中占据着重要地位,这些功能的实现是由微处理器cpu(如stm32)和传感器以及控制器共同完成的,而连接他们,使它们能够互相正常交流的正是本小节 ...

  6. STM32之ADC的学习心得(std+HAL)

    STM32的ADC配置问题 问题介绍 最近要使用STM32F103C8T6来做个数字万用表,于是开始学习STM32,要用到32内部的12位ADC 等于是刚刚接触STM32,一切从零开始,现在分享下如何 ...

  7. STM32学习笔记一一ADC

    前言: 为了方便查看博客,特意申请了一个公众号,附上二维码,有兴趣的朋友可以关注,和我一起讨论学习,一起享受技术,一起成长. github:my github 注:博客所涉及的关于 stm32 的代码 ...

  8. STM32学习笔记(13)——模数转换ADC

    这个月一直忙于准备考试,已经考完一半科目了,偷闲写了这篇文章.因为还没考完试,估计还得咕一段时间了. STM32学习笔记(13)--模数转换ADC 第一部分:ADC功能框图 一.输入电压 二.输入通道 ...

  9. STM32学习1之ADC+DMA(使用定时器触发)

    笔者之前用STM32的ADC外设通过DMA通道来传输数据,通常有两种方法,一个是直接通过DMA通道传输数据,二是通过定时器触发.相较而言,后者在实际中比较常使用,因为ADC读取传感器数据需要一段时间, ...

最新文章

  1. 这位年仅27岁的阿联酋人工智能部长,竟计划2117年火星造城,真是有钱帅气又任性!
  2. 第一课 第四节 数据转换
  3. JavaScript进阶1-学习笔记
  4. mysql怎么刷题_面试刷题mysql1:一条sql语句是如何经过mysql的体系结构的?
  5. Python脚本做接口测试,抛弃接口测试工具是否可行?(一)
  6. 2 找图像连通域_MATLAB--数字图像处理 简单人脸识别
  7. maya显示已安装_【3D建模】Maya操作秘籍83招(一)
  8. NASA好奇号发来战报,32368张火星路况实拍数据集上线 | 资源
  9. 使用微软MediaCreationTool21H1.exe制作u盘windous10启动盘
  10. docker视频教程 百度云网盘
  11. Unity 2019 安装教程
  12. WPS标题段前间距设置无效解决方案
  13. it黑马中学习的mybatis配置
  14. 学习神经网络:搭建一个vgg-11模型在FashionMNIST训练
  15. 六西格玛dfss_DFSS六西格玛设计的基本内容
  16. 使用javabean把小写金额转换成大写金额
  17. FPGA——用VGA时序显示图像原理详解(2)
  18. PHP的realpath(...)
  19. JS树结构操作:查找、遍历、筛选、树结构和列表结构相互转换
  20. 2022年全球与中国光通信芯片市场现状及未来发展趋势

热门文章

  1. numpy合并两个ndarry或多个
  2. kafka分区与分组原理_Kafka工作原理
  3. java读取打包时间_Java获取响应的日期时间,这样写是否合理?
  4. idea如何打开pom引用依赖_idea 怎么引入在pom.xml的jar
  5. c 直接访问mysql_C语言访问MySQL数据库的方法
  6. ei会议和ei源刊的区别_核心期刊SCI论文发表 | SCI和EI和核心有什么区别
  7. 【bzoj1036】 ZJOI2008—树的统计Count
  8. sql server实用工具sql prompt的安装与注册
  9. 笔记-Microsoft SQL Server 2008技术内幕:T-SQL语言基础-02 单表查询
  10. python txt转dataframe_Python格式化解析不规则txt文本并转为dataframe