嵌入式在stm32做个电池充放电显示在触摸屏上具体步骤详细代码,分析代码
具体步骤:
1、连接电池和stm32开发板,并且确保电池的正负极连接到对应的IO口。
2、在stm32上安装一个ADC采集单元,用于采集电池的电压值。
3、使用STM32系统中断函数定时读取ADC采集单元获得的数据,并将读取到的数据存储在一个数组中。
4、使用STM32 IO口将ADC采集到的数据传输到触摸屏上显示。
5、根据ADC采集到的数据对触屏上显示出来的图形进行相应处理(如显示不同颜色表示不同充/ 放电情况)。
代码如下所示 #include <stdio.h> // 对应头文件
#include "stm32f10x.h" // 对应头文件
int Battery_Voltage; // 电压读取变量
void ADC_Init(void) // ADC 初始化函数
{
RCC->APB2ENR |= 1<<9; // ADC1 时钟使能 PCLK2=HCLK/2=72MHz, ADCCLK=PCLK2/6=12MHz { GPIOA->CRL &= 0XFFFFFFF0; GPIOA->CRL |= 0X00000008; } RCC->CFGR &= 0XFFFFFFFC; RCC->CFGR |= 0<<14; // 选择 PCLK2 作为 ADC 时钟 RCC->CR |=(1<<28); while((RCC->CR & (1<<29)) == 0); // 等待 HSI 被启动 ADC1-》CR1 &=~(7<<24); ADC1-》CR1 |=(5<<24); // 通道 16 转化周期 5+12.5 = 17.5 周期 ADC1-》SQR3 &=~(0XF <<0); ADC1-》SQR3 |=(16 <<0); } void Get_Battery_Voltage(void) { NVIC_EnableIRQ(TIM4_IRQn) ; TIM4 ->PSC = 7199 ; TIM4 ->ARR = 1000 ; TIM4 ->DIER = 1 ; TIM4 ->EGR = 1 ; TIM4 ->CR1 = 1 ; while (Battery_Voltage == 0 ); } void Read_Battery() { if (TIM4 ->SR & 1 ) { Battery_Voltage = (int)(((float)(3.3 * 4096 * 2 / 3)) / ((float)(ADC - >DR)))*1000 + 10; } } int main() { Get_Battery(); return 0; }
创作工场
免责声明:
以上内容除特别注明外均来源于网友提问,创作工场回答,未经许可,严谨转载。
点击这里>>使用🔥专业版,更聪明、更完整、更原创!