Browse Source

解决问题不受控制。原因:上线字段,与工作状态互斥了。添加尾帧判断

xuxinyi 2 tháng trước cách đây
mục cha
commit
71d91dd842
2 tập tin đã thay đổi với 3 bổ sung1 xóa
  1. 2 0
      Core/Src/main.c
  2. 1 1
      Core/Src/stm32f1xx_it.c

+ 2 - 0
Core/Src/main.c

@@ -298,6 +298,7 @@ int main(void)
     /* USER CODE END WHILE */
 
     /* USER CODE BEGIN 3 */
+    printf("deviceInfo.commandFromCloud:%02x\r\n",deviceInfo.commandFromCloud);
     RTC_DateTimeTypeDef now;
     RTC_GetDateTime(&hrtc, &now);
     GPIO_PinState sosState = HAL_GPIO_ReadPin(SOS_KEY_GPIO_Port, SOS_KEY_Pin);//高为未按压,低为按下,优先级最高
@@ -359,6 +360,7 @@ int main(void)
     // 检查是否接收到"心跳"命令,且设备在线
     if (!deviceInfo.isOnline && sosState){
       printf("The device is not online.\r\n");
+      deviceInfo.commandFromCloud = COMBINE_CMD_STEP(IDLE, STEP_INIT);
       if (!deviceInfo.loraSendSuccessFlag) {
         E52_Heartbeat_Fun();
       }

+ 1 - 1
Core/Src/stm32f1xx_it.c

@@ -293,7 +293,7 @@ void USART2_IRQHandler(void)
     __HAL_UART_CLEAR_IDLEFLAG(&huart2);    // 清除空闲标志
     HAL_UART_DMAStop(&huart2);             // 停止 DMA
 
-    if (rx_buf_uart2_DMA[3] == deviceInfo.loraDeviceAddress_H && rx_buf_uart2_DMA[4] == deviceInfo.loraDeviceAddress_L){
+    if (rx_buf_uart2_DMA[0] == 0x55 && rx_buf_uart2_DMA[1] == 0xBB && rx_buf_uart2_DMA[3] == deviceInfo.loraDeviceAddress_H && rx_buf_uart2_DMA[4] == deviceInfo.loraDeviceAddress_L && rx_buf_uart2_DMA[8] == 0xFF && rx_buf_uart2_DMA[9] == 0xEE){
       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);  //初始化  命令和步骤。说明有新数据过来