Explorar o código

实现关机键定时关机。不过RTC计时有点不准

xuxinyi hai 2 meses
pai
achega
499d53cc47
Modificáronse 3 ficheiros con 22 adicións e 11 borrados
  1. 3 9
      Core/Src/main.c
  2. 18 1
      Core/Src/stm32f1xx_it.c
  3. 1 1
      lora_bl.ioc

+ 3 - 9
Core/Src/main.c

@@ -835,17 +835,11 @@ static void MX_GPIO_Init(void)
   /*Configure GPIO pin Output Level */
   HAL_GPIO_WritePin(PowerLED_GPIO_Port, PowerLED_Pin, GPIO_PIN_RESET);
 
-  /*Configure GPIO pin : SOS_KEY_Pin */
-  GPIO_InitStruct.Pin = SOS_KEY_Pin;
+  /*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(SOS_KEY_GPIO_Port, &GPIO_InitStruct);
-
-  /*Configure GPIO pin : JUGE_PIN_Pin */
-  GPIO_InitStruct.Pin = JUGE_PIN_Pin;
-  GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;
-  GPIO_InitStruct.Pull = GPIO_PULLUP;
-  HAL_GPIO_Init(JUGE_PIN_GPIO_Port, &GPIO_InitStruct);
+  HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
 
   /*Configure GPIO pin : POWER_ON_Pin */
   GPIO_InitStruct.Pin = POWER_ON_Pin;

+ 18 - 1
Core/Src/stm32f1xx_it.c

@@ -434,6 +434,9 @@ void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
       }
 
       printf("SOS_KEY 按压了:%d 秒\r\n", key_Duration);
+      SOS_key_struct.key_Duration = 0;
+      SOS_key_struct.key_CheckActive = 0;
+      SOS_key_struct.key_Count = 0;
     }
     else
     {
@@ -449,12 +452,26 @@ void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
     {
       // 松开(上升沿)
       printf("JUGE_KEY 松开\r\n");
+      // HAL_GPIO_WritePin(POWER_ON_GPIO_Port, POWER_ON_Pin, GPIO_PIN_RESET);
+
+      uint16_t key_Duration = 0;
+      if(JUGE_key_struct.key_Duration > now.seconds) {
+        key_Duration = now.seconds + 60 - JUGE_key_struct.key_Duration;
+      } else {
+        key_Duration = now.seconds - JUGE_key_struct.key_Duration;
+      }
+
+      printf("SOS_KEY 按压了:%d 秒\r\n", key_Duration);
+      JUGE_key_struct.key_Duration = 0;
+      JUGE_key_struct.key_CheckActive = 0;
+      JUGE_key_struct.key_Count = 0;
+
     }
     else
     {
       // 按下(下降沿)
       printf("JUGE_KEY 按下\r\n");
-      HAL_GPIO_WritePin(POWER_ON_GPIO_Port, POWER_ON_Pin, GPIO_PIN_RESET);
+      JUGE_key_struct.key_Duration = now.seconds;
     }
   }
 

+ 1 - 1
lora_bl.ioc

@@ -123,7 +123,7 @@ PB14.Locked=true
 PB14.Signal=GPXTI14
 PB15.GPIOParameters=GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultEXTI
 PB15.GPIO_Label=JUGE_PIN
-PB15.GPIO_ModeDefaultEXTI=GPIO_MODE_IT_FALLING
+PB15.GPIO_ModeDefaultEXTI=GPIO_MODE_IT_RISING_FALLING
 PB15.GPIO_PuPd=GPIO_PULLUP
 PB15.Locked=true
 PB15.Signal=GPXTI15