Эх сурвалжийг харах

有问题,出现不受控制

xuxinyi 2 сар өмнө
parent
commit
244b0460ab

+ 1 - 1
Core/Src/E52.c

@@ -222,7 +222,7 @@ void E52_Analyze_Data() {
         deviceInfo.commandFromCloud = COMBINE_CMD_STEP(IDLE, STEP_INIT);
     }
     // memcpy(rx_buf_uart2 ,rx_buf_uart2, sizeof(rx_buf_uart2));
-    memset(rx_buf_uart2, 0, sizeof(rx_buf_uart2));
+    // memset(rx_buf_uart2, 0, sizeof(rx_buf_uart2));
 }
 
 

+ 4 - 1
Core/Src/main.c

@@ -306,6 +306,9 @@ int main(void)
 
     if (powerState == GPIO_PIN_RESET) {
       powerOff();
+      deviceInfo.commandFromCloud = COMBINE_CMD_STEP(IDLE, STEP_INIT);
+      printf("收到未知步骤,忽略处理\r\n");
+      HAL_Delay(10*60*1000);
     }
 
     if (ledShanshuo  != now.seconds) {
@@ -313,7 +316,7 @@ int main(void)
     }
 
     if (!sosState) {
-      E52_Heartbeat_Fun();
+      // E52_Heartbeat_Fun();
       printf("SOS中\r\n");
 
       deviceInfo.BlDataFlag = BL_START;

+ 10 - 12
Core/Src/stm32f1xx_it.c

@@ -293,8 +293,15 @@ void USART2_IRQHandler(void)
     __HAL_UART_CLEAR_IDLEFLAG(&huart2);    // 清除空闲标志
     HAL_UART_DMAStop(&huart2);             // 停止 DMA
 
-
-    if (strncmp((char *)rx_buf_uart2_DMA, "AT", 2) == 0) {
+    if (rx_buf_uart2_DMA[3] == deviceInfo.loraDeviceAddress_H && rx_buf_uart2_DMA[4] == deviceInfo.loraDeviceAddress_L){
+      if (GET_CMD(deviceInfo.commandFromCloud) == IDLE && GET_STEP(deviceInfo.commandFromCloud) == STEP_INIT ) {
+        memcpy(rx_buf_uart2 ,rx_buf_uart2_DMA, sizeof(rx_buf_uart2_DMA));
+        deviceInfo.commandFromCloud = COMBINE_CMD_STEP(IDLE, STEP_VERIFY);  //初始化  命令和步骤。说明有新数据过来
+      }
+    }else if (strncmp((char *)rx_buf_uart2_DMA, "SUCCESS", 7) == 0) {
+      deviceInfo.loraSendSuccessFlag = 0;
+      memset(rx_buf_uart2_DMA, 0, sizeof(rx_buf_uart2_DMA));
+    }else if (strncmp((char *)rx_buf_uart2_DMA, "AT", 2) == 0) {
       char *ptr = strstr((char *)rx_buf_uart2_DMA, "SRC_ADDR=0x");
       if (ptr != NULL) {
         // 移动指针到十六进制数值部分(跳过"SRC_ADDR=0x")
@@ -315,17 +322,8 @@ void USART2_IRQHandler(void)
       // // 清空缓冲区并重新开启DMA接收
       // memset(rx_buf_uart2, 0, sizeof(rx_buf_uart2));
       // HAL_UART_Receive_DMA(&huart2, rx_buf_uart2, sizeof(rx_buf_uart2));
-    }if (strncmp((char *)rx_buf_uart2_DMA, "SUCCESS", 7) == 0) {
-      deviceInfo.loraSendSuccessFlag = 0;
-      memset(rx_buf_uart2_DMA, 0, sizeof(rx_buf_uart2_DMA));
-    }else if (rx_buf_uart2_DMA[3] == deviceInfo.loraDeviceAddress_H && rx_buf_uart2_DMA[4] == deviceInfo.loraDeviceAddress_L){
-      if (GET_CMD(deviceInfo.commandFromCloud) == IDLE && GET_STEP(deviceInfo.commandFromCloud) == STEP_INIT ) {
-        memcpy(rx_buf_uart2 ,rx_buf_uart2_DMA, sizeof(rx_buf_uart2_DMA));
-        deviceInfo.commandFromCloud = COMBINE_CMD_STEP(IDLE, STEP_VERIFY);  //初始化  命令和步骤。说明有新数据过来
-      }
-    }else {
-      memset(rx_buf_uart2_DMA, 0, sizeof(rx_buf_uart2_DMA));
     }
+    memset(rx_buf_uart2_DMA, 0, sizeof(rx_buf_uart2_DMA));
     // 重新开启 DMA 接收
     HAL_UART_Receive_DMA(&huart2, rx_buf_uart2_DMA, sizeof(rx_buf_uart2_DMA));
   }