소스 검색

屏蔽地址最高位。清除多余if。添加疯狂发上线的记录。添加清除队列。(烧录版本:描述 完成5个命令)

xuxinyi 1 개월 전
부모
커밋
cb83f8bd6c
2개의 변경된 파일23개의 추가작업 그리고 22개의 파일을 삭제
  1. 22 21
      Core/Src/main.c
  2. 1 1
      Core/Src/stm32f1xx_it.c

+ 22 - 21
Core/Src/main.c

@@ -376,7 +376,8 @@ int main(void)
     } else {
       if (IsTimeElapsed(&hrtc, &IDLE_struct, 20*60)) {
         deviceInfo.commandFromCloud = COMBINE_CMD_STEP(IDLE, STEP_INIT);
-        E52_AT_TYPE_Fun(E52_TYPE_REPEATER);
+        printf("心跳发送1\r\n");
+        // E52_AT_TYPE_Fun(E52_TYPE_REPEATER);
       }
     }
 
@@ -397,23 +398,25 @@ int main(void)
 
         case REQUEST_BLUETOOTH_DATA_SEND:
           uint8_t sentData_Temp[25] = {0};
-          if (TRUE) {   //   5   5
-            if (RingBuffer_Dequeue(&deviceInfo.queueBLData, sentData_Temp) == 0 && deviceInfo.forwardBLAndLoraDataCount < deviceInfo.forwardBLAndLoraDataCountMax) {
-              //不为空的情况下
-              E52_Send_Bl_Data_Fun(sentData_Temp,0x00);
-              deviceInfo.forwardBLAndLoraDataCount++;
-            } else {
-              //为空的情况下
-              // printf("发送最后一位,开始发送蓝牙数据给Lora\r\n");
-              uint8_t endFrame[25] = {0};
-              E52_Send_Bl_Data_Fun(endFrame,0x01);
-              deviceInfo.BlDataFlag = BL_START;
-              deviceInfo.commandFromCloud = COMBINE_CMD_STEP(REQUEST_BLUETOOTH_DATA, STEP_COMPLETE);
-              printf("发送完成\r\n");
+          if (RingBuffer_Dequeue(&deviceInfo.queueBLData, sentData_Temp) == 0 && deviceInfo.forwardBLAndLoraDataCount <
+              deviceInfo.forwardBLAndLoraDataCountMax) {
+            //不为空的情况下
+            E52_Send_Bl_Data_Fun(sentData_Temp, 0x00);
+            deviceInfo.forwardBLAndLoraDataCount++;
+          } else {
+            //擦除缓存
+            if (RingBuffer_Dequeue(&deviceInfo.queueBLData, sentData_Temp) == 0) {
+               continue;
             }
-            HAL_Delay(deviceInfo.forwardBLAndLoraDataDuration);//后台配置间隔时间
+            // printf("发送最后一位,开始发送蓝牙数据给Lora\r\n");
+            uint8_t endFrame[25] = {0};
+            E52_Send_Bl_Data_Fun(endFrame, 0x01);
+            deviceInfo.BlDataFlag = BL_START;
+            deviceInfo.commandFromCloud = COMBINE_CMD_STEP(REQUEST_BLUETOOTH_DATA, STEP_COMPLETE);
+            printf("发送完成\r\n");
           }
-          break;          //发送数据阶段
+          HAL_Delay(deviceInfo.forwardBLAndLoraDataDuration); //后台配置间隔时间
+          break; //发送数据阶段
         case STEP_COMPLETE:
           deviceInfo.forwardBLAndLoraDataDuration = 0;
           // i = 0;
@@ -434,10 +437,9 @@ int main(void)
     if (GET_CMD( deviceInfo.commandFromCloud)  == E52_HEARTBEAT && deviceInfo.isOnline) {
       switch (GET_STEP(deviceInfo.commandFromCloud)) {
         case HEARTBEAT_SEND:
-          if (TRUE) {
+            printf("心跳发送2\r\n");
             E52_Heartbeat_Fun();
             deviceInfo.commandFromCloud = COMBINE_CMD_STEP(REQUEST_BLUETOOTH_DATA, STEP_COMPLETE);
-          }
           break;
         case STEP_COMPLETE:
           deviceInfo.commandFromCloud = COMBINE_CMD_STEP(IDLE, STEP_INIT);
@@ -470,9 +472,8 @@ int main(void)
           break;        //如果是单波,多播,配置目标地址
 
           case STEP_COMPLETE:
-            if (TRUE) {
-              E52_Heartbeat_Fun();
-            }
+          printf("心跳发送3\r\n");
+          E52_Heartbeat_Fun();
             deviceInfo.commandFromCloud = COMBINE_CMD_STEP(IDLE, STEP_INIT);
           break;
 

+ 1 - 1
Core/Src/stm32f1xx_it.c

@@ -320,7 +320,7 @@ void USART2_IRQHandler(void)
             strncpy(hexStr, ptr, 4);
             long addr = strtol(hexStr, NULL, 16);
 
-            deviceInfo.loraDeviceAddress_H = (addr >> 8) & 0xFF;
+            deviceInfo.loraDeviceAddress_H = (addr >> 8) & 0x7F; //首位置空:因为修改type会改变地址
             deviceInfo.loraDeviceAddress_L = addr & 0xFF;
             Flash_Write_LoraAddr(deviceInfo.loraDeviceAddress_H, deviceInfo.loraDeviceAddress_L);
           }