xuxinyi 2 місяців тому
батько
коміт
14a79979ef
1 змінених файлів з 20 додано та 9 видалено
  1. 20 9
      Core/Src/main.c

+ 20 - 9
Core/Src/main.c

@@ -176,6 +176,8 @@ void powerOn() {
 //设备关闭供电
 void powerOff() {
   HAL_GPIO_WritePin(POWER_ON_GPIO_Port, POWER_ON_Pin, GPIO_PIN_RESET);
+  HAL_GPIO_WritePin(JUGE_PIN_GPIO_Port, JUGE_PIN_Pin, GPIO_PIN_RESET);
+  HAL_GPIO_WritePin(PowerLED_GPIO_Port, PowerLED_Pin, GPIO_PIN_RESET);
 }
 
 uint32_t RTC_CalcDiffSeconds(RTC_DateTimeTypeDef *t1, RTC_DateTimeTypeDef *t2)
@@ -252,7 +254,7 @@ int main(void)
   // 使能 USART2 空闲中断
   __HAL_UART_ENABLE_IT(&huart2, UART_IT_IDLE);
   printf("开始初始化1\r\n");
-  HAL_Delay(4000);
+  HAL_Delay(1000);
   printf("开始初始化\r\n");
   printf("切换为观察者模式\r\n");
   E104_BT5005A_ROLE_Fun();
@@ -313,7 +315,7 @@ int main(void)
     }
 
     if (!sosState) {
-      HAL_GPIO_WritePin(PowerLED_GPIO_Port, PowerLED_Pin, GPIO_PIN_SET);
+      // HAL_GPIO_WritePin(PowerLED_GPIO_Port, PowerLED_Pin, GPIO_PIN_SET);
       E52_Heartbeat_Fun();
       printf("SOS中\r\n");
 
@@ -348,20 +350,29 @@ int main(void)
       continue;
       // HAL_Delay(000);
     }
-    HAL_GPIO_TogglePin(PowerLED_GPIO_Port, PowerLED_Pin);
+    // HAL_GPIO_TogglePin(PowerLED_GPIO_Port, PowerLED_Pin);
 
     // 命令为IDLE,且步骤为STEP_INIT 说明有新数据。
-    if (GET_CMD( deviceInfo.commandFromCloud) == IDLE && GET_STEP(deviceInfo.commandFromCloud) == STEP_VERIFY && sosState) {
+    if (GET_CMD( deviceInfo.commandFromCloud) == IDLE && GET_STEP(deviceInfo.commandFromCloud) == STEP_VERIFY) {
       E52_Analyze_Data();
     }
 
     // 检查是否接收到"心跳"命令,且设备在线
-    if (!deviceInfo.isOnline && sosState){
+    if (!deviceInfo.isOnline){
       printf("The device is not online.\r\n");
       if (!deviceInfo.loraSendSuccessFlag) {
         E52_Heartbeat_Fun();
       }
-      HAL_Delay(3000);
+      uint8_t count = 0;
+      while (count < 10) {
+        GPIO_PinState powerState1 = HAL_GPIO_ReadPin(JUGE_PIN_GPIO_Port, JUGE_PIN_Pin);
+        // printf("SOS_KEY_Pin pin state = %d\r\n", sosState);
+        if (powerState1 == GPIO_PIN_RESET) {
+          powerOff();
+        }
+        count++;
+        HAL_Delay(1000);
+      }
     }
 
     // if (SOS_key_struct.sosCheckActive) {
@@ -384,7 +395,7 @@ int main(void)
     // }
 
     // 03:请求蓝牙数据
-    if (GET_CMD( deviceInfo.commandFromCloud)  == REQUEST_BLUETOOTH_DATA && deviceInfo.isOnline && sosState) {
+    if (GET_CMD( deviceInfo.commandFromCloud)  == REQUEST_BLUETOOTH_DATA && deviceInfo.isOnline) {
 
       switch (GET_STEP(deviceInfo.commandFromCloud)) {
         case REQUEST_BLUETOOTH_DATA_SCAN:
@@ -430,7 +441,7 @@ int main(void)
     }
 
     // 08:请求心跳数据
-    if (GET_CMD( deviceInfo.commandFromCloud)  == E52_HEARTBEAT && deviceInfo.isOnline && sosState) {
+    if (GET_CMD( deviceInfo.commandFromCloud)  == E52_HEARTBEAT && deviceInfo.isOnline) {
       switch (GET_STEP(deviceInfo.commandFromCloud)) {
         case HEARTBEAT_SEND:
           if (deviceInfo.loraSendSuccessFlag == 0) {
@@ -452,7 +463,7 @@ int main(void)
     }
 
     // 07:配置E52
-    if (GET_CMD( deviceInfo.commandFromCloud)  == CONFIGURE_E52 && deviceInfo.isOnline && sosState) {
+    if (GET_CMD( deviceInfo.commandFromCloud)  == CONFIGURE_E52 && deviceInfo.isOnline) {
       switch (GET_STEP(deviceInfo.commandFromCloud)) {
           case CONFIGURE_E52_SET_BROADCAST_TYPE:      //第一步,配置广播类型
               E52_CONFIG_BROADCAST_TYPE_FUN(deviceInfo.broadcast_type);