diff --git a/V1.5/STM32F103_App1/HardWare/ADC/adc.c b/V1.5/STM32F103_App1/HardWare/ADC/adc.c index f6eb081..55b0012 100644 --- a/V1.5/STM32F103_App1/HardWare/ADC/adc.c +++ b/V1.5/STM32F103_App1/HardWare/ADC/adc.c @@ -66,9 +66,8 @@ void update_batter(void) } if (!confirm) return; - oled_off(); /* 先关屏:断电即黑屏,也给模组留更多发送电量 */ - /* 分毫必争:发掉电消息并等模组回 OK(最多 ~1.5s/次,最多试 3 次)。 - * 3 次都发不出(通道忙/模组已掉线)也照常记录复位,不能因发送失败就不记录 */ + /* 1. 先发掉电消息(等模组回 OK,最多 ~1.5s/次,最多试 3 次; + * 3 次都发不出也照常记录复位,不能因发送失败就不记录) */ { static uint8_t pub_try = 0; if (NET_publish_power_wait(0) != 0 && ++pub_try < 3) return; @@ -76,9 +75,18 @@ void update_batter(void) } powoff = 1; log_info("> 电量低: %d%%", (int)batter_valtage); + + /* 2. 屏幕提示掉电事件,展示 3 秒(法拉电容续航足够) */ + oled_clear(); + oled_locate(1, 0); + oled_print("发生掉电事件!"); + hlw8032_save(); /* 本地记录:电量、断电原因(都很快) */ reset_log_power_loss(); - HAL_Delay(800); /* OK 后再留 800ms 让报文上空口 */ + + /* 3. 3 秒后熄屏(这段延时也顺便给了模组发报文的空口时间),随后复位 */ + HAL_Delay(3000); + oled_off(); NVIC_SystemReset(); /* BootLoader 会检测主电源,12V 未恢复前不跳 APP,防止外设没上电时程序乱跑 */ } diff --git a/V1.5/鐗堟湰璇存槑.md b/V1.5/鐗堟湰璇存槑.md index 8226e67..2c3185e 100644 --- a/V1.5/鐗堟湰璇存槑.md +++ b/V1.5/鐗堟湰璇存槑.md @@ -205,3 +205,4 @@ - 钃濈墮 AT 璁剧疆鍔犲浐锛欰T 绐楀彛鍐呴潤闊虫棩蹇楋紙UART1 涓庢ā鍧楀叡鐢紝鏃ュ織瀛楄妭浼氭薄鏌撴ā鍧楀懡浠よВ鏋愶級锛 杩 AT 妯″紡+鏌ヨ鏃犲簲绛旀椂閲嶆柊鎷 PC5 閲嶈瘯锛屾渶澶 3 杞 - 鏂數鏃跺簭寰皟锛氱‘璁ゆ柇鐢靛悗鍏堝叧 OLED 灞忓啀鍙戞帀鐢垫秷鎭紙榛戝睆鏇村揩+缁欐ā缁勭暀鏇村鍙戦佺數閲忥級 +- 鏂數鏃跺簭鏀逛负锛氬厛鍙戞帀鐢垫秷鎭(绛塐K) 鈫 灞忓箷鏄剧ず"鍙戠敓鎺夌數浜嬩欢!"浜 3 绉 鈫 鐔勫睆澶嶄綅