From 7c1f290d2434e3258e0b0c36400e99a6b611bf66 Mon Sep 17 00:00:00 2001 From: Andreas Berthoud Date: Sat, 3 Jul 2021 14:29:54 +0200 Subject: [PATCH] ble: Enable SW1 interrupt --- nucleo-wb55-ble/Core/Inc/main.h | 1 + nucleo-wb55-ble/Core/Inc/stm32wbxx_it.h | 1 + nucleo-wb55-ble/Core/Src/main.c | 6 +++++- nucleo-wb55-ble/Core/Src/stm32wbxx_it.c | 14 ++++++++++++++ nucleo-wb55-ble/nucleo-wb55-ble.ioc | 9 ++++++--- 5 files changed, 27 insertions(+), 4 deletions(-) diff --git a/nucleo-wb55-ble/Core/Inc/main.h b/nucleo-wb55-ble/Core/Inc/main.h index ffcbae2..dd6973c 100644 --- a/nucleo-wb55-ble/Core/Inc/main.h +++ b/nucleo-wb55-ble/Core/Inc/main.h @@ -63,6 +63,7 @@ void Error_Handler(void); /* Private defines -----------------------------------------------------------*/ #define SW1_Pin GPIO_PIN_4 #define SW1_GPIO_Port GPIOC +#define SW1_EXTI_IRQn EXTI4_IRQn #define LED_GREEN_Pin GPIO_PIN_0 #define LED_GREEN_GPIO_Port GPIOB #define LED_RED_Pin GPIO_PIN_1 diff --git a/nucleo-wb55-ble/Core/Inc/stm32wbxx_it.h b/nucleo-wb55-ble/Core/Inc/stm32wbxx_it.h index e8219e5..22eeaa8 100644 --- a/nucleo-wb55-ble/Core/Inc/stm32wbxx_it.h +++ b/nucleo-wb55-ble/Core/Inc/stm32wbxx_it.h @@ -56,6 +56,7 @@ void SVC_Handler(void); void DebugMon_Handler(void); void PendSV_Handler(void); void SysTick_Handler(void); +void EXTI4_IRQHandler(void); void HSEM_IRQHandler(void); /* USER CODE BEGIN EFP */ diff --git a/nucleo-wb55-ble/Core/Src/main.c b/nucleo-wb55-ble/Core/Src/main.c index 31895af..479c9a6 100644 --- a/nucleo-wb55-ble/Core/Src/main.c +++ b/nucleo-wb55-ble/Core/Src/main.c @@ -250,7 +250,7 @@ static void MX_GPIO_Init(void) /*Configure GPIO pin : SW1_Pin */ GPIO_InitStruct.Pin = SW1_Pin; - GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(SW1_GPIO_Port, &GPIO_InitStruct); @@ -267,6 +267,10 @@ static void MX_GPIO_Init(void) GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); + /* EXTI interrupt init*/ + HAL_NVIC_SetPriority(EXTI4_IRQn, 0, 0); + HAL_NVIC_EnableIRQ(EXTI4_IRQn); + } /* USER CODE BEGIN 4 */ diff --git a/nucleo-wb55-ble/Core/Src/stm32wbxx_it.c b/nucleo-wb55-ble/Core/Src/stm32wbxx_it.c index 872eae1..ba492c0 100644 --- a/nucleo-wb55-ble/Core/Src/stm32wbxx_it.c +++ b/nucleo-wb55-ble/Core/Src/stm32wbxx_it.c @@ -200,6 +200,20 @@ void SysTick_Handler(void) /* please refer to the startup file (startup_stm32wbxx.s). */ /******************************************************************************/ +/** + * @brief This function handles EXTI line4 interrupt. + */ +void EXTI4_IRQHandler(void) +{ + /* USER CODE BEGIN EXTI4_IRQn 0 */ + + /* USER CODE END EXTI4_IRQn 0 */ + HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_4); + /* USER CODE BEGIN EXTI4_IRQn 1 */ + + /* USER CODE END EXTI4_IRQn 1 */ +} + /** * @brief This function handles HSEM global interrupt. */ diff --git a/nucleo-wb55-ble/nucleo-wb55-ble.ioc b/nucleo-wb55-ble/nucleo-wb55-ble.ioc index 9069718..a0af78e 100644 --- a/nucleo-wb55-ble/nucleo-wb55-ble.ioc +++ b/nucleo-wb55-ble/nucleo-wb55-ble.ioc @@ -7,8 +7,8 @@ RCC.CortexFreq_Value=32000000 ProjectManager.KeepUserCode=true Mcu.UserName=STM32WB55RGVx RF1.Signal=RF_RF1 -RCC.SMPSCLockSelectionVirtualVirtual=RCC_SMPSCLKSOURCE_HSI RCC.RFWKPFreq_Value=32768 +RCC.SMPSCLockSelectionVirtualVirtual=RCC_SMPSCLKSOURCE_HSI RCC.PLLSAI1RoutputFreq_Value=128000000 PA14.GPIO_Label=JTCK ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false-HAL-true,2-SystemClock_Config-RCC-false-HAL-false,3-MX_RF_Init-RF-false-HAL-true,4-MX_RTC_Init-RTC-false-HAL-true,5-APPE_Init-STM32_WPAN-false-HAL-false,0-MX_HSEM_Init-HSEM-false-HAL-true @@ -111,13 +111,14 @@ PB3.GPIO_Label=JTDO VP_RTC_VS_RTC_Activate.Signal=RTC_VS_RTC_Activate PCC.Ble.Mode=NOT_SELECTED PC15-OSC32_OUT.Mode=LSE-External-Oscillator +NVIC.EXTI4_IRQn=true\:0\:0\:false\:false\:true\:true\:true RCC.PLLQoutputFreq_Value=128000000 ProjectManager.ProjectFileName=nucleo-wb55-ble.ioc VP_STM32_WPAN_VS_BLE_HOST.Mode=STM32_WPAN_Enabled Mcu.PinsNb=20 ProjectManager.NoMain=false RCC.HCLK3Freq_Value=32000000 -PC4.Signal=GPIO_Input +PC4.Signal=GPXTI4 PD1.Signal=GPIO_Input ProjectManager.DefaultFWLocation=true VP_HSEM_VS_HSEM.Signal=HSEM_VS_HSEM @@ -148,8 +149,8 @@ RCC.APB2Freq_Value=32000000 MxCube.Version=6.2.1 PCC.Ble.DataLength=6 RCC.I2C1Freq_Value=32000000 -RCC.RNGFreq_Value=32000 RCC.LCDFreq_Value=32768 +RCC.RNGFreq_Value=32000 RCC.PLLSAI1QoutputFreq_Value=128000000 RCC.ADCFreq_Value=128000000 VP_SYS_VS_Systick.Mode=SysTick @@ -169,6 +170,7 @@ ProjectManager.CoupleFile=false PB3.Signal=SYS_JTDO-SWO RCC.SYSCLKFreq_VALUE=32000000 PB5.Signal=GPIO_Output +SH.GPXTI4.0=GPIO_EXTI4 PCC.Ble.ConnectionInterval=1000.0 NVIC.ForceEnableDMAVector=true KeepUserPlacement=false @@ -184,6 +186,7 @@ ProjectManager.HeapSize=0x200 Mcu.Pin15=VP_RTC_VS_RTC_Activate NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false Mcu.Pin16=VP_SEQUENCER_VS_SEQUENCER +SH.GPXTI4.ConfNb=1 Mcu.Pin13=PB5 Mcu.Pin14=VP_HSEM_VS_HSEM Mcu.Pin19=VP_TINY_LPM_VS_TINY_LPM