From d354e097e44c386d7db7a430d7418affd69f2f74 Mon Sep 17 00:00:00 2001 From: zsx <1543588107@qq.com> Date: Thu, 16 Jan 2025 19:29:02 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=94=B5=E9=87=8F?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E9=97=AE=E9=A2=98=20zsxfly20250116?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- projects/blezongkong/mdk/zhongkong.uvprojx | 2 +- projects/blezongkong/src/app_Time_Event.c | 2 +- projects/blezongkong/src/app_bat.c | 140 ++++++++++++++++++++- projects/blezongkong/src/app_bat.h | 68 ++++++---- projects/blezongkong/src/app_modbus.c | 56 +++++++-- projects/blezongkong/src/sys_config.h | 2 +- 6 files changed, 226 insertions(+), 44 deletions(-) diff --git a/projects/blezongkong/mdk/zhongkong.uvprojx b/projects/blezongkong/mdk/zhongkong.uvprojx index bd8997c..21acb58 100644 --- a/projects/blezongkong/mdk/zhongkong.uvprojx +++ b/projects/blezongkong/mdk/zhongkong.uvprojx @@ -48,7 +48,7 @@ 1 .\output\ - OTA_V2_5 + OTA_V2_7 1 0 1 diff --git a/projects/blezongkong/src/app_Time_Event.c b/projects/blezongkong/src/app_Time_Event.c index a269a52..d9d45da 100644 --- a/projects/blezongkong/src/app_Time_Event.c +++ b/projects/blezongkong/src/app_Time_Event.c @@ -11,7 +11,7 @@ #define DEBUG(format, ...) debug("[TR_ET]" format "\r\n", ##__VA_ARGS__) #else #define DEBUG(format, ...) -#define debugHex(dat, len) +//#define debugHex(dat, len) #endif static Time_Events_t Time_Events[Time_Event_MAX]; diff --git a/projects/blezongkong/src/app_bat.c b/projects/blezongkong/src/app_bat.c index 7144fa9..310d753 100644 --- a/projects/blezongkong/src/app_bat.c +++ b/projects/blezongkong/src/app_bat.c @@ -5,19 +5,142 @@ #include "app_bat.h" #include "sys_config.h" -#define BAT_Message_interval 1000 +#define DBG_EN 0 + +#if (DBG_EN) +#include "dbg.h" +#define DEBUG(format, ...) debug("[Bat]" format, ##__VA_ARGS__) +#else +#define DEBUG(format, ...) +//#define debugHex(dat, len) +#endif + +#define BAT_Message_interval 100 tmr_id_t BAT_Message_tmr_id; BAT_Message_t BAT_Message; -uint16_t Bat_Voltage_Last; -uint16_t Voltage_lag_count; - -uint8_t Bat_STA_Last; // 门锁状态更新标志 bool GRB_Door_lock_updata=0; +uint8_t Bat_STA_Last; +uint16_t Voltage_lag_count; +uint16_t Voltage_update_count; +float temp_bat_voltage=0; +// uint16_t Bat_Voltage_Last; + // uint8_t bat_str[50]={0,0},bat_str_len=0; + +const uint16_t coulomp_voltage_table[11] = { + BAT_LEVEL_0PERCENT_VOLT, + BAT_LEVEL_10PERCENT_VOLT, + BAT_LEVEL_20PERCENT_VOLT, + BAT_LEVEL_30PERCENT_VOLT, + BAT_LEVEL_40PERCENT_VOLT, + BAT_LEVEL_50PERCENT_VOLT, + BAT_LEVEL_60PERCENT_VOLT, + BAT_LEVEL_70PERCENT_VOLT, + BAT_LEVEL_80PERCENT_VOLT, + BAT_LEVEL_90PERCENT_VOLT, + BAT_LEVEL_100PERCENT_VOLT, +}; + +uint8_t pmu_voltage_to_percent(uint32_t volt){//电压转百分比 + uint8_t i, percent; + float step, base; + if((volt < coulomp_voltage_table[0])){ + return 0; + } + if((volt >= coulomp_voltage_table[10])){ + return 100; + } + + for (i = 0; i < 10; i++) { + if((volt < coulomp_voltage_table[i+1]) && (volt >= coulomp_voltage_table[i])){ + step = (coulomp_voltage_table[i+1] - coulomp_voltage_table[i]) / 10.0; + base = coulomp_voltage_table[i]; + percent = (10 * i) + (volt - base) / step; + DEBUG("\n\ni:%d,volt:%d,step:%02.2f,base:%02.2f,percent:%d\n\n",i,volt,step,base,percent); + return (uint8_t)percent; + } + } + return 0; +} + + +static tmr_tk_t BAT_Message_Handle(tmr_id_t id) { + uint16_t in_acc_percent= get_in_acc_percent(); + + if(BAT_Message.Runing_Time < 0xFFFF){ + BAT_Message.Runing_Time++; + } + + temp_bat_voltage += get_bat_voltage() * 10; + + Voltage_update_count++; + if(Voltage_update_count >= (1000/BAT_Message_interval)){//1s + BAT_Message.Bat_Voltage = temp_bat_voltage / Voltage_update_count; + Voltage_update_count=0; + temp_bat_voltage = 0; + } + // in_acc_percent =80; + if(in_acc_percent >= 80){ // 油门大于80%时, + if(BAT_Message.Deep_ACC_Time < 0xFFFF){ + BAT_Message.Deep_ACC_Time++; + } + Voltage_lag_count++; + if(Voltage_lag_count >= (2000/BAT_Message_interval)){//2s + Voltage_lag_count=0; + BAT_Message.Bat_Percent = pmu_voltage_to_percent(BAT_Message.Bat_Voltage); + } + if(BAT_Message.Bat_Percent < 12){ + BAT_Message.Bat_Low_Volt_count++; + } + }else{ + Voltage_lag_count=0; + } + + + if(BAT_Message.Bat_Percent < 7){ + BAT_Message.Bat_STA =(BAT_Message.Bat_STA & 0xE0)|Bat_Low_STA; + WS2812_GRBs.GRBs=GRB_RED; + }else if(BAT_Message.Bat_Percent < 30){ // 7~30% + BAT_Message.Bat_STA =(BAT_Message.Bat_STA & 0xE0)|Bat_30_STA; + WS2812_GRBs.GRBs=GRB_RED; + }else if(BAT_Message.Bat_Percent < 60){ // 30~60% + BAT_Message.Bat_STA =(BAT_Message.Bat_STA & 0xE0)|Bat_60_STA; + WS2812_GRBs.GRBs=GRB_BLUE; + }else if(BAT_Message.Bat_Percent < 80){ // 60~80% + BAT_Message.Bat_STA =(BAT_Message.Bat_STA & 0xE0)|Bat_80_STA; + WS2812_GRBs.GRBs=GRB_WHITE; + }else{ + BAT_Message.Bat_STA =(BAT_Message.Bat_STA & 0xE0)|Bat_100_STA; + WS2812_GRBs.GRBs=GRB_WHITE; + } + + if((Bat_STA_Last != BAT_Message.Bat_STA) || GRB_Door_lock_updata != Get_Status(OUT_Door_lock)){ + GRB_Door_lock_updata=Get_Status(OUT_Door_lock); + + Bat_STA_Last =BAT_Message.Bat_STA; + if( Get_Status(OUT_Door_lock)){ + if(BAT_Message.Bat_STA & Bat_Charge_STA){ + Time_Event_Blink(GRB_WS2812_Event,500,500,0xffff,NULL); + }else{ + if(BAT_Message.Bat_STA & Bat_Low_STA){ + Time_Event_Blink(GRB_WS2812_Event,200,200,0xffff,NULL); + }else{ + Time_Event_Blink(GRB_WS2812_Event,500,500,0xffff,NULL); + } + } + }else{ + Time_Event_Off(GRB_WS2812_Event,NULL); + } + } + DEBUG("\n\nSTA:0x%#X,V:%d,%d %%,Run:%d,D_A:%d\n\n",BAT_Message.Bat_STA,BAT_Message.Bat_Voltage,BAT_Message.Bat_Percent,BAT_Message.Runing_Time,BAT_Message.Deep_ACC_Time); + return (BAT_Message_interval / 10); +} + +/* static tmr_tk_t BAT_Message_Handle(tmr_id_t id) { uint16_t Bat_Voltage = get_bat_voltage() * 10; @@ -90,8 +213,13 @@ static tmr_tk_t BAT_Message_Handle(tmr_id_t id) { return (BAT_Message_interval / 10); } +*/ void BAT_Message_Init(void) { BAT_Message_tmr_id = sftmr_start(10, BAT_Message_Handle); - Bat_Voltage_Last =get_bat_voltage() * 10; + BAT_Message.Bat_Voltage = get_bat_voltage() * 10; + BAT_Message.Bat_Percent = pmu_voltage_to_percent(BAT_Message.Bat_Voltage); + BAT_Message.Runing_Time = 0; + BAT_Message.Deep_ACC_Time = 0; + BAT_Message.Bat_STA = 0; } diff --git a/projects/blezongkong/src/app_bat.h b/projects/blezongkong/src/app_bat.h index 910439c..e5fb043 100644 --- a/projects/blezongkong/src/app_bat.h +++ b/projects/blezongkong/src/app_bat.h @@ -1,39 +1,61 @@ #ifndef _APP_BAT_H_ #define _APP_BAT_H_ + +#define BAT_SxP1 4 // 电池四串一并 +#define BAT_VOLT(_Volt) (_Volt * BAT_SxP1) //电压单位转换 +#define BAT_Low_VOLT BAT_VOLT(105) //10.5V x 4 = 42V +#define BAT_Full_VOLT BAT_VOLT(144) //14.4V x 4 = 57.6V + +// #define BAT_LEVEL_0PERCENT_VOLT BAT_VOLT(105) // 0%:(105~110]=(42.0V~44.0V] +// #define BAT_LEVEL_10PERCENT_VOLT BAT_VOLT(113) // 10%:(110~113]=(44.0V~45.2V] +// #define BAT_LEVEL_20PERCENT_VOLT BAT_VOLT(116) // 20%:(113~116]=(45.2V~46.4V] +// #define BAT_LEVEL_30PERCENT_VOLT BAT_VOLT(119) // 30%:(116~119]=(46.4V~47.6V] +// #define BAT_LEVEL_40PERCENT_VOLT BAT_VOLT(122) // 40%:(119~122]=(47.6V~48.8V] +// #define BAT_LEVEL_50PERCENT_VOLT BAT_VOLT(125) // 50%:(122~125]=(48.8V~50.0V] +// #define BAT_LEVEL_60PERCENT_VOLT BAT_VOLT(128) // 60%:(125~128]=(50.0V~51.2V] +// #define BAT_LEVEL_70PERCENT_VOLT BAT_VOLT(131) // 70%:(128~131]=(51.2V~52.4V] +// #define BAT_LEVEL_80PERCENT_VOLT BAT_VOLT(134) // 80%:(131~134]=(52.4V~53.6V] +// #define BAT_LEVEL_90PERCENT_VOLT BAT_VOLT(137) // 90%:(134~137]=(53.6V~54.8V] +// #define BAT_LEVEL_100PERCENT_VOLT BAT_VOLT(144) //100%:(137~144]=(54.8V~57.6V] + +// 内阻 20mΩ * 4 =80mΩ // 线损 10A 0.1V + +#define BAT_LEVEL_0PERCENT_VOLT BAT_VOLT(105) // 0% +#define BAT_LEVEL_10PERCENT_VOLT BAT_VOLT(107) // 10% +#define BAT_LEVEL_20PERCENT_VOLT BAT_VOLT(109) // 20% +#define BAT_LEVEL_30PERCENT_VOLT BAT_VOLT(111) // 30% +#define BAT_LEVEL_40PERCENT_VOLT BAT_VOLT(113) // 40% +#define BAT_LEVEL_50PERCENT_VOLT BAT_VOLT(115) // 50% +#define BAT_LEVEL_60PERCENT_VOLT BAT_VOLT(117) // 60% +#define BAT_LEVEL_70PERCENT_VOLT BAT_VOLT(119) // 70% +#define BAT_LEVEL_80PERCENT_VOLT BAT_VOLT(121) // 80% +#define BAT_LEVEL_90PERCENT_VOLT BAT_VOLT(123) // 90% +#define BAT_LEVEL_100PERCENT_VOLT BAT_VOLT(144) //100% + + // 充电状态 typedef enum { - Bat_NotCharge_STA=0x01, - Bat_Charge_STA=0x02, - Bat_Full_STA=0x04, - Bat_Low_STA=0x08, - Bat_30_STA=0x10, - Bat_60_STA=0x20, - Bat_100_STA=0x40, + Bat_Low_STA=(1<<0), + Bat_30_STA=(1<<1), + Bat_60_STA=(1<<2), + Bat_80_STA=(1<<3), + Bat_100_STA=(1<<4), + Bat_NotCharge_STA=(1<<5), + Bat_Charge_STA=(1<<6), } BAT_STA_t; -typedef enum { - Bat_Percent_Low =420, - Bat_Percent_30 =454, - Bat_Percent_60 =489, - Bat_Percent_100 =535, -} BAT_Percent_t; - -// typedef enum { -// Bat_Percent_Low =240, -// Bat_Percent_30 =260, -// Bat_Percent_60 =300, -// Bat_Percent_100 =350, -// } BAT_Percent_t; typedef struct BAT_Message{ uint8_t Bat_STA; - uint8_t Bat_Remain_Time; // 剩余充电时间 + uint8_t Bat_Percent; // 42=42% + uint8_t Bat_Low_Volt_count; // 低压计数 uint16_t Bat_Voltage; // 480=48.0V - uint16_t Bat_Percent; // 420=42.0% + uint16_t Runing_Time; // 系统运行时间 + uint16_t Deep_ACC_Time; // 深踩油门时间 } BAT_Message_t; - +uint8_t pmu_voltage_to_percent(uint32_t volt); // 电压转百分比 void BAT_Message_Init(void); #endif diff --git a/projects/blezongkong/src/app_modbus.c b/projects/blezongkong/src/app_modbus.c index 8d5580c..0c02407 100644 --- a/projects/blezongkong/src/app_modbus.c +++ b/projects/blezongkong/src/app_modbus.c @@ -245,7 +245,7 @@ void FunctionalCode_03_06(uint8_t CMDCode, uint16_t reg_addr , uint16_t reg_val_ break; } }else if(CMDCode == 0x06){ - uint8_t Pmode_Timeout =((reg_val_num >> 8) & 0xff); + // uint8_t Pmode_Timeout =((reg_val_num >> 8) & 0xff); // if(0 == Pmode_Timeout){ // Time_Event_Cancel_DelayOff(Pmode_Timeout_Event); // }else{ @@ -333,16 +333,19 @@ void FunctionalCode_03_06(uint8_t CMDCode, uint16_t reg_addr , uint16_t reg_val_ } } { // 0x0201-0x0203 - case 0x0301: // 电池状态 + case 0x0301: // 电池状态及电量信息 if(CMDCode == 0x03){ - MODBUS_Sent_BUF[len_count++] =BAT_Message.Bat_STA >> 8; - MODBUS_Sent_BUF[len_count++] =BAT_Message.Bat_STA & 0xff; + MODBUS_Sent_BUF[len_count++] =BAT_Message.Bat_STA; + MODBUS_Sent_BUF[len_count++] =BAT_Message.Bat_Percent; MODBUS_Sent_BUF[2] +=2; if(0 == --reg_val_num){ break; } }else if(CMDCode == 0x06){ - len_count =0; + BAT_Message.Bat_Voltage = get_bat_voltage() * 10; + BAT_Message.Bat_Percent = pmu_voltage_to_percent(BAT_Message.Bat_Voltage); + MODBUS_Sent_BUF[len_count++] =BAT_Message.Bat_STA; + MODBUS_Sent_BUF[len_count++] =BAT_Message.Bat_Percent; break; } case 0x0302: // 电池电压 @@ -357,10 +360,38 @@ void FunctionalCode_03_06(uint8_t CMDCode, uint16_t reg_addr , uint16_t reg_val_ len_count =0; break; } - case 0x0303: // 电池电量 + case 0x0303: // 系统运行时间 if(CMDCode == 0x03){ - MODBUS_Sent_BUF[len_count++] =BAT_Message.Bat_Percent >> 8; - MODBUS_Sent_BUF[len_count++] =BAT_Message.Bat_Percent & 0xff; + MODBUS_Sent_BUF[len_count++] =BAT_Message.Runing_Time >> 8; + MODBUS_Sent_BUF[len_count++] =BAT_Message.Runing_Time & 0xff; + MODBUS_Sent_BUF[2] +=2; + if(0 == --reg_val_num){ + break; + } + }else if(CMDCode == 0x06){ + BAT_Message.Runing_Time =0; + MODBUS_Sent_BUF[len_count++] =BAT_Message.Runing_Time >> 8; + MODBUS_Sent_BUF[len_count++] =BAT_Message.Runing_Time & 0xff; + break; + } + case 0x0304: // 深踩油门时间 + if(CMDCode == 0x03){ + MODBUS_Sent_BUF[len_count++] =BAT_Message.Deep_ACC_Time >> 8; + MODBUS_Sent_BUF[len_count++] =BAT_Message.Deep_ACC_Time & 0xff; + MODBUS_Sent_BUF[2] +=2; + if(0 == --reg_val_num){ + break; + } + }else if(CMDCode == 0x06){ + BAT_Message.Deep_ACC_Time =0; + MODBUS_Sent_BUF[len_count++] =BAT_Message.Deep_ACC_Time >> 8; + MODBUS_Sent_BUF[len_count++] =BAT_Message.Deep_ACC_Time & 0xff; + break; + } + case 0x0305: // 低压计数 + if(CMDCode == 0x03){ + MODBUS_Sent_BUF[len_count++] =BAT_Message.Bat_Low_Volt_count >> 8; + MODBUS_Sent_BUF[len_count++] =BAT_Message.Bat_Low_Volt_count & 0xff; MODBUS_Sent_BUF[2] +=2; if(0 == --reg_val_num){ break; @@ -369,10 +400,11 @@ void FunctionalCode_03_06(uint8_t CMDCode, uint16_t reg_addr , uint16_t reg_val_ len_count =0; break; } - case 0x0304: // 剩余充电时间 + case 0x0306: // 当前油门百分比 if(CMDCode == 0x03){ - MODBUS_Sent_BUF[len_count++] =BAT_Message.Bat_Remain_Time >> 8; - MODBUS_Sent_BUF[len_count++] =BAT_Message.Bat_Remain_Time & 0xff; + uint16_t in_acc_percent= get_in_acc_percent(); + MODBUS_Sent_BUF[len_count++] =in_acc_percent >> 8; + MODBUS_Sent_BUF[len_count++] =in_acc_percent & 0xff; MODBUS_Sent_BUF[2] +=2; if(0 == --reg_val_num){ break; @@ -381,7 +413,7 @@ void FunctionalCode_03_06(uint8_t CMDCode, uint16_t reg_addr , uint16_t reg_val_ len_count =0; break; } - case 0x0305: // 雷达距离信息 + case 0x0307: // 雷达距离信息 if(CMDCode == 0x03){ MODBUS_Sent_BUF[len_count++] =radar_data.distance >> 8; MODBUS_Sent_BUF[len_count++] =radar_data.distance & 0xff; diff --git a/projects/blezongkong/src/sys_config.h b/projects/blezongkong/src/sys_config.h index 0e47042..1f251ff 100644 --- a/projects/blezongkong/src/sys_config.h +++ b/projects/blezongkong/src/sys_config.h @@ -57,7 +57,7 @@ void conf_init(void); /**************************系统版本**************************/ // 软件本号 -#define SW_VERSION (5) +#define SW_VERSION (7) // 硬件本号 #define HW_VERSION (2) // 版本类型:0:0x04000;1:0x20000//不可修改 From 8bbea3a147358a19a3d3e7189eaa74c6b22fd9a5 Mon Sep 17 00:00:00 2001 From: zsx <1543588107@qq.com> Date: Sat, 26 Apr 2025 09:42:03 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E8=B0=83=E6=95=B4=E7=94=B5=E9=87=8F?= =?UTF-8?q?=E8=AE=A1=E7=AE=97=E8=A7=84=E5=88=99=EF=BC=8C=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?LED=E6=8E=A7=E5=88=B6=E5=8A=9F=E8=83=BD=20zsxfly20250426?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- projects/blezongkong/mdk/zhongkong.uvoptx | 101 ++------------------- projects/blezongkong/mdk/zhongkong.uvprojx | 11 ++- projects/blezongkong/src/app_bat.c | 7 +- projects/blezongkong/src/app_bat.h | 6 +- projects/blezongkong/src/app_modbus.c | 3 + projects/blezongkong/src/sys_config.h | 2 +- 6 files changed, 31 insertions(+), 99 deletions(-) diff --git a/projects/blezongkong/mdk/zhongkong.uvoptx b/projects/blezongkong/mdk/zhongkong.uvoptx index f23e271..f2d4bfc 100644 --- a/projects/blezongkong/mdk/zhongkong.uvoptx +++ b/projects/blezongkong/mdk/zhongkong.uvoptx @@ -22,7 +22,7 @@ - uartTest + OTA 0x4 ARM-ADS @@ -30,8 +30,8 @@ 1 1 - 0 - 1 + 1 + 0 0 @@ -89,7 +89,7 @@ 1 1 1 - 1 + 0 1 1 1 @@ -117,106 +117,25 @@ Segger\JL2CM3.dll - - 0 - UL2CM3 - UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000) - 0 JL2CM3 - -U20090928 -O78 -S2 -ZTIFSpeedSel5000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8001 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO11 -FD20003000 -FC5000 -FN1 -FF0B6x_256kB_PY_D.FLM -FS018000000 -FL040000 -FP0($$Device:B6x$.\Flash\B6x_256kB_PY_D.FLM) - - - 0 - ARMRTXEVENTFLAGS - -L70 -Z18 -C0 -M0 -T1 - - - 0 - DLGTARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0) - - - 0 - ARMDBGFLAGS - + -U20090928 -O78 -S2 -ZTIFSpeedSel5000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8008 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO31 -FD20003000 -FC5000 -FN1 -FF0B6x_256kB_PY_D.FLM -FS018000000 -FL040000 -FP0($$Device:B6x$.\Flash\B6x_256kB_PY_D.FLM) - - - 0 - 0 - 0 - 1 -
402735504
- 0 - 0 - 0 - 0 - 0 - 1 - - - 0x18014190 -
- - 1 - 0 - 0 - 1 -
402735500
- 0 - 0 - 0 - 0 - 0 - 1 - - - 0x1801418C -
- - 2 - 0 - 0 - 1 -
402735502
- 0 - 0 - 0 - 0 - 0 - 1 - - - 0x1801418E -
-
- - - 0 - 1 - gBleSleep - - - 1 - 1 - DMA_RX_BUFF - - + 0 0 - 1 - 1 + 0 + 0 0 0 0 0 - 1 + 0 0 0 0 @@ -424,7 +343,7 @@ 2 14 1 - 0 + 1 0 0 ..\src\sys_config.c diff --git a/projects/blezongkong/mdk/zhongkong.uvprojx b/projects/blezongkong/mdk/zhongkong.uvprojx index 21acb58..fdd1125 100644 --- a/projects/blezongkong/mdk/zhongkong.uvprojx +++ b/projects/blezongkong/mdk/zhongkong.uvprojx @@ -48,7 +48,7 @@ 1 .\output\ - OTA_V2_7 + OTA_V2_8 1 0 1 @@ -655,4 +655,13 @@ + + + + zhongkong + 1 + + + + diff --git a/projects/blezongkong/src/app_bat.c b/projects/blezongkong/src/app_bat.c index 310d753..59d5b58 100644 --- a/projects/blezongkong/src/app_bat.c +++ b/projects/blezongkong/src/app_bat.c @@ -67,6 +67,7 @@ uint8_t pmu_voltage_to_percent(uint32_t volt){//电压转百分比 return 0; } +uint8_t LED_control =0,LED_control_last =0; static tmr_tk_t BAT_Message_Handle(tmr_id_t id) { uint16_t in_acc_percent= get_in_acc_percent(); @@ -118,11 +119,11 @@ static tmr_tk_t BAT_Message_Handle(tmr_id_t id) { WS2812_GRBs.GRBs=GRB_WHITE; } - if((Bat_STA_Last != BAT_Message.Bat_STA) || GRB_Door_lock_updata != Get_Status(OUT_Door_lock)){ + if((Bat_STA_Last != BAT_Message.Bat_STA) || (GRB_Door_lock_updata != Get_Status(OUT_Door_lock)) || (LED_control != LED_control_last)){ GRB_Door_lock_updata=Get_Status(OUT_Door_lock); - + LED_control_last =LED_control; Bat_STA_Last =BAT_Message.Bat_STA; - if( Get_Status(OUT_Door_lock)){ + if( Get_Status(OUT_Door_lock) || (LED_control != 0)){ if(BAT_Message.Bat_STA & Bat_Charge_STA){ Time_Event_Blink(GRB_WS2812_Event,500,500,0xffff,NULL); }else{ diff --git a/projects/blezongkong/src/app_bat.h b/projects/blezongkong/src/app_bat.h index e5fb043..82a29ec 100644 --- a/projects/blezongkong/src/app_bat.h +++ b/projects/blezongkong/src/app_bat.h @@ -29,9 +29,9 @@ #define BAT_LEVEL_50PERCENT_VOLT BAT_VOLT(115) // 50% #define BAT_LEVEL_60PERCENT_VOLT BAT_VOLT(117) // 60% #define BAT_LEVEL_70PERCENT_VOLT BAT_VOLT(119) // 70% -#define BAT_LEVEL_80PERCENT_VOLT BAT_VOLT(121) // 80% -#define BAT_LEVEL_90PERCENT_VOLT BAT_VOLT(123) // 90% -#define BAT_LEVEL_100PERCENT_VOLT BAT_VOLT(144) //100% +#define BAT_LEVEL_80PERCENT_VOLT BAT_VOLT(123) // 80% +#define BAT_LEVEL_90PERCENT_VOLT BAT_VOLT(127) // 90% +#define BAT_LEVEL_100PERCENT_VOLT BAT_VOLT(134) //100% // 充电状态 diff --git a/projects/blezongkong/src/app_modbus.c b/projects/blezongkong/src/app_modbus.c index 0c02407..54595d3 100644 --- a/projects/blezongkong/src/app_modbus.c +++ b/projects/blezongkong/src/app_modbus.c @@ -61,6 +61,8 @@ void FunctionalCode_01(uint16_t reg_addr){//ID寄存器地址//返回7字节 } } +extern uint8_t LED_control; + // 03 功能码 # 读 - 保持寄存器 // 06 功能码 # 写 - 单个寄存器 void FunctionalCode_03_06(uint8_t CMDCode, uint16_t reg_addr , uint16_t reg_val_num){//寄存器地址//返回8字节或15字节 @@ -255,6 +257,7 @@ void FunctionalCode_03_06(uint8_t CMDCode, uint16_t reg_addr , uint16_t reg_val_ // Time_Event_DelayOff(Pmode_Timeout_Event ,1000 * Pmode_Timeout ,NULL); // } sys_sta.Pmode =reg_val_num & 0x03; + LED_control = (0 ==(reg_val_num & 0x80))?0:1; MODBUS_Sent_BUF[len_count++] =reg_val_num >> 8; MODBUS_Sent_BUF[len_count++] =sys_sta.Pmode & 0xff; break; diff --git a/projects/blezongkong/src/sys_config.h b/projects/blezongkong/src/sys_config.h index 1f251ff..8b69db0 100644 --- a/projects/blezongkong/src/sys_config.h +++ b/projects/blezongkong/src/sys_config.h @@ -57,7 +57,7 @@ void conf_init(void); /**************************系统版本**************************/ // 软件本号 -#define SW_VERSION (7) +#define SW_VERSION (8) // 硬件本号 #define HW_VERSION (2) // 版本类型:0:0x04000;1:0x20000//不可修改