Jelajahi Sumber

SOS触发中断成功

xuxinyi 2 bulan lalu
induk
melakukan
4460025895
5 mengubah file dengan 54 tambahan dan 16 penghapusan
  1. 3 0
      Core/Inc/main.h
  2. 1 0
      Core/Inc/stm32f1xx_it.h
  3. 13 4
      Core/Src/main.c
  4. 15 0
      Core/Src/stm32f1xx_it.c
  5. 22 12
      lora_bl.ioc

+ 3 - 0
Core/Inc/main.h

@@ -57,6 +57,9 @@ void Error_Handler(void);
 /* USER CODE END EFP */
 
 /* Private defines -----------------------------------------------------------*/
+#define SOS_KEY_Pin GPIO_PIN_14
+#define SOS_KEY_GPIO_Port GPIOB
+#define SOS_KEY_EXTI_IRQn EXTI15_10_IRQn
 #define JUGE_PIN_Pin GPIO_PIN_15
 #define JUGE_PIN_GPIO_Port GPIOB
 #define POWER_ON_Pin GPIO_PIN_8

+ 1 - 0
Core/Inc/stm32f1xx_it.h

@@ -61,6 +61,7 @@ void TIM3_IRQHandler(void);
 void TIM4_IRQHandler(void);
 void USART2_IRQHandler(void);
 void USART3_IRQHandler(void);
+void EXTI15_10_IRQHandler(void);
 void RTC_Alarm_IRQHandler(void);
 /* USER CODE BEGIN EFP */
 

+ 13 - 4
Core/Src/main.c

@@ -19,16 +19,15 @@
 /* Includes ------------------------------------------------------------------*/
 #include "main.h"
 
+//上船测试版本
+/* Private includes ----------------------------------------------------------*/
+/* USER CODE BEGIN Includes */
 #include <time.h>
 #include <stdlib.h>
 
 #include "string.h"
 #include "E52.h"
 #include "E104-BT5005A.h"
-//上船测试版本
-/* Private includes ----------------------------------------------------------*/
-/* USER CODE BEGIN Includes */
-
 /* USER CODE END Includes */
 
 /* Private typedef -----------------------------------------------------------*/
@@ -687,6 +686,12 @@ static void MX_GPIO_Init(void)
   /*Configure GPIO pin Output Level */
   HAL_GPIO_WritePin(CTL_LORA_POWER_GPIO_Port, CTL_LORA_POWER_Pin, GPIO_PIN_RESET);
 
+  /*Configure GPIO pin : SOS_KEY_Pin */
+  GPIO_InitStruct.Pin = SOS_KEY_Pin;
+  GPIO_InitStruct.Mode = GPIO_MODE_IT_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_INPUT;
@@ -707,6 +712,10 @@ static void MX_GPIO_Init(void)
   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
   HAL_GPIO_Init(CTL_LORA_POWER_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 */

+ 15 - 0
Core/Src/stm32f1xx_it.c

@@ -365,6 +365,21 @@ void USART3_IRQHandler(void)
   /* USER CODE END USART3_IRQn 1 */
 }
 
+/**
+  * @brief This function handles EXTI line[15:10] interrupts.
+  */
+void EXTI15_10_IRQHandler(void)
+{
+  /* USER CODE BEGIN EXTI15_10_IRQn 0 */
+
+  /* USER CODE END EXTI15_10_IRQn 0 */
+  HAL_GPIO_EXTI_IRQHandler(SOS_KEY_Pin);
+  printf("I AM SOS KEY\r\n");
+  /* USER CODE BEGIN EXTI15_10_IRQn 1 */
+
+  /* USER CODE END EXTI15_10_IRQn 1 */
+}
+
 /**
   * @brief This function handles RTC alarm interrupt through EXTI line 17.
   */

+ 22 - 12
lora_bl.ioc

@@ -42,24 +42,25 @@ Mcu.Name=STM32F103C(8-B)Tx
 Mcu.Package=LQFP48
 Mcu.Pin0=PC14-OSC32_IN
 Mcu.Pin1=PC15-OSC32_OUT
-Mcu.Pin10=PA9
-Mcu.Pin11=PA10
-Mcu.Pin12=PA13
-Mcu.Pin13=PA14
-Mcu.Pin14=PA15
-Mcu.Pin15=VP_RTC_VS_RTC_Activate
-Mcu.Pin16=VP_RTC_VS_RTC_Calendar
-Mcu.Pin17=VP_SYS_VS_tim3
-Mcu.Pin18=VP_TIM4_VS_ClockSourceINT
+Mcu.Pin10=PA8
+Mcu.Pin11=PA9
+Mcu.Pin12=PA10
+Mcu.Pin13=PA13
+Mcu.Pin14=PA14
+Mcu.Pin15=PA15
+Mcu.Pin16=VP_RTC_VS_RTC_Activate
+Mcu.Pin17=VP_RTC_VS_RTC_Calendar
+Mcu.Pin18=VP_SYS_VS_tim3
+Mcu.Pin19=VP_TIM4_VS_ClockSourceINT
 Mcu.Pin2=PD0-OSC_IN
 Mcu.Pin3=PD1-OSC_OUT
 Mcu.Pin4=PA2
 Mcu.Pin5=PA3
 Mcu.Pin6=PB10
 Mcu.Pin7=PB11
-Mcu.Pin8=PB15
-Mcu.Pin9=PA8
-Mcu.PinsNb=19
+Mcu.Pin8=PB14
+Mcu.Pin9=PB15
+Mcu.PinsNb=20
 Mcu.ThirdPartyNb=0
 Mcu.UserConstants=
 Mcu.UserName=STM32F103C8Tx
@@ -69,6 +70,7 @@ NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
 NVIC.DMA1_Channel3_IRQn=true\:0\:0\:false\:false\:true\:false\:true\:true
 NVIC.DMA1_Channel6_IRQn=true\:0\:0\:false\:false\:true\:false\:true\:true
 NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
+NVIC.EXTI15_10_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
 NVIC.ForceEnableDMAVector=true
 NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
 NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
@@ -112,6 +114,12 @@ PB10.Mode=Asynchronous
 PB10.Signal=USART3_TX
 PB11.Mode=Asynchronous
 PB11.Signal=USART3_RX
+PB14.GPIOParameters=GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultEXTI
+PB14.GPIO_Label=SOS_KEY
+PB14.GPIO_ModeDefaultEXTI=GPIO_MODE_IT_FALLING
+PB14.GPIO_PuPd=GPIO_PULLUP
+PB14.Locked=true
+PB14.Signal=GPXTI14
 PB15.GPIOParameters=GPIO_PuPd,GPIO_Label
 PB15.GPIO_Label=JUGE_PIN
 PB15.GPIO_PuPd=GPIO_NOPULL
@@ -181,6 +189,8 @@ RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK
 RCC.TimSysFreq_Value=72000000
 RCC.USBFreq_Value=72000000
 RCC.VCOOutput2Freq_Value=8000000
+SH.GPXTI14.0=GPIO_EXTI14
+SH.GPXTI14.ConfNb=1
 TIM4.AutoReloadPreload=TIM_AUTORELOAD_PRELOAD_ENABLE
 TIM4.IPParameters=AutoReloadPreload,Prescaler,Period
 TIM4.Period=4999