1
0

2 Коммитууд 83b3808667 ... 1b86d7209a

Эзэн SHA1 Мессеж Огноо
  xuxinyi 1b86d7209a Merge remote-tracking branch 'origin/master' 1 сар өмнө
  xuxinyi 1edc2f4436 添加lora复位引脚 1 сар өмнө

+ 2 - 0
Core/Inc/main.h

@@ -69,6 +69,8 @@ void Error_Handler(void);
 #define CTL_LORA_POWER_GPIO_Port GPIOA
 #define CTL_LORA_POWER_GPIO_Port GPIOA
 #define PowerLED_Pin GPIO_PIN_3
 #define PowerLED_Pin GPIO_PIN_3
 #define PowerLED_GPIO_Port GPIOB
 #define PowerLED_GPIO_Port GPIOB
+#define LoraRest_Pin GPIO_PIN_7
+#define LoraRest_GPIO_Port GPIOB
 
 
 /* USER CODE BEGIN Private defines */
 /* USER CODE BEGIN Private defines */
 
 

+ 1 - 0
Core/Src/E52.c

@@ -9,6 +9,7 @@ Device_structure deviceInfo;
 
 
 void E52_CtlPowerOn_Fun() {
 void E52_CtlPowerOn_Fun() {
     HAL_GPIO_WritePin(POWER_ON_GPIO_Port, CTL_LORA_POWER_Pin, GPIO_PIN_RESET);
     HAL_GPIO_WritePin(POWER_ON_GPIO_Port, CTL_LORA_POWER_Pin, GPIO_PIN_RESET);
+    HAL_GPIO_WritePin(LoraRest_GPIO_Port, LoraRest_Pin, GPIO_PIN_SET);
 }
 }
 
 
 void E52_CtlPowerOff_Fun() {
 void E52_CtlPowerOff_Fun() {

+ 268 - 244
Core/Src/main.c

@@ -63,19 +63,12 @@ uint8_t rx_buf_uart2_DMA[25] = {0};
 
 
 /* Private function prototypes -----------------------------------------------*/
 /* Private function prototypes -----------------------------------------------*/
 void SystemClock_Config(void);
 void SystemClock_Config(void);
-
 static void MX_GPIO_Init(void);
 static void MX_GPIO_Init(void);
-
 static void MX_DMA_Init(void);
 static void MX_DMA_Init(void);
-
 static void MX_USART1_UART_Init(void);
 static void MX_USART1_UART_Init(void);
-
 static void MX_USART2_UART_Init(void);
 static void MX_USART2_UART_Init(void);
-
 static void MX_USART3_UART_Init(void);
 static void MX_USART3_UART_Init(void);
-
 static void MX_RTC_Init(void);
 static void MX_RTC_Init(void);
-
 /* USER CODE BEGIN PFP */
 /* USER CODE BEGIN PFP */
 
 
 /* USER CODE END PFP */
 /* USER CODE END PFP */
@@ -174,35 +167,37 @@ int IsTimeElapsed(RTC_HandleTypeDef *hrtc, RTC_TimeTypeDef *last, uint32_t inter
   * @brief  The application entry point.
   * @brief  The application entry point.
   * @retval int
   * @retval int
   */
   */
-int main(void) {
-    /* USER CODE BEGIN 1 */
+int main(void)
+{
+
+  /* USER CODE BEGIN 1 */
 
 
-    /* USER CODE END 1 */
+  /* USER CODE END 1 */
 
 
-    /* MCU Configuration--------------------------------------------------------*/
+  /* MCU Configuration--------------------------------------------------------*/
 
 
-    /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
-    HAL_Init();
+  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
+  HAL_Init();
 
 
-    /* USER CODE BEGIN Init */
+  /* USER CODE BEGIN Init */
 
 
-    /* USER CODE END Init */
+  /* USER CODE END Init */
 
 
-    /* Configure the system clock */
-    SystemClock_Config();
+  /* Configure the system clock */
+  SystemClock_Config();
 
 
-    /* USER CODE BEGIN SysInit */
+  /* USER CODE BEGIN SysInit */
 
 
-    /* USER CODE END SysInit */
+  /* USER CODE END SysInit */
 
 
-    /* Initialize all configured peripherals */
-    MX_GPIO_Init();
-    MX_DMA_Init();
-    MX_USART1_UART_Init();
-    MX_USART2_UART_Init();
-    MX_USART3_UART_Init();
-    MX_RTC_Init();
-    /* USER CODE BEGIN 2 */
+  /* Initialize all configured peripherals */
+  MX_GPIO_Init();
+  MX_DMA_Init();
+  MX_USART1_UART_Init();
+  MX_USART2_UART_Init();
+  MX_USART3_UART_Init();
+  MX_RTC_Init();
+  /* USER CODE BEGIN 2 */
 
 
     //开启电源显示
     //开启电源显示
     powerOn();
     powerOn();
@@ -295,18 +290,18 @@ int main(void) {
         // E52_Heartbeat_Fun();
         // E52_Heartbeat_Fun();
     }
     }
     // srand(HAL_GetTick()); // 设置随机数种子
     // srand(HAL_GetTick()); // 设置随机数种子
-    /* USER CODE END 2 */
+  /* USER CODE END 2 */
 
 
-    /* Infinite loop */
-    /* USER CODE BEGIN WHILE */
+  /* Infinite loop */
+  /* USER CODE BEGIN WHILE */
 
 
     // printf("设备地址:0x%02X%02X\n", deviceInfo.loraDeviceAddress_H, deviceInfo.loraDeviceAddress_L);
     // printf("设备地址:0x%02X%02X\n", deviceInfo.loraDeviceAddress_H, deviceInfo.loraDeviceAddress_L);
     deviceInfo.commandFromCloud = COMBINE_CMD_STEP(IDLE, STEP_INIT);//进入流程前,初始化状态
     deviceInfo.commandFromCloud = COMBINE_CMD_STEP(IDLE, STEP_INIT);//进入流程前,初始化状态
 
 
     while (1) {
     while (1) {
-        /* USER CODE END WHILE */
+    /* USER CODE END WHILE */
 
 
-        /* USER CODE BEGIN 3 */
+    /* USER CODE BEGIN 3 */
 
 
         // 检查是否接收到"心跳"命令,且设备在线
         // 检查是否接收到"心跳"命令,且设备在线
         printf("设备状态:0x%02X\n", deviceInfo.commandFromCloud);
         printf("设备状态:0x%02X\n", deviceInfo.commandFromCloud);
@@ -460,50 +455,54 @@ int main(void) {
             Set_Alarm_After(deviceInfo.rtc_wake_up_time);
             Set_Alarm_After(deviceInfo.rtc_wake_up_time);
         }
         }
     }
     }
-    /* USER CODE END 3 */
+  /* USER CODE END 3 */
 }
 }
 
 
 /**
 /**
   * @brief System Clock Configuration
   * @brief System Clock Configuration
   * @retval None
   * @retval None
   */
   */
-void SystemClock_Config(void) {
-    RCC_OscInitTypeDef RCC_OscInitStruct = {0};
-    RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
-    RCC_PeriphCLKInitTypeDef PeriphClkInit = {0};
-
-    /** Initializes the RCC Oscillators according to the specified parameters
-    * in the RCC_OscInitTypeDef structure.
-    */
-    RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE | RCC_OSCILLATORTYPE_LSE;
-    RCC_OscInitStruct.HSEState = RCC_HSE_ON;
-    RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1;
-    RCC_OscInitStruct.LSEState = RCC_LSE_ON;
-    RCC_OscInitStruct.HSIState = RCC_HSI_ON;
-    RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
-    RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
-    RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9;
-    if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) {
-        Error_Handler();
-    }
+void SystemClock_Config(void)
+{
+  RCC_OscInitTypeDef RCC_OscInitStruct = {0};
+  RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
+  RCC_PeriphCLKInitTypeDef PeriphClkInit = {0};
 
 
-    /** Initializes the CPU, AHB and APB buses clocks
-    */
-    RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK
-                                  | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;
-    RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
-    RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
-    RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
-    RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
-
-    if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) {
-        Error_Handler();
-    }
-    PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_RTC;
-    PeriphClkInit.RTCClockSelection = RCC_RTCCLKSOURCE_LSE;
-    if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) {
-        Error_Handler();
-    }
+  /** Initializes the RCC Oscillators according to the specified parameters
+  * in the RCC_OscInitTypeDef structure.
+  */
+  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE|RCC_OSCILLATORTYPE_LSE;
+  RCC_OscInitStruct.HSEState = RCC_HSE_ON;
+  RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1;
+  RCC_OscInitStruct.LSEState = RCC_LSE_ON;
+  RCC_OscInitStruct.HSIState = RCC_HSI_ON;
+  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
+  RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
+  RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9;
+  if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
+  {
+    Error_Handler();
+  }
+
+  /** Initializes the CPU, AHB and APB buses clocks
+  */
+  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
+                              |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
+  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
+  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
+  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
+  RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
+
+  if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK)
+  {
+    Error_Handler();
+  }
+  PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_RTC;
+  PeriphClkInit.RTCClockSelection = RCC_RTCCLKSOURCE_LSE;
+  if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
+  {
+    Error_Handler();
+  }
 }
 }
 
 
 /**
 /**
@@ -511,51 +510,57 @@ void SystemClock_Config(void) {
   * @param None
   * @param None
   * @retval None
   * @retval None
   */
   */
-static void MX_RTC_Init(void) {
-    /* USER CODE BEGIN RTC_Init 0 */
-
-    /* USER CODE END RTC_Init 0 */
+static void MX_RTC_Init(void)
+{
 
 
-    RTC_TimeTypeDef sTime = {0};
-    RTC_DateTypeDef DateToUpdate = {0};
+  /* USER CODE BEGIN RTC_Init 0 */
 
 
-    /* USER CODE BEGIN RTC_Init 1 */
+  /* USER CODE END RTC_Init 0 */
 
 
-    /* USER CODE END RTC_Init 1 */
+  RTC_TimeTypeDef sTime = {0};
+  RTC_DateTypeDef DateToUpdate = {0};
 
 
-    /** Initialize RTC Only
-    */
-    hrtc.Instance = RTC;
-    hrtc.Init.AsynchPrediv = RTC_AUTO_1_SECOND;
-    hrtc.Init.OutPut = RTC_OUTPUTSOURCE_ALARM;
-    if (HAL_RTC_Init(&hrtc) != HAL_OK) {
-        Error_Handler();
-    }
+  /* USER CODE BEGIN RTC_Init 1 */
 
 
-    /* USER CODE BEGIN Check_RTC_BKUP */
+  /* USER CODE END RTC_Init 1 */
 
 
-    /* USER CODE END Check_RTC_BKUP */
+  /** Initialize RTC Only
+  */
+  hrtc.Instance = RTC;
+  hrtc.Init.AsynchPrediv = RTC_AUTO_1_SECOND;
+  hrtc.Init.OutPut = RTC_OUTPUTSOURCE_ALARM;
+  if (HAL_RTC_Init(&hrtc) != HAL_OK)
+  {
+    Error_Handler();
+  }
 
 
-    /** Initialize RTC and set the Time and Date
-    */
-    sTime.Hours = 0;
-    sTime.Minutes = 0;
-    sTime.Seconds = 0;
+  /* USER CODE BEGIN Check_RTC_BKUP */
 
 
-    if (HAL_RTC_SetTime(&hrtc, &sTime, RTC_FORMAT_BIN) != HAL_OK) {
-        Error_Handler();
-    }
-    DateToUpdate.WeekDay = RTC_WEEKDAY_MONDAY;
-    DateToUpdate.Month = RTC_MONTH_JANUARY;
-    DateToUpdate.Date = 1;
-    DateToUpdate.Year = 0;
+  /* USER CODE END Check_RTC_BKUP */
 
 
-    if (HAL_RTC_SetDate(&hrtc, &DateToUpdate, RTC_FORMAT_BIN) != HAL_OK) {
-        Error_Handler();
-    }
-    /* USER CODE BEGIN RTC_Init 2 */
+  /** Initialize RTC and set the Time and Date
+  */
+  sTime.Hours = 0;
+  sTime.Minutes = 0;
+  sTime.Seconds = 0;
+
+  if (HAL_RTC_SetTime(&hrtc, &sTime, RTC_FORMAT_BIN) != HAL_OK)
+  {
+    Error_Handler();
+  }
+  DateToUpdate.WeekDay = RTC_WEEKDAY_MONDAY;
+  DateToUpdate.Month = RTC_MONTH_JANUARY;
+  DateToUpdate.Date = 1;
+  DateToUpdate.Year = 0;
+
+  if (HAL_RTC_SetDate(&hrtc, &DateToUpdate, RTC_FORMAT_BIN) != HAL_OK)
+  {
+    Error_Handler();
+  }
+  /* USER CODE BEGIN RTC_Init 2 */
+
+  /* USER CODE END RTC_Init 2 */
 
 
-    /* USER CODE END RTC_Init 2 */
 }
 }
 
 
 /**
 /**
@@ -563,28 +568,32 @@ static void MX_RTC_Init(void) {
   * @param None
   * @param None
   * @retval None
   * @retval None
   */
   */
-static void MX_USART1_UART_Init(void) {
-    /* USER CODE BEGIN USART1_Init 0 */
-
-    /* USER CODE END USART1_Init 0 */
-
-    /* USER CODE BEGIN USART1_Init 1 */
-
-    /* USER CODE END USART1_Init 1 */
-    huart1.Instance = USART1;
-    huart1.Init.BaudRate = 115200;
-    huart1.Init.WordLength = UART_WORDLENGTH_8B;
-    huart1.Init.StopBits = UART_STOPBITS_1;
-    huart1.Init.Parity = UART_PARITY_NONE;
-    huart1.Init.Mode = UART_MODE_TX_RX;
-    huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
-    huart1.Init.OverSampling = UART_OVERSAMPLING_16;
-    if (HAL_UART_Init(&huart1) != HAL_OK) {
-        Error_Handler();
-    }
-    /* USER CODE BEGIN USART1_Init 2 */
+static void MX_USART1_UART_Init(void)
+{
+
+  /* USER CODE BEGIN USART1_Init 0 */
+
+  /* USER CODE END USART1_Init 0 */
+
+  /* USER CODE BEGIN USART1_Init 1 */
+
+  /* USER CODE END USART1_Init 1 */
+  huart1.Instance = USART1;
+  huart1.Init.BaudRate = 115200;
+  huart1.Init.WordLength = UART_WORDLENGTH_8B;
+  huart1.Init.StopBits = UART_STOPBITS_1;
+  huart1.Init.Parity = UART_PARITY_NONE;
+  huart1.Init.Mode = UART_MODE_TX_RX;
+  huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+  huart1.Init.OverSampling = UART_OVERSAMPLING_16;
+  if (HAL_UART_Init(&huart1) != HAL_OK)
+  {
+    Error_Handler();
+  }
+  /* USER CODE BEGIN USART1_Init 2 */
+
+  /* USER CODE END USART1_Init 2 */
 
 
-    /* USER CODE END USART1_Init 2 */
 }
 }
 
 
 /**
 /**
@@ -592,28 +601,32 @@ static void MX_USART1_UART_Init(void) {
   * @param None
   * @param None
   * @retval None
   * @retval None
   */
   */
-static void MX_USART2_UART_Init(void) {
-    /* USER CODE BEGIN USART2_Init 0 */
-
-    /* USER CODE END USART2_Init 0 */
-
-    /* USER CODE BEGIN USART2_Init 1 */
-
-    /* USER CODE END USART2_Init 1 */
-    huart2.Instance = USART2;
-    huart2.Init.BaudRate = 115200;
-    huart2.Init.WordLength = UART_WORDLENGTH_8B;
-    huart2.Init.StopBits = UART_STOPBITS_1;
-    huart2.Init.Parity = UART_PARITY_NONE;
-    huart2.Init.Mode = UART_MODE_TX_RX;
-    huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
-    huart2.Init.OverSampling = UART_OVERSAMPLING_16;
-    if (HAL_UART_Init(&huart2) != HAL_OK) {
-        Error_Handler();
-    }
-    /* USER CODE BEGIN USART2_Init 2 */
+static void MX_USART2_UART_Init(void)
+{
+
+  /* USER CODE BEGIN USART2_Init 0 */
+
+  /* USER CODE END USART2_Init 0 */
+
+  /* USER CODE BEGIN USART2_Init 1 */
+
+  /* USER CODE END USART2_Init 1 */
+  huart2.Instance = USART2;
+  huart2.Init.BaudRate = 115200;
+  huart2.Init.WordLength = UART_WORDLENGTH_8B;
+  huart2.Init.StopBits = UART_STOPBITS_1;
+  huart2.Init.Parity = UART_PARITY_NONE;
+  huart2.Init.Mode = UART_MODE_TX_RX;
+  huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+  huart2.Init.OverSampling = UART_OVERSAMPLING_16;
+  if (HAL_UART_Init(&huart2) != HAL_OK)
+  {
+    Error_Handler();
+  }
+  /* USER CODE BEGIN USART2_Init 2 */
+
+  /* USER CODE END USART2_Init 2 */
 
 
-    /* USER CODE END USART2_Init 2 */
 }
 }
 
 
 /**
 /**
@@ -621,44 +634,51 @@ static void MX_USART2_UART_Init(void) {
   * @param None
   * @param None
   * @retval None
   * @retval None
   */
   */
-static void MX_USART3_UART_Init(void) {
-    /* USER CODE BEGIN USART3_Init 0 */
-
-    /* USER CODE END USART3_Init 0 */
-
-    /* USER CODE BEGIN USART3_Init 1 */
-
-    /* USER CODE END USART3_Init 1 */
-    huart3.Instance = USART3;
-    huart3.Init.BaudRate = 115200;
-    huart3.Init.WordLength = UART_WORDLENGTH_8B;
-    huart3.Init.StopBits = UART_STOPBITS_1;
-    huart3.Init.Parity = UART_PARITY_NONE;
-    huart3.Init.Mode = UART_MODE_TX_RX;
-    huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE;
-    huart3.Init.OverSampling = UART_OVERSAMPLING_16;
-    if (HAL_UART_Init(&huart3) != HAL_OK) {
-        Error_Handler();
-    }
-    /* USER CODE BEGIN USART3_Init 2 */
+static void MX_USART3_UART_Init(void)
+{
+
+  /* USER CODE BEGIN USART3_Init 0 */
+
+  /* USER CODE END USART3_Init 0 */
+
+  /* USER CODE BEGIN USART3_Init 1 */
+
+  /* USER CODE END USART3_Init 1 */
+  huart3.Instance = USART3;
+  huart3.Init.BaudRate = 115200;
+  huart3.Init.WordLength = UART_WORDLENGTH_8B;
+  huart3.Init.StopBits = UART_STOPBITS_1;
+  huart3.Init.Parity = UART_PARITY_NONE;
+  huart3.Init.Mode = UART_MODE_TX_RX;
+  huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+  huart3.Init.OverSampling = UART_OVERSAMPLING_16;
+  if (HAL_UART_Init(&huart3) != HAL_OK)
+  {
+    Error_Handler();
+  }
+  /* USER CODE BEGIN USART3_Init 2 */
+
+  /* USER CODE END USART3_Init 2 */
 
 
-    /* USER CODE END USART3_Init 2 */
 }
 }
 
 
 /**
 /**
   * Enable DMA controller clock
   * Enable DMA controller clock
   */
   */
-static void MX_DMA_Init(void) {
-    /* DMA controller clock enable */
-    __HAL_RCC_DMA1_CLK_ENABLE();
-
-    /* DMA interrupt init */
-    /* DMA1_Channel3_IRQn interrupt configuration */
-    HAL_NVIC_SetPriority(DMA1_Channel3_IRQn, 0, 0);
-    HAL_NVIC_EnableIRQ(DMA1_Channel3_IRQn);
-    /* DMA1_Channel6_IRQn interrupt configuration */
-    HAL_NVIC_SetPriority(DMA1_Channel6_IRQn, 0, 0);
-    HAL_NVIC_EnableIRQ(DMA1_Channel6_IRQn);
+static void MX_DMA_Init(void)
+{
+
+  /* DMA controller clock enable */
+  __HAL_RCC_DMA1_CLK_ENABLE();
+
+  /* DMA interrupt init */
+  /* DMA1_Channel3_IRQn interrupt configuration */
+  HAL_NVIC_SetPriority(DMA1_Channel3_IRQn, 0, 0);
+  HAL_NVIC_EnableIRQ(DMA1_Channel3_IRQn);
+  /* DMA1_Channel6_IRQn interrupt configuration */
+  HAL_NVIC_SetPriority(DMA1_Channel6_IRQn, 0, 0);
+  HAL_NVIC_EnableIRQ(DMA1_Channel6_IRQn);
+
 }
 }
 
 
 /**
 /**
@@ -666,61 +686,62 @@ static void MX_DMA_Init(void) {
   * @param None
   * @param None
   * @retval None
   * @retval None
   */
   */
-static void MX_GPIO_Init(void) {
-    GPIO_InitTypeDef GPIO_InitStruct = {0};
-    /* USER CODE BEGIN MX_GPIO_Init_1 */
-
-    /* USER CODE END MX_GPIO_Init_1 */
-
-    /* GPIO Ports Clock Enable */
-    __HAL_RCC_GPIOC_CLK_ENABLE();
-    __HAL_RCC_GPIOD_CLK_ENABLE();
-    __HAL_RCC_GPIOA_CLK_ENABLE();
-    __HAL_RCC_GPIOB_CLK_ENABLE();
-
-    /*Configure GPIO pin Output Level */
-    HAL_GPIO_WritePin(POWER_ON_GPIO_Port, POWER_ON_Pin, GPIO_PIN_SET);
-
-    /*Configure GPIO pin Output Level */
-    HAL_GPIO_WritePin(CTL_LORA_POWER_GPIO_Port, CTL_LORA_POWER_Pin, GPIO_PIN_RESET);
-
-    /*Configure GPIO pin Output Level */
-    HAL_GPIO_WritePin(PowerLED_GPIO_Port, PowerLED_Pin, GPIO_PIN_RESET);
-
-    /*Configure GPIO pins : SOS_KEY_Pin JUGE_PIN_Pin */
-    GPIO_InitStruct.Pin = SOS_KEY_Pin | JUGE_PIN_Pin;
-    GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING_FALLING;
-    GPIO_InitStruct.Pull = GPIO_PULLUP;
-    HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
-
-    /*Configure GPIO pin : POWER_ON_Pin */
-    GPIO_InitStruct.Pin = POWER_ON_Pin;
-    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
-    GPIO_InitStruct.Pull = GPIO_PULLUP;
-    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
-    HAL_GPIO_Init(POWER_ON_GPIO_Port, &GPIO_InitStruct);
-
-    /*Configure GPIO pin : CTL_LORA_POWER_Pin */
-    GPIO_InitStruct.Pin = CTL_LORA_POWER_Pin;
-    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
-    GPIO_InitStruct.Pull = GPIO_PULLDOWN;
-    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
-    HAL_GPIO_Init(CTL_LORA_POWER_GPIO_Port, &GPIO_InitStruct);
-
-    /*Configure GPIO pin : PowerLED_Pin */
-    GPIO_InitStruct.Pin = PowerLED_Pin;
-    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
-    GPIO_InitStruct.Pull = GPIO_PULLDOWN;
-    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
-    HAL_GPIO_Init(PowerLED_GPIO_Port, &GPIO_InitStruct);
-
-    /* EXTI interrupt init*/
-    HAL_NVIC_SetPriority(EXTI15_10_IRQn, 0, 0);
-    HAL_NVIC_EnableIRQ(EXTI15_10_IRQn);
-
-    /* USER CODE BEGIN MX_GPIO_Init_2 */
-
-    /* USER CODE END MX_GPIO_Init_2 */
+static void MX_GPIO_Init(void)
+{
+  GPIO_InitTypeDef GPIO_InitStruct = {0};
+  /* USER CODE BEGIN MX_GPIO_Init_1 */
+
+  /* USER CODE END MX_GPIO_Init_1 */
+
+  /* GPIO Ports Clock Enable */
+  __HAL_RCC_GPIOC_CLK_ENABLE();
+  __HAL_RCC_GPIOD_CLK_ENABLE();
+  __HAL_RCC_GPIOA_CLK_ENABLE();
+  __HAL_RCC_GPIOB_CLK_ENABLE();
+
+  /*Configure GPIO pin Output Level */
+  HAL_GPIO_WritePin(POWER_ON_GPIO_Port, POWER_ON_Pin, GPIO_PIN_SET);
+
+  /*Configure GPIO pin Output Level */
+  HAL_GPIO_WritePin(CTL_LORA_POWER_GPIO_Port, CTL_LORA_POWER_Pin, GPIO_PIN_RESET);
+
+  /*Configure GPIO pin Output Level */
+  HAL_GPIO_WritePin(GPIOB, PowerLED_Pin|LoraRest_Pin, GPIO_PIN_RESET);
+
+  /*Configure GPIO pins : SOS_KEY_Pin JUGE_PIN_Pin */
+  GPIO_InitStruct.Pin = SOS_KEY_Pin|JUGE_PIN_Pin;
+  GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING_FALLING;
+  GPIO_InitStruct.Pull = GPIO_PULLUP;
+  HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+  /*Configure GPIO pin : POWER_ON_Pin */
+  GPIO_InitStruct.Pin = POWER_ON_Pin;
+  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+  GPIO_InitStruct.Pull = GPIO_PULLUP;
+  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+  HAL_GPIO_Init(POWER_ON_GPIO_Port, &GPIO_InitStruct);
+
+  /*Configure GPIO pin : CTL_LORA_POWER_Pin */
+  GPIO_InitStruct.Pin = CTL_LORA_POWER_Pin;
+  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+  GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+  HAL_GPIO_Init(CTL_LORA_POWER_GPIO_Port, &GPIO_InitStruct);
+
+  /*Configure GPIO pins : PowerLED_Pin LoraRest_Pin */
+  GPIO_InitStruct.Pin = PowerLED_Pin|LoraRest_Pin;
+  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+  GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+  HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
+  /* EXTI interrupt init*/
+  HAL_NVIC_SetPriority(EXTI15_10_IRQn, 0, 0);
+  HAL_NVIC_EnableIRQ(EXTI15_10_IRQn);
+
+  /* USER CODE BEGIN MX_GPIO_Init_2 */
+
+  /* USER CODE END MX_GPIO_Init_2 */
 }
 }
 
 
 /* USER CODE BEGIN 4 */
 /* USER CODE BEGIN 4 */
@@ -735,29 +756,32 @@ static void MX_GPIO_Init(void) {
   * @param  htim : TIM handle
   * @param  htim : TIM handle
   * @retval None
   * @retval None
   */
   */
-void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) {
-    /* USER CODE BEGIN Callback 0 */
+void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
+{
+  /* USER CODE BEGIN Callback 0 */
 
 
-    /* USER CODE END Callback 0 */
-    if (htim->Instance == TIM3) {
-        HAL_IncTick();
-    }
-    /* USER CODE BEGIN Callback 1 */
+  /* USER CODE END Callback 0 */
+  if (htim->Instance == TIM3)
+  {
+    HAL_IncTick();
+  }
+  /* USER CODE BEGIN Callback 1 */
 
 
-    /* USER CODE END Callback 1 */
+  /* USER CODE END Callback 1 */
 }
 }
 
 
 /**
 /**
   * @brief  This function is executed in case of error occurrence.
   * @brief  This function is executed in case of error occurrence.
   * @retval None
   * @retval None
   */
   */
-void Error_Handler(void) {
-    /* USER CODE BEGIN Error_Handler_Debug */
+void Error_Handler(void)
+{
+  /* USER CODE BEGIN Error_Handler_Debug */
     /* User can add his own implementation to report the HAL error return state */
     /* User can add his own implementation to report the HAL error return state */
     __disable_irq();
     __disable_irq();
     while (1) {
     while (1) {
     }
     }
-    /* USER CODE END Error_Handler_Debug */
+  /* USER CODE END Error_Handler_Debug */
 }
 }
 #ifdef USE_FULL_ASSERT
 #ifdef USE_FULL_ASSERT
 /**
 /**

+ 0 - 1
Core/Src/stm32f1xx_it.c

@@ -259,7 +259,6 @@ void TIM3_IRQHandler(void)
 /**
 /**
   * @brief This function handles USART2 global interrupt.
   * @brief This function handles USART2 global interrupt.
   */
   */
-
 void USART2_IRQHandler(void)
 void USART2_IRQHandler(void)
 {
 {
   /* USER CODE BEGIN USART2_IRQn 0 */
   /* USER CODE BEGIN USART2_IRQn 0 */

+ 11 - 5
lora_bl.ioc

@@ -48,10 +48,11 @@ Mcu.Pin13=PA13
 Mcu.Pin14=PA14
 Mcu.Pin14=PA14
 Mcu.Pin15=PA15
 Mcu.Pin15=PA15
 Mcu.Pin16=PB3
 Mcu.Pin16=PB3
-Mcu.Pin17=VP_RTC_VS_RTC_Activate
-Mcu.Pin18=VP_RTC_VS_RTC_Calendar
-Mcu.Pin19=VP_SYS_VS_tim3
+Mcu.Pin17=PB7
+Mcu.Pin18=VP_RTC_VS_RTC_Activate
+Mcu.Pin19=VP_RTC_VS_RTC_Calendar
 Mcu.Pin2=PD0-OSC_IN
 Mcu.Pin2=PD0-OSC_IN
+Mcu.Pin20=VP_SYS_VS_tim3
 Mcu.Pin3=PD1-OSC_OUT
 Mcu.Pin3=PD1-OSC_OUT
 Mcu.Pin4=PA2
 Mcu.Pin4=PA2
 Mcu.Pin5=PA3
 Mcu.Pin5=PA3
@@ -59,7 +60,7 @@ Mcu.Pin6=PB10
 Mcu.Pin7=PB11
 Mcu.Pin7=PB11
 Mcu.Pin8=PB14
 Mcu.Pin8=PB14
 Mcu.Pin9=PB15
 Mcu.Pin9=PB15
-Mcu.PinsNb=20
+Mcu.PinsNb=21
 Mcu.ThirdPartyNb=0
 Mcu.ThirdPartyNb=0
 Mcu.UserConstants=
 Mcu.UserConstants=
 Mcu.UserName=STM32F103C8Tx
 Mcu.UserName=STM32F103C8Tx
@@ -129,6 +130,11 @@ PB3.GPIO_Label=PowerLED
 PB3.GPIO_PuPd=GPIO_PULLDOWN
 PB3.GPIO_PuPd=GPIO_PULLDOWN
 PB3.Locked=true
 PB3.Locked=true
 PB3.Signal=GPIO_Output
 PB3.Signal=GPIO_Output
+PB7.GPIOParameters=GPIO_PuPd,GPIO_Label
+PB7.GPIO_Label=LoraRest
+PB7.GPIO_PuPd=GPIO_PULLDOWN
+PB7.Locked=true
+PB7.Signal=GPIO_Output
 PC14-OSC32_IN.Mode=LSE-External-Oscillator
 PC14-OSC32_IN.Mode=LSE-External-Oscillator
 PC14-OSC32_IN.Signal=RCC_OSC32_IN
 PC14-OSC32_IN.Signal=RCC_OSC32_IN
 PC15-OSC32_OUT.Mode=LSE-External-Oscillator
 PC15-OSC32_OUT.Mode=LSE-External-Oscillator
@@ -169,7 +175,7 @@ ProjectManager.ToolChainLocation=
 ProjectManager.UAScriptAfterPath=
 ProjectManager.UAScriptAfterPath=
 ProjectManager.UAScriptBeforePath=
 ProjectManager.UAScriptBeforePath=
 ProjectManager.UnderRoot=false
 ProjectManager.UnderRoot=false
-ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_DMA_Init-DMA-false-HAL-true,4-MX_USART1_UART_Init-USART1-false-HAL-true,5-MX_USART2_UART_Init-USART2-false-HAL-true,6-MX_USART3_UART_Init-USART3-false-HAL-true,7-MX_TIM4_Init-TIM4-false-HAL-true,8-MX_RTC_Init-RTC-false-HAL-true
+ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_DMA_Init-DMA-false-HAL-true,4-MX_USART1_UART_Init-USART1-false-HAL-true,5-MX_USART2_UART_Init-USART2-false-HAL-true,6-MX_USART3_UART_Init-USART3-false-HAL-true,7-MX_RTC_Init-RTC-false-HAL-true
 RCC.ADCFreqValue=36000000
 RCC.ADCFreqValue=36000000
 RCC.AHBFreq_Value=72000000
 RCC.AHBFreq_Value=72000000
 RCC.APB1CLKDivider=RCC_HCLK_DIV2
 RCC.APB1CLKDivider=RCC_HCLK_DIV2