功能介绍放开头, 使用便捷无需愁
这是全网最详细、性价比最高的STM32实战项目入门教程,通过合理的硬件设计和详细的视频笔记介绍,硬件使用STM32F103主控资料多方便学习,通过3万字笔记、12多个小时视频、20多章节代码手把手教会你如何开发和调试。让你更快掌握嵌入式系统开发。
V3.3.0-STM32智能小车
视频: https://www.bilibili.com/video/BV16x4y1M7EN/?spm_id_from=333.337.search-card.all.click
V3:HAL库开发、功能:PID速度控制、PID循迹、PID跟随、遥控、避障、PID角度控制、视觉控制、电磁循迹、RTOS等功能。
我们的智能小车用到了ADC测量电池电压的功能,这章节我们做一下。
我们的一篇在这里
[第一篇]
什么是ADC
百度百科介绍:
我们知道万用表 电压表可以测量电池,或者电路电压。那么我们是否可以通过单片机获得电压,方便我 们监控电池状态
如何测量我们的锂电池电压那?锂电池电压12V左右,单片机ADC最大测量电压3.3V,这里我们需要分 压电路分压。
然后我们通过电阻分压,显而易见 ADC点的电压是VBAT_IN的 五分之一
软件初始化一下ADC 。
然后注意调长一点采样时间、这样精度才会更高一点。
在adc.c文件添加ADC相关函数
/*******************
* @brief 电池电压测量计算函数
* @param 无
* @return 小车电池电压
*
*******************/
float adcGetBatteryVoltage(void)
{
HAL_ADC_Start(&hadc2);//启动ADC转化
if(HAL_OK == HAL_ADC_PollForConversion(&hadc2,50))//等待转化完成、超时时间50ms
return (float)HAL_ADC_GetValue(&hadc2)/4096*3.3*5;//计算电池电压
return -1;
}
在main中调用显示函数显示电压
sprintf((char*)OledString, 'U:%.2fV', adcGetBatteryVoltage());
OLED_ShowString(0,2,OledString,12);//这个是oled驱动里面的,是显示位置的一个函数,
关键字:ADC 采集电压 STM32
引用地址:
ADC采集电压和显示 基于STM32的ADC—电压采集
推荐阅读最新更新时间:2024-11-24 07:25
欧胜推出用于消费性产品的立体声ADC解决方案
欧胜微电子(伦敦股票交易所:WLF.L)日前宣布:欧胜在其Pure Sound音频产品系列引入新成员WM8783,这是一款超低引脚数、低功耗立体声模拟数字转换器(ADC)解决方案。该设计专为各种可录制媒体应用提供高质量线路输入音频性能而设计,这些应用包括各种LCD 电视、机顶盒以及DVD刻录机等。 WM8783是一款易于集成的、简单“即插即用”式器件,需一个3.3V单电源。WM8783拥有目前市场上最少的ADC引脚数量,且仅需两个解耦电容。低功耗WM8783也非常适合各种电池供电的应用,为系统设计人员提供一个易于使用的、高品质线路输入转换路径,因此可极大地节省设计时间、印制电路板(PCB)空间以及音频
[模拟电子]
MSP432(Keil5)——9.ADC驱动
本次例程驱动了板载的ADC来读取一个模拟的角度传感器,大家可以在ADC读取中断里面换成其他的计算,具体引脚见程序代码。 adc.c #include adc.h void ADC_Init(void) { /* Initializing ADC (MCLK/1/4) */ MAP_ADC14_enableModule(); MAP_ADC14_initModule(ADC_CLOCKSOURCE_MCLK, ADC_PREDIVIDER_1, ADC_DIVIDER_4, 0); /* Configuring GPIOs (5.5 A0) */ MAP_GPIO_setAsPeripher
[单片机]
聊聊STM32芯片的DFU编程及相关话题
相当部分的 STM32芯片都带USB模块,有时我们会考虑利用STM32芯片的USB模块进行程序代码的下载或升级。USB协议中有专门针对设备固件升级的类协议,即可以通过DFU类协议进行产品固件的加载或更新。 关于STM32产品的DFU程序下载和升级,ST官方有相关的资料文档。可以去 www.stmcu.com.cn 或者去 www.st.com 搜索DFUse下载相关资料。 有个用户手册UM0412详细介绍了如何利用ST官方软件工具DfuSe进行相关编程操作。顺便提醒下,下载DfuSe安装包解压运行DfuSe_Demo_Vxx_Setup.exe之后,还不算安装完成,还得安装针对DfuSe的WINDOWS环境下的
[单片机]
STM32(二)之GPIO操作(2)——通过按键控制LED灯的开关
STM32是一款低功耗的芯片,所以其外设均有一个与之对应的时钟,而在芯片刚上电的时候这些时钟是被关闭的,所以如果想要外设工作,便必须将与之对应的时钟打开。 本文介绍如何基于GPIO来通过按键控制LEN灯的开关。 (1)按键的控制 上图所示为按键的电路,在按键未被按下的时候,KEY2的输出信号为低电平(按键所在的电路不通,其与地相连);在按键按下时,KEY2的输出状态为高电平(按键所在的电路导通,其与3.3V的电源相连)。因此,通过对引脚的电平进行检测便可以判断按键是否按下。 按键的机械触点断开、闭合时,由于触点的弹性作用,按键开关不会马上稳点接通或断开,其会产生如下图所示的带波纹信号,需要使用软
[单片机]
STM32开发 -- Git的详细使用
在GPS部分有用到DMA,接下来看一下它的使用。 一、DMA简介 直接存储器存取(DMA) 用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。无须CPU干预,数据可以通过DMA快速地移动,这就节省了CPU的资源来做其他操作。 两个DMA控制器有12个通道(DMA1有7个通道, DMA2有5个通道),每个通道专门用来管理来自于一个或多个外设对存储器访问的请求。还有一个仲裁器来协调各个DMA请求的优先权。 二、DMA主要特性 ● 12个独立的可配置的通道(请求): DMA1有7个通道, DMA2有5个通道 ● 每个通道都直接连接专用的硬件DMA请求,每个通道都同样支持软件触发。这些功能通过软件来配置。 ● 在同一
[单片机]
绝对值编码器数据接收的问题
实验环境:STM32F407,KEIL5,绝对值式编码器 程序目的:将串口接收到的编码器的数据存到数组RecBufEncode中,Count计数,ch是编码器通过串口返回的数据,编码器设置的是自动发送数据。如果存入数据满足13位,进入while中执行后续操作 #define LEN 13 //定义接收一条指令的长度 绝对式编码器的返回值 RecBufEncode =ch; Count %= LEN; while(0 == Count) { ...//后续操作 } 上诉方式实现不了目的。 实验结果:只能读取每次上次后获取的第一个数据,在转动编码器后,数据存在但数值不变。 #define LE
[单片机]
STM32单片机如何通过定时器的控制输出PWM
STM32F103ZET6里共有8个定时器,其中高级定时器有TIM1-TIM5、TIM8,共6个。 我这里输出PWM的定时器是TIM2,空闲的定时器是TIM3。以TIM2为主定时器,TIM3为从定时器对TIM2的输出脉冲数进行计数。 查表可知,TIM3为从定时器选择TIM2为触发源,需要配置TS=001,即选择ITR1。 实现通过定时器控制输出PWM个数的功能,可以有如下一种配置方式: void TIM2_Mas te r__TIM3_Slave_Configuration(u32 PulseFrequency) { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OC
[单片机]
STM32之USART(one)
USART我们一般是用在调试程序时输出调试信息,或者是用来做串行通讯。 看到ST的手册USART的功能有多么强大,其实我们很少用到那么多功能,再者我对那些部分也不是很熟,所以我们先说一下我们最常用最简单的部分,以后如果用到其他的模式我们再来看,我们的内存是有限的,所以将这些最常用的知识常驻内存吧。 好了,那我们下边来看USART: 使USART正常使用,我们总结下步骤吧 1.要使用一个模块第一我们就要先时能相应的时钟,相应的,如果某个模块不再使用了要关闭相应的始终,这样的点点滴滴我们就能降低我们系统的功耗。 2.配置相应的引脚 3.配置USART的波特率,帧格式等 4.然后就是发送接收的事了
[单片机]