Bladeren bron

无法二次启动

xuxinyi 2 maanden geleden
bovenliggende
commit
9573430825
4 gewijzigde bestanden met toevoegingen van 20 en 11 verwijderingen
  1. 1 1
      Core/Inc/E52.h
  2. 2 2
      Core/Src/E52.c
  3. 8 0
      Core/Src/main.c
  4. 9 8
      Core/Src/stm32f1xx_it.c

+ 1 - 1
Core/Inc/E52.h

@@ -97,7 +97,7 @@ typedef struct __attribute__((packed)){
     uint8_t frame_tail_H;    // 帧尾高字节
     uint8_t frame_tail_L;    // 帧尾低字节
 } SendBlData_structure;
-void E52_Send_Bl_Data_Fun(void);
+void E52_Send_Bl_Data_Fun(uint8_t);
 
 
 // 发送SOS结构体

+ 2 - 2
Core/Src/E52.c

@@ -31,7 +31,7 @@ void E52_Heartbeat_Fun() {
     // TODO: command:01
 }
 
-void E52_Send_Bl_Data_Fun() {
+void E52_Send_Bl_Data_Fun(uint8_t i) {
     printf("这是发送蓝牙数据");
     SendBlData_structure sendBlData_structure;
     sendBlData_structure.frame_header_H = 0x55;
@@ -39,7 +39,7 @@ void E52_Send_Bl_Data_Fun() {
     sendBlData_structure.function_code = 0x02;
     sendBlData_structure.badge_addr_high = deviceInfo.loraDeviceAddress_H;
     sendBlData_structure.badge_addr_low = deviceInfo.loraDeviceAddress_L;
-    memcpy(sendBlData_structure.bl_data, rx_buf, 8);
+    memcpy(sendBlData_structure.bl_data, totalData[i], 8);
     sendBlData_structure.finish_send = 0x01;
     sendBlData_structure.frame_tail_H = 0xFF;
     sendBlData_structure.frame_tail_L = 0xEE;

+ 8 - 0
Core/Src/main.c

@@ -278,6 +278,7 @@ int main(void)
   /* USER CODE BEGIN WHILE */
   // deviceInfo.sendBlDataFlag = 1;
   printf("Device is ready\r\n");
+  uint8_t i = 0;
   while (1)
   {
     /* USER CODE END WHILE */
@@ -294,6 +295,13 @@ int main(void)
       if (deviceInfo.timeCount >= deviceInfo.forwardBLAndLoraDataDuration) {
         Timer_Managment_Fun(&htim4, TIMER_OP_STOP);
         deviceInfo.BlDataFlag = BL_STOP;
+        while (receiveBlDataCount >= i) {
+          i++;
+          printf("发送第%d个蓝牙数据给Lora\r\n", i);
+          E52_Send_Bl_Data_Fun(i);
+        }
+
+        deviceInfo.commandFromCloud = IDLE;
         //TODO 停止计时器后,将数据发送出去。
         printf("停止蓝牙扫描,开始发送蓝牙数据给Lora\r\n");
       }else {

+ 9 - 8
Core/Src/stm32f1xx_it.c

@@ -353,16 +353,17 @@ void USART3_IRQHandler(void)
     HAL_UART_DMAStop(&huart3);
 
     uint32_t received_len = sizeof(rx_buf) - __HAL_DMA_GET_COUNTER(huart3.hdmarx);
-    // if (receiveBlDataCount < 115)
-    // {
-    //   memcpy(totalData[receiveBlDataCount], rx_buf, received_len);
-    //   receiveBlDataCount++;
-    //   memset(rx_buf, 0, received_len);
-    //   HAL_UART_Receive_DMA(&huart3, rx_buf, received_len); // 重新启动
-    // }
+
     if (strncmp((char *)rx_buf, "AT", 2) != 0) {
       if (deviceInfo.BlDataFlag == BL_START) {
-        E52_Send_Bl_Data_Fun();
+        // E52_Send_Bl_Data_Fun();
+        if (receiveBlDataCount < 115)
+        {
+          memcpy(totalData[receiveBlDataCount], rx_buf, received_len);
+          receiveBlDataCount++;
+          memset(rx_buf, 0, received_len);
+          HAL_UART_Receive_DMA(&huart3, rx_buf, received_len); // 重新启动
+        }
       }else if (deviceInfo.BlDataFlag == BL_STOP) {
         // E52_Send_SOS_Fun();
       }