From 7d13fbde75b58ff4c9deaef95ca0c03a1083f8e8 Mon Sep 17 00:00:00 2001
From: WXK <287788329@qq.com>
Date: 星期五, 29 八月 2025 10:26:55 +0800
Subject: [PATCH] 1.9,加入电量新计算方法 测试电池能干多久问题   目前1s检测一下adc

---
 keil/include/main/main.c |  104 ++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 72 insertions(+), 32 deletions(-)

diff --git a/keil/include/main/main.c b/keil/include/main/main.c
index 53488c6..62f6340 100644
--- a/keil/include/main/main.c
+++ b/keil/include/main/main.c
@@ -68,7 +68,7 @@
 #include "mk_phy.h"
 #include "mk_pwm.h"
 
-#define DEBUG_MODE
+//#define DEBUG_MODE
 extern int simple_main(void);
 extern int temp_main(void);
 void uart_change_check(uint16_t gpio_state);
@@ -183,31 +183,32 @@
 //        LOG_INFO(TRACE_MODULE_APP, "The voltage measured %d mv\r\n",
 //        ADC_INTERNAL_VREF_MV + adc_code_to_mv((int16_t)*result, ADC_INTERNAL_VREF_MV));
         fVoltage_mv=ADC_INTERNAL_VREF_MV + adc_code_to_mv((int16_t)*result, ADC_INTERNAL_VREF_MV);
-        fVoltage_mv=fVoltage_mv*2;
-        if(fVoltage_mv < 3300)
+        fVoltage_mv=fVoltage_mv*2+1100;
+        if(fVoltage_mv < 2000)
         {
             bat_percent = 0;
         }
-        else if(fVoltage_mv > 4100)
+        else if(fVoltage_mv > 3100)
         {
             bat_percent = 100;
         }
         else
         {
-            bat_percent = ((fVoltage_mv - 3300) /8);
+            bat_percent = ((fVoltage_mv - 2000) /11);
         }
     }
-				if(fVoltage_mv<3300)
-				{
-					power_low_flag=1;
-					gps_air780_power_change(gps_power_state,0);//gps原样,关闭4G 
-					//LOG_INFO(TRACE_MODULE_APP, "电池电压低于3.3V,4G,GPS停止工作\r\n");
-				}else{
-					power_low_flag=0;
-					gps_air780_power_change(gps_power_state,1);//gps原样,开启4G
-					//LOG_INFO(TRACE_MODULE_APP, "电池电压正常,4G,GPS,正常工作\r\n");
-				}
-		PCA9555_Set_One_Value_Output(ADC_MINIUS,1);//拉高
+//    LOG_INFO(TRACE_MODULE_APP, "当前静止:%d 电量:%d\r\n",nomove_count,fVoltage_mv);
+//				if(fVoltage_mv<3300)
+//				{
+//					power_low_flag=1;
+//					gps_air780_power_change(gps_power_state,0);//gps原样,关闭4G 
+//					//LOG_INFO(TRACE_MODULE_APP, "电池电压低于3.3V,4G,GPS停止工作\r\n");
+//				}else{
+//					power_low_flag=0;
+//					gps_air780_power_change(gps_power_state,1);//gps原样,开启4G
+//					//LOG_INFO(TRACE_MODULE_APP, "电池电压正常,4G,GPS,正常工作\r\n");
+//				}
+//		PCA9555_Set_One_Value_Output(ADC_MINIUS,1);//拉高
   //  LOG_INFO(TRACE_MODULE_APP, "The voltage is %%%d \r\n",bat_percent);
 }
 extern uint8_t gps_uwb_flag,gps_need_data_flag;
@@ -219,7 +220,9 @@
 void IMUTask(void)
 {
 	if(nomove_count>g_com_map[NOMOVESLEEP_TIME]&&g_com_map[IMU_ENABLE]==1)
-	{power_wakeup_enable((enum POWER_WAKEUP_SOURCE_T)ACCLERATE_DETECT_Pin, POWER_WAKEUP_LEVEL_HIGH);
+	{
+        LOG_INFO(TRACE_MODULE_APP, "进入休眠\r\n");
+        power_wakeup_enable((enum POWER_WAKEUP_SOURCE_T)ACCLERATE_DETECT_Pin, POWER_WAKEUP_LEVEL_HIGH);
 		mcu_deep_sleep();
 	}
 }
@@ -266,16 +269,18 @@
 }
 void MinuteTask(void)
 {		
-		PCA9555_Set_One_Value_Output(ADC_MINIUS,0);//拉低
+//		PCA9555_Set_One_Value_Output(ADC_MINIUS,0);//拉低
     adc_get(&sample[0], NUM_SAMPLES, adc_callback);//adc采样
 }
+//uint16_t adc_count;
+//uint8_t adc_start_flag;
 void SecondTask(void)
 {static uint8_t second_count;
-    if(second_count++>60)
-    {
-        second_count = 0;
-        MinuteTask();
-    }
+//    if(adc_count++>3600&&adc_start_flag)
+//    {
+//        adc_count = 0;
+//        MinuteTask();
+//    }
 		
 //		if(!power_low_flag)
 //		Gps_change();
@@ -342,8 +347,9 @@
 uint8_t Get_anchor_appdata_flag;
 uint8_t Get_anchor_appdata_num;
 extern uint8_t update_tag_time;
-uint8_t sleep_limit_time=1;
+uint8_t sleep_limit_time=10;
 uint8_t enable_sleep_count,sleep_flag;
+extern  float motor_keeptime;
 static void sleep_timer_callback(void *dev, uint32_t time)
 {
  
@@ -354,7 +360,10 @@
     enable_sleep_count=0;
     sleep_flag=1;
     }
-    
+    if(motor_keeptime>0)
+    {
+    motor_keeptime--;
+    }
     
     g_start_send_flag=1;
 //    if(delaysleep_count>0)
@@ -365,7 +374,9 @@
 static void move_handler(enum IO_PIN_T pin)
 {
     nomove_count=0;
-    Motion_Detection_callback();
+//    LOG_INFO(TRACE_MODULE_APP, "加速度唤醒了\r\n");
+//    LOG_INFO(TRACE_MODULE_APP, "当前静止:%d 电量:%d\r\n",nomove_count,fVoltage_mv);
+//    Motion_Detection_callback();
 }
 static void pca_handler(enum IO_PIN_T pin)
 {
@@ -420,7 +431,7 @@
     ip2 = (g_com_map[TCP_IP_2]>>12&0xf)*1000+(g_com_map[TCP_IP_2]>>8&0xf)*100+(g_com_map[TCP_IP_2]>>4&0xf)*10+(g_com_map[TCP_IP_2]&0xf);
     ip3 = (g_com_map[TCP_IP_3]>>12&0xf)*1000+(g_com_map[TCP_IP_3]>>8&0xf)*100+(g_com_map[TCP_IP_3]>>4&0xf)*10+(g_com_map[TCP_IP_3]&0xf);
     port = g_com_map[TCP_PORT];
-    g_com_map[VERSION] = (1<<8)|4;
+    g_com_map[VERSION] = (1<<8)|9;
     LOG_INFO(TRACE_MODULE_APP,"设备ID: %x .\r\n",dev_id);
     LOG_INFO(TRACE_MODULE_APP,"固件版本:4G-GPS定位手环 V%d.%d. \r\n",g_com_map[VERSION]>>8,g_com_map[VERSION]&0xff);
     LOG_INFO(TRACE_MODULE_APP,"服务器地址: %d.%d.%d.%d:%d.\r\n",ip0,ip1,ip2,ip3,port);
@@ -504,7 +515,7 @@
         if(state5v==1)
         {
         state5v=0;
-        sleep_limit_time=1;//新增插入串口后30s不休眠
+        sleep_limit_time=10;//新增插入串口后30s不休眠
         enable_sleep_count=0;//重新插拔可以重置时间
         }
 
@@ -617,6 +628,9 @@
 
 }
 extern uint8_t shengji_flag;
+extern uint16_t adc_caiji;
+uint8_t send_frame1[10];
+extern uint8_t adc_one;
 int main(void)
 {
     board_clock_run();
@@ -646,7 +660,7 @@
     LOG_INFO(TRACE_MODULE_APP, "UWB simple example\r\n");
     
     struct PWM_CFG_T usr_pwm_cfg = {
-        .general_prescale = 15,
+        .general_prescale = 7,
         .int_en = 1,
         .callback = pwm_callback,
     };
@@ -658,7 +672,7 @@
 		
     IIC2_Init();
     SC7A22H_Motion_Detection_Init();
-    gpio_pin_clr(ADC_GND_ENABLE);
+//    gpio_pin_clr(ADC_GND_ENABLE);
     Program_Init();
     uart_receive(UART_ID0,m_EUART_DMA_RXBuf,EUART_RX_BUF_SIZE,uart_receive_callback);
     power_init();
@@ -670,10 +684,11 @@
     sleep_timer_start(__MS_TO_32K_CNT(5000));//测试
     #endif
     board_5V_input_init(voltage_input_handler);
-    adc_get(&sample[0], NUM_SAMPLES, adc_callback);//adc采样
+//    adc_get(&sample[0], NUM_SAMPLES, adc_callback);//adc采样
     board_acceleration_detection_init(move_handler);
     Uwb_init();
     Dw1000_App_Init();
+//    adc_get(&sample[0], NUM_SAMPLES, adc_callback);//adc采样
     while (1)
     { 
         if(flag_secondtask)
@@ -683,8 +698,33 @@
         }
         if(g_start_send_flag)
         {
+            
+//                adc_caiji++;
+//    if(adc_caiji>5&&adc_one==0)
+//    {
+//    adc_one=1;  
+//    adc_caiji=0;  
+//    MinuteTask();
+//    }
+//    else if(adc_one==1&&adc_caiji>3600)
+//    {
+//    adc_caiji=0;  
+//    MinuteTask(); 
+//    }
+    
+//    send_frame1[0] = 0x55;
+//    send_frame1[1] = 0xAA;
+//    send_frame1[2] = nomove_count;
+//    memcpy(&send_frame1[3],&fVoltage_mv,2);        
+////    send_frame1[3] = data_length+5;
+////    send_frame1[4] = CMD_REPLY;
+////    send_frame1[5] = index;
+////    send_frame1[6] = data_length;
+//    uart_send(UART_ID0, send_frame1,5, NULL);
+    
             g_start_send_flag = 0;
             gpio_pin_set(IO_PIN_7);//亮
+//            LOG_INFO(TRACE_MODULE_APP, "当前静止:%d 电量:%d\r\n",nomove_count,fVoltage_mv);
 		    SwitchTagState();	
             gpio_pin_clr(IO_PIN_7);//灭
         }
@@ -695,7 +735,7 @@
         LoraUp_Poll();
 #ifndef DEBUG_MODE
         
-			if(sleep_flag&&state5v==0){//开始一段时间无休眠
+			if(sleep_flag&&state5v==0&&motor_keeptime==0){//开始一段时间无休眠
 						trace_flush();
             uint32_t lock = int_lock();
 						//LOG_INFO(TRACE_MODULE_APP, "进入低功耗");

--
Gitblit v1.9.3