【STM32+HAL】读取电池电量

一、准备工作

有关CUBEMX的初始化配置,参见我的另一篇blog:【STM32+HAL】CUBEMX初始化配置

有关定时器触发ADC模式配置,详见【STM32+HAL】ADC采集波形实现

有关软件触发ADC模式配置,详见【STM32+HAL】三轴按键PS2摇杆

二、所用工具

1、芯片: STM32F407VET6

2、IDE: MDK-Keil软件

3、库文件:STM32F4xxHAL库

三、实现功能

串口打印电池电量值

四、接线

此接口是采样电池电压和系统 VCC 电压的。其中VM 是电池电压,VCC 是系统电压。 电池电压经过 1:10 分压,VCC 电压通过 1:1 分压。使用时候注意共GND。

cpp 复制代码
VCC -> 5V  (无法测量低于5V电量VM)
BAT -> PA1 (ADC1-IN1)
VM  -> 电量正极

五、HAL库配置

1、开启ADC

实验发现误差较大,故将采样周期配置为480周期(最大)

2、开启串口

至此,HAL库配置完毕

六、keil填写代码

1、初始化
cpp 复制代码
#define SAMP 20

uint16_t adc1[SAMP]={0};
double voltage = 0;

	printf("Hello World\r\n");
	HAL_Delay(300);
	
	HAL_ADC_Start_DMA(&hadc1,(uint32_t *)adc1,SAMP);
2、打印电量值
cpp 复制代码
  /* USER CODE BEGIN WHILE */
  while (1)
  {
	   for(int i=0;i<SAMP;i++)
	  {
		  voltage = adc1[i]*3.3*11/4096.0f;
		  printf("%.2f\r\n",voltage-0.12f); 	//0.12为电量偏差经验值
	  }
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }

七、源码提供

资源【STM32+HAL】读取电池电量

八、结语

本人能力有限,代码未必是最优解,若有可改进之处望在评论区留言,采纳有赏~

相关推荐
c7_ln6 分钟前
STM32 低功耗设计全攻略:PWR 模块原理 + 睡眠 / 停止 / 待机模式实战(串口 + 红外 + RTC 应用全解析)
stm32·单片机·实时音视频·江协科技
待什么青丝1 小时前
【TMS570LC4357】之相关驱动开发学习记录2
c语言·arm开发·驱动开发·单片机·学习
小柯博客1 小时前
从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
c语言·stm32·单片机·嵌入式硬件·物联网
云山工作室2 小时前
一种停车场自动停车导航器的设计(论文+源码)
单片机·嵌入式硬件·毕业设计·毕设
平凡灵感码头3 小时前
单片机 传感器知识讲解 (一)红外避障模块,声控模块,人体红外模块
单片机·嵌入式硬件
wind_one14 小时前
STM32[笔记]--1.前置准备
笔记·stm32·单片机
SY师弟5 小时前
台湾TEMI协会竞赛——0、竞赛介绍及开发板介绍
c语言·单片机·嵌入式硬件·嵌入式·台湾temi协会
电子工程师-C515 小时前
基于51单片机的红外防盗及万年历仿真
单片机·嵌入式硬件·51单片机
Camellia03116 小时前
嵌入式学习--江协stm32day5
stm32·嵌入式硬件·学习
keke106 小时前
PLC入门【1】PLC的简单介绍(教学软件:FX-TRN-BEG-C)
嵌入式硬件