xuxinyi há 1 mês atrás
pai
commit
033944741b
3 ficheiros alterados com 8 adições e 9 exclusões
  1. 2 1
      Core/Inc/stm32f1xx_it.h
  2. 3 4
      Core/Src/main.c
  3. 3 4
      Core/Src/stm32f1xx_it.c

+ 2 - 1
Core/Inc/stm32f1xx_it.h

@@ -63,7 +63,8 @@ void USART3_IRQHandler(void);
 void EXTI15_10_IRQHandler(void);
 void RTC_Alarm_IRQHandler(void);
 /* USER CODE BEGIN EFP */
-
+#define UART2_DMA_BUF_LEN   25
+#define UART3_DMA_BUF_LEN   25
 /* USER CODE END EFP */
 
 #ifdef __cplusplus

+ 3 - 4
Core/Src/main.c

@@ -270,14 +270,14 @@ int main(void)
   E52_CtlPowerOn_Fun();
   //初始化环形缓冲区
   RingBuffer_Init(&deviceInfo.queueBLData);
-
+  Device_Info_Init_Fun();
   // 启动 USART2 DMA 接收
   HAL_UART_Receive_DMA(&huart3, rx_buf, sizeof(rx_buf));
   __HAL_UART_ENABLE_IT(&huart3, UART_IT_IDLE);
   HAL_UART_Receive_DMA(&huart2, rx_buf_uart2_DMA, sizeof(rx_buf_uart2_DMA));
   __HAL_UART_ENABLE_IT(&huart2, UART_IT_IDLE);
   Flash_Read_LoraAddr(&deviceInfo.loraDeviceAddress_H, &deviceInfo.loraDeviceAddress_L);
-  printf("deviceInfo.loraDeviceAddress_H:%02X,deviceInfo.loraDeviceAddress_L:%02X\r\n", deviceInfo.loraDeviceAddress_H, deviceInfo.loraDeviceAddress_L);
+  // printf("deviceInfo.loraDeviceAddress_H:%02X,deviceInfo.loraDeviceAddress_L:%02X\r\n", deviceInfo.loraDeviceAddress_H, deviceInfo.loraDeviceAddress_L);
   if (deviceInfo.loraDeviceAddress_H == 0xFF || deviceInfo.loraDeviceAddress_L == 0xFF || deviceInfo.loraDeviceAddress_H == 0x00 || deviceInfo.loraDeviceAddress_L == 0x00) { // 未设置Lora地址,应该是初次启动,配置Lora地址蓝牙等
     HAL_Delay(4000);
     printf("开始初始化\r\n");
@@ -295,7 +295,6 @@ int main(void)
     printf("初始化复位\r\n");
     E104_BT5005A_RESET_Fun();
     HAL_Delay(2000);
-    Device_Info_Init_Fun();
     printf("开启Lora广播模块\r\n");
     E52_CONFIG_BROADCAST_TYPE_FUN(BROADCAST_ALL);
     HAL_Delay(2000);
@@ -337,7 +336,7 @@ int main(void)
     /* USER CODE BEGIN 3 */
 
     // 检查是否接收到"心跳"命令,且设备在线
-    printf("设备地址:0x%02X\n", deviceInfo.commandFromCloud);
+    printf("设备状态:0x%02X\n", deviceInfo.commandFromCloud);
     // 心跳:不在线时,每 10 秒发一次
     if (!deviceInfo.isOnline) {
       if (IsTimeElapsed(&hrtc, &Online_struct, 10)) {

+ 3 - 4
Core/Src/stm32f1xx_it.c

@@ -259,7 +259,6 @@ void TIM3_IRQHandler(void)
 /**
   * @brief This function handles USART2 global interrupt.
   */
-#define UART2_DMA_BUF_LEN   25
 
 void USART2_IRQHandler(void)
 {
@@ -345,7 +344,7 @@ void USART3_IRQHandler(void)
     __HAL_UART_CLEAR_IDLEFLAG(&huart3);
     HAL_UART_DMAStop(&huart3);
 
-    uint32_t received_len = sizeof(rx_buf) - __HAL_DMA_GET_COUNTER(huart3.hdmarx);
+    // uint32_t received_len = sizeof(rx_buf) - __HAL_DMA_GET_COUNTER(huart3.hdmarx);
 
     if (strncmp((char *)rx_buf, "AT", 2) != 0) {
       if (deviceInfo.BlDataFlag == BL_START) {
@@ -370,8 +369,8 @@ void USART3_IRQHandler(void)
       }
     }
 
-    memset(rx_buf, 0, received_len);
-    HAL_UART_Receive_DMA(&huart3, rx_buf, received_len); // 重新启动
+    memset(rx_buf, 0, UART3_DMA_BUF_LEN);
+    HAL_UART_Receive_DMA(&huart3, rx_buf, UART3_DMA_BUF_LEN); // 重新启动
   }
   /* USER CODE END USART3_IRQn 1 */
 }