今天讲解“STM32F103 ADC单通道单次采集”功能。
今天提供并讲解的软件工程,基于软件工程“A0.0.0(STM32F10x_TIM延时)”修改而来。若不知道如何而来,请关注微信公众号“EmbeddDeveloper”获取更多信息。
本着免费分享的原则,将讲解的工程源代码分享给大家,还望看到的朋友关注一下微信公众号,增加一下人气。
每天提供下载的“软件工程”都是在硬件板子上进行多次测试、并保证没问题才上传至360云盘。
今天的软件工程下载地址(360云盘):
https://yunpan.cn/cPGrE6DLHX24R 访问密码 de4f
STM32F10x的资料可以在我360云盘下载:
https://yunpan.cn/crBUdUGdYKam2 访问密码 ca90
关于“STM32F103 ADC单通道单次采集” 我把重要的几点在下面分别讲述,若不明白,请关注微信公众号“EmbeddDeveloper”查阅或留言。
一、RCC时钟配置
该函数位于在bsp.c文件下面;
使能RCC时钟:RCC_APB2Periph_ADC1
二、引脚配置
该函数位于在adc.c文件下面;
对AD通道2所使用的引脚进行配置。
问题:
细心的人可能会发现数据手册中PA2引脚的复用功能是“ADC123_IN2”,我们明明使用的ADC1,为什么不是ADC1_IN2或者ADC2_IN2?
大家先想一下为什么是ADC123_IN2,最后我会揭晓答案。
三、ADC配置
该函数位于在adc.c文件下面;
对AD进行配置。
配置的每一条语句都有注释,请看源代码,重点讲一下“ADC_Channel_2”,这里必须和上面引脚配置对应起来,也就是通道的引脚配置一致才行。
四、电压检测
该函数位于在adc.c文件下面;
调用这个接口就可以采集电压值。
函数使用单通道单次,软件触发采样电压值,这里采样8次(更加自己情况可以选择多次),算平均,最后得出电压值(1000倍值)。
五、主函数应用
该函数位于在main.c文件下面;
主要就是采集电压,通过串口打印出来(1000倍值)。
六、揭晓ADC123_IN2
上面的问题有自己想明白了的吗?
其实很简单的,ADC123_IN2顾名思义,它就是包含了ADC1、ADC2、ADC3的IN2的意思。也就是说,你们使用ADC2的通道2也是这个“ADC123_IN2”通道。
方便大家学习,我把两个工程都上传至360云盘,不行的朋友可以亲自下载代码试试。
对比的软件工程下载地址:
https://yunpan.cn/cPGRAYZrdvdPf 访问密码 2ce1
我的软件工程排版格式都是严格按照一定的规范排版的,请参见:"软件编辑排版要求及说明.doc "
下载地址(360云盘):https://yunpan.cn/cPGHPUC6SETyG 访问密码6ca7
关键字:STM32 ADC 单通道 单次采集
引用地址:
STM32_ADC单通道单次采集
推荐阅读最新更新时间:2024-03-16 15:37
基于STM32步进电机多细分控制的设计
本文主要介绍了一种基于STM32的混合式步进电机控制方案,STM32产生PWM(脉宽调制信号),利用PWM完成DAC转换,通过PWMDAC的输出电压实现对步进电机的多细分控制。该设计相比利用DAC数模转换芯片的设计方案具有电路简单,费效比高的优点,而且可实现步进电机十六分之一步的驱动控制,精度较高。 1、硬件设计 硬件设计框图如图1所示,主要由PC上位机给STM32F103发送控制命令,通过STM32F103控制A3988,从而驱动两个步进电机转动。其中,STM32F103是意法半导体公司生产的基于ARMCortex—M3内核的微控制器,内核架构先进,性能优越,主频可达72MHz,执行效率高,具有较高的运算能力及数据处理功能,
[单片机]
stm32的通用计数器用于编码器的脉冲计数
这周做电脑鼠的编码器模块,整整的折腾了一周。 这过程真是让我们哭笑不得,我们打算用TIM3的CH3和CH4通道采集左电机的pwm来测速和测距,用TIM4的CH2和CH1来测右电机的。 写代码时,我们先做的是左电机的,整整闹到了礼拜五,才发现通用定时器的CH3和CH4通道不能用来做PWM输入,晕!!下面是我们的配置之一,拿出来与大家分享分享! 我们用GPIO_B_7,TIMER4的二通道 void MY_CONFIG(void) { NVIC_InitTypeDef NVIC_InitStructure; GPIO_InitTypeDef GPIO_InitStructure; TIM_TimeBaseInitTypeD
[单片机]
研究人员研发高功率效率ADC芯片 或可用于自动驾驶汽车
据外媒报道,杨百翰大学(Brigham Young University)研究人员研发出了全球功率效率最高的高速模拟数字转换器(ADC)芯片。ADC是一项几乎存在于所有电子设备中的微型技术,可将模拟信号(如无线电波)转换为数字信号。 (图片来源:https://www.eurekalert.org/) 杨百翰大学制造的ADC拥有目前全球最高的功率效率,在10GHz的超宽带无线通信中仅消耗21毫瓦的功率,而在相同的速度下,目前的ADC消耗数百毫瓦甚至数瓦的功率。 研究人员面临的主要挑战是,通信系统设备中的带宽越来越大,意味着电路的能耗越来越多。为了解决这一问题,杨百翰大学团队将重点放在ADC电路的关键部分DAC上
[汽车电子]
STM32 学习笔记 一.矩阵键盘
刚刚接触STM32,感觉和arduino完全是两个难度,如果说arduino是乐高积木,那我感觉STM32就跟盖楼一样,哈哈,是真的难,真的极具挑战性,可能是我刚开始学觉得难,到后面熟练了应该会好一些,言归正传,就讲一讲我们学长给我们下的任务矩阵键盘。 学长学姐们做的是九键的矩阵键盘,我们做的是四键的,难度其实相差不大,换汤不换药的类型,原理就是一二号线通高电平,三四号线低电平,然后交换,让一二号低电平,三四号高电平这样就可以确定是哪个按键被按下。 OK上代码 key.c函数 #include key.h #include delay.h #include usart.h void KEY_Init1(void)
[单片机]
STM32类型定义
typedef signed long s32; typedef signed short s16; typedef signed char s8; typedef signed long const sc32; /* Read Only */ typedef signed short const sc16; /* Read Only */ typedef signed char const sc8; /* Read Only */ typedef volatile signed long vs32; typedef volatile signed short vs16; typedef volatile signed char
[单片机]
STM32 ADC与DMA多通道处理
#define ADC1_DR_Address ((uint32_t)0x4001244C)//ADC1 DR寄存器基地址 DMA_InitTypeDef DMA_InitStructure; //DMA ADC_InitTypeDef ADC_InitStructure; //ADC #define ADC_CH 2 //通道数 #define ADC_num 10 //采集点数 vu16 After_filter ; //用来存放求平均值之后的结果 vu16 ADCConvertedValue ;//AD数据缓存 /*****************************************************
[单片机]
基于STM32的ADS8684 驱动
环境:STM32F103RC,主频 72MHz(外部晶振)或64MHz(HSI) 普通IO口模拟spi note:自动扫描模式下改完量程,必须要增加AUTO_RST_Mode()。 代码实现: // ADS8684.c #define ADS8684_GLOBALS #include ADS8684.h /********************************************************普通IO口模拟spi驱动********************************************/ /*********************************
[单片机]
STM32基础知识:中断系统
中断系统 1 数据传输方式 无条件传输 :处理器不必了解外部设备状态,直接进行数据传输,用于指示灯和按键等简单设备.。 查询方式 :传输前,一方先查询另一方的状态,若已经准备好就传输,否则就继续查询。 中断方式 :一方通过申请中断的方式与另一方进行数据传输,收发双方可以并行工作。 直接存储器访问 :处理器内部建立片内外设和内存之间的数据传输通道,传输过程不需要处理器参与。 2 中断系统的基本概念 2.1 中断全过程 中断发生: 当CPU在处理某一事件A时,发生了另一事件B,请求CPU迅速去处理。 中断处理: CPU暂停当前的工作,转去处理事件B。 中断返回: 当CPU将事件B处理完毕后,再回到事件A中被暂停的地方继
[单片机]