From 5bb48a45bab35ba46ef39b6abde5e626d0e4ef3a Mon Sep 17 00:00:00 2001 From: Andreas Berthoud Date: Mon, 16 Aug 2021 21:06:55 +0200 Subject: [PATCH] ble-dongle: Add reset buttong (not working) --- nucleo-wb55-dongle-ble/Core/Inc/main.h | 3 + .../Core/Inc/stm32wbxx_it.h | 1 + nucleo-wb55-dongle-ble/Core/Src/main.c | 10 ++ .../Core/Src/stm32wbxx_it.c | 15 ++ .../nucleo-wb55-dongle-ble.ioc | 164 ++++++++++-------- 5 files changed, 116 insertions(+), 77 deletions(-) diff --git a/nucleo-wb55-dongle-ble/Core/Inc/main.h b/nucleo-wb55-dongle-ble/Core/Inc/main.h index c4e9191..4e6d147 100644 --- a/nucleo-wb55-dongle-ble/Core/Inc/main.h +++ b/nucleo-wb55-dongle-ble/Core/Inc/main.h @@ -67,6 +67,9 @@ void Error_Handler(void); #define LED_GREEN_GPIO_Port GPIOB #define LED_RED_Pin GPIO_PIN_1 #define LED_RED_GPIO_Port GPIOB +#define PushButton_Pin GPIO_PIN_10 +#define PushButton_GPIO_Port GPIOA +#define PushButton_EXTI_IRQn EXTI15_10_IRQn /* USER CODE BEGIN Private defines */ /* USER CODE END Private defines */ diff --git a/nucleo-wb55-dongle-ble/Core/Inc/stm32wbxx_it.h b/nucleo-wb55-dongle-ble/Core/Inc/stm32wbxx_it.h index e06a700..c737586 100644 --- a/nucleo-wb55-dongle-ble/Core/Inc/stm32wbxx_it.h +++ b/nucleo-wb55-dongle-ble/Core/Inc/stm32wbxx_it.h @@ -57,6 +57,7 @@ void DebugMon_Handler(void); void PendSV_Handler(void); void SysTick_Handler(void); void USB_LP_IRQHandler(void); +void EXTI15_10_IRQHandler(void); void HSEM_IRQHandler(void); /* USER CODE BEGIN EFP */ diff --git a/nucleo-wb55-dongle-ble/Core/Src/main.c b/nucleo-wb55-dongle-ble/Core/Src/main.c index 0ff8440..1686b12 100644 --- a/nucleo-wb55-dongle-ble/Core/Src/main.c +++ b/nucleo-wb55-dongle-ble/Core/Src/main.c @@ -298,6 +298,16 @@ static void MX_GPIO_Init(void) GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); + /*Configure GPIO pin : PushButton_Pin */ + GPIO_InitStruct.Pin = PushButton_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(PushButton_GPIO_Port, &GPIO_InitStruct); + + /* EXTI interrupt init*/ + HAL_NVIC_SetPriority(EXTI15_10_IRQn, 0, 0); + HAL_NVIC_EnableIRQ(EXTI15_10_IRQn); + } /* USER CODE BEGIN 4 */ diff --git a/nucleo-wb55-dongle-ble/Core/Src/stm32wbxx_it.c b/nucleo-wb55-dongle-ble/Core/Src/stm32wbxx_it.c index a6eda6c..f51ea47 100644 --- a/nucleo-wb55-dongle-ble/Core/Src/stm32wbxx_it.c +++ b/nucleo-wb55-dongle-ble/Core/Src/stm32wbxx_it.c @@ -24,6 +24,7 @@ /* Private includes ----------------------------------------------------------*/ /* USER CODE BEGIN Includes */ #include "app_common.h" +#include "stm32wbxx_hal.h" /* USER CODE END Includes */ /* Private typedef -----------------------------------------------------------*/ @@ -214,6 +215,20 @@ void USB_LP_IRQHandler(void) /* USER CODE END USB_LP_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(GPIO_PIN_10); + /* USER CODE BEGIN EXTI15_10_IRQn 1 */ + HAL_NVIC_SystemReset(); + /* USER CODE END EXTI15_10_IRQn 1 */ +} + /** * @brief This function handles HSEM global interrupt. */ diff --git a/nucleo-wb55-dongle-ble/nucleo-wb55-dongle-ble.ioc b/nucleo-wb55-dongle-ble/nucleo-wb55-dongle-ble.ioc index 5935c39..c6c64f6 100644 --- a/nucleo-wb55-dongle-ble/nucleo-wb55-dongle-ble.ioc +++ b/nucleo-wb55-dongle-ble/nucleo-wb55-dongle-ble.ioc @@ -1,41 +1,22 @@ #MicroXplorer Configuration settings - do not modify -VP_RTC_VS_RTC_Activate.Signal=RTC_VS_RTC_Activate Mcu.Family=STM32WB ProjectManager.MainLocation=Core/Src -PCC.Ble.Mode=NOT_SELECTED -PC15-OSC32_OUT.Mode=LSE-External-Oscillator USB_DEVICE.CLASS_NAME_FS=CDC -RCC.PLLQoutputFreq_Value=64000000 RCC.USART1Freq_Value=32000000 -ProjectManager.ProjectFileName=nucleo-wb55-dongle-ble.ioc RCC.SAI1Freq_Value=48000000 RCC.CortexFreq_Value=32000000 ProjectManager.KeepUserCode=true Mcu.UserName=STM32WB55CGUx -VP_STM32_WPAN_VS_BLE_HOST.Mode=STM32_WPAN_Enabled -Mcu.PinsNb=17 RF1.Signal=RF_RF1 -STM32_WPAN.BLE_APPLICATION_TYPE=BLE_CLIENT_PROFILE -ProjectManager.NoMain=false -USB_DEVICE.VirtualModeFS=Cdc_FS RCC.RFWKPFreq_Value=32768 -RCC.HCLK3Freq_Value=32000000 RCC.PLLSAI1RoutputFreq_Value=48000000 ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false-HAL-true,2-SystemClock_Config-RCC-false-HAL-false,3-MX_USB_Device_Init-USB_DEVICE-false-HAL-false,4-MX_RF_Init-RF-false-HAL-true,5-MX_RTC_Init-RTC-false-HAL-true,6-APPE_Init-STM32_WPAN-false-HAL-false,0-MX_HSEM_Init-HSEM-false-HAL-true VP_RTC_VS_RTC_Activate.Mode=RTC_Enabled PA11.Mode=Device RCC.RTCFreq_Value=32768 -ProjectManager.DefaultFWLocation=true PB0.GPIO_Label=LED_GREEN -VP_HSEM_VS_HSEM.Signal=HSEM_VS_HSEM -ProjectManager.DeletePrevious=true -RCC.HCLK2Freq_Value=32000000 -PC14-OSC32_IN.Signal=RCC_OSC32_IN -boardIOC=true -USB_DEVICE.IPParameters=VirtualMode,VirtualModeFS,CLASS_NAME_FS PinOutPanel.RotationAngle=0 VP_SEQUENCER_VS_SEQUENCER.Signal=SEQUENCER_VS_SEQUENCER -RCC.FamilyName=M RCC.MCO1PinFreq_Value=32000000 RCC.SYSCLKSource=RCC_SYSCLKSOURCE_HSE ProjectManager.StackSize=0x4000 @@ -52,94 +33,140 @@ Mcu.IP1=NVIC PA12.Signal=USB_DP Mcu.UserConstants= RCC.VCOSAI1OutputFreq_Value=96000000 -ProjectManager.TargetToolchain=STM32CubeIDE Mcu.ThirdPartyNb=0 -STM32_WPAN.LOCAL_NAME_FORMATTED=,'M','o','n','s','u','n','1' RCC.HCLKFreq_Value=32000000 -VP_USB_DEVICE_VS_USB_DEVICE_CDC_FS.Mode=CDC_FS Mcu.IPNb=11 -RCC.HCLKRFFreq_Value=16000000 STM32_WPAN.LOCAL_NAME=Monsun1 ProjectManager.PreviousToolchain= RCC.APB2TimFreq_Value=32000000 PCC.Ble.PowerLevel=Min Mcu.Pin6=PB0 Mcu.Pin7=PB1 -ProjectManager.RegisterCallBack= -OSC_IN.Signal=RCC_OSC_IN -Mcu.Pin8=PA11 -RCC.USBFreq_Value=48000000 +Mcu.Pin8=PA10 OSC_OUT.Mode=HSE-External-Oscillator -Mcu.Pin9=PA12 -PC15-OSC32_OUT.Signal=RCC_OSC32_OUT +Mcu.Pin9=PA11 OSC_OUT.Signal=RCC_OSC_OUT RCC.AHBFreq_Value=32000000 -RCC.PLLSAI1PoutputFreq_Value=48000000 Mcu.Pin0=PC14-OSC32_IN -PB1.Locked=true Mcu.Pin1=PC15-OSC32_OUT +GPIO.groupedBy=Group By Peripherals Mcu.Pin2=PA4 Mcu.Pin3=RF1 Mcu.Pin4=OSC_OUT +NVIC.EXTI15_10_IRQn=true\:0\:0\:false\:false\:true\:true\:true Mcu.Pin5=OSC_IN ProjectManager.ProjectBuild=false RCC.HSE_VALUE=32000000 NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false RCC.FCLK2Freq_Value=32000000 NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false -board=P-NUCLEO-WB55-USBDongle PA4.Locked=true -VP_SEQUENCER_VS_SEQUENCER.Mode=SEQUENCER_Enabled Mcu.IP10=USB_DEVICE -RCC.Cortex2Freq_Value=4000000 RCC.Cortex2_Div=SYSTICK_CLKSOURCE_HCLK_DIV8 -RCC.VCOOutputFreq_Value=128000000 -NVIC.SysTick_IRQn=true\:0\:0\:false\:false\:true\:false\:true RCC.RTCClockSelection=RCC_RTCCLKSOURCE_LSE -ProjectManager.LastFirmware=true -RCC.SMPS1Freq_Value=16000000 +NVIC.SysTick_IRQn=true\:0\:0\:false\:false\:true\:false\:true ProjectManager.FirmwarePackage=STM32Cube FW_WB V1.11.1 MxDb.Version=DB.6.0.21 PB0.GPIOParameters=GPIO_Label -RCC.APB2Freq_Value=32000000 ProjectManager.BackupPrevious=false -MxCube.Version=6.2.1 PC14-OSC32_IN.Mode=LSE-External-Oscillator RCC.VCOInputFreq_Value=4000000 +PB1.GPIO_Label=LED_RED +File.Version=6 +PA10.GPIO_Label=PushButton +RCC.PLLRCLKFreq_Value=64000000 +NVIC.PendSV_IRQn=true\:0\:0\:false\:false\:true\:false\:false +ProjectManager.HalAssertFull=false +PB0.Locked=true +ProjectManager.ProjectName=nucleo-wb55-dongle-ble +RCC.APB3Freq_Value=16000000 +NVIC.HSEM_IRQn=true\:0\:0\:false\:false\:true\:false\:true +Mcu.Package=UFQFPN48 +PB1.Signal=GPIO_Output +PA10.GPIO_ModeDefaultEXTI=GPIO_MODE_IT_FALLING +ProjectManager.ToolChainLocation= +RCC.LSI_VALUE=32000 +VP_SYS_VS_Systick.Signal=SYS_VS_Systick +RCC.LSCOPinFreq_Value=32000 +PA10.Signal=GPXTI10 +VP_USB_DEVICE_VS_USB_DEVICE_CDC_FS.Signal=USB_DEVICE_VS_USB_DEVICE_CDC_FS +NVIC.USB_LP_IRQn=true\:0\:0\:false\:false\:true\:false\:true +VP_STM32_WPAN_VS_BLE_HOST.Signal=STM32_WPAN_VS_BLE_HOST +VP_TINY_LPM_VS_TINY_LPM.Mode=TINY_LPM_Enabled +VP_HSEM_VS_HSEM.Mode=HSEM_Activate +RCC.PLLPoutputFreq_Value=64000000 +RCC.APB1TimFreq_Value=32000000 +NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false +RCC.LPUART1Freq_Value=32000000 +RCC.CK48CLockSelection=RCC_USBCLKSOURCE_HSI48 +RCC.SMPSDivider=1 +PA4.GPIO_Label=LED_BLUE +ProjectManager.CustomerFirmwarePackage= +RCC.HSI48_VALUE=48000000 +RCC.PLLSAI1N=24 +VP_RTC_VS_RTC_Activate.Signal=RTC_VS_RTC_Activate +SH.GPXTI10.0=GPIO_EXTI10 +PCC.Ble.Mode=NOT_SELECTED +PC15-OSC32_OUT.Mode=LSE-External-Oscillator +RCC.PLLQoutputFreq_Value=64000000 +ProjectManager.ProjectFileName=nucleo-wb55-dongle-ble.ioc +VP_STM32_WPAN_VS_BLE_HOST.Mode=STM32_WPAN_Enabled +Mcu.PinsNb=18 +STM32_WPAN.BLE_APPLICATION_TYPE=BLE_CLIENT_PROFILE +ProjectManager.NoMain=false +USB_DEVICE.VirtualModeFS=Cdc_FS +RCC.HCLK3Freq_Value=32000000 +ProjectManager.DefaultFWLocation=true +VP_HSEM_VS_HSEM.Signal=HSEM_VS_HSEM +ProjectManager.DeletePrevious=true +RCC.HCLK2Freq_Value=32000000 +PC14-OSC32_IN.Signal=RCC_OSC32_IN +boardIOC=true +USB_DEVICE.IPParameters=VirtualMode,VirtualModeFS,CLASS_NAME_FS +RCC.FamilyName=M +ProjectManager.TargetToolchain=STM32CubeIDE +STM32_WPAN.LOCAL_NAME_FORMATTED=,'M','o','n','s','u','n','1' +RCC.HCLKRFFreq_Value=16000000 +VP_USB_DEVICE_VS_USB_DEVICE_CDC_FS.Mode=CDC_FS +ProjectManager.RegisterCallBack= +OSC_IN.Signal=RCC_OSC_IN +RCC.USBFreq_Value=48000000 +PC15-OSC32_OUT.Signal=RCC_OSC32_OUT +RCC.PLLSAI1PoutputFreq_Value=48000000 +PB1.Locked=true +board=P-NUCLEO-WB55-USBDongle +VP_SEQUENCER_VS_SEQUENCER.Mode=SEQUENCER_Enabled +RCC.Cortex2Freq_Value=4000000 +RCC.VCOOutputFreq_Value=128000000 +ProjectManager.LastFirmware=true +RCC.SMPS1Freq_Value=16000000 +RCC.APB2Freq_Value=32000000 +MxCube.Version=6.2.1 PCC.Ble.DataLength=6 RCC.I2C1Freq_Value=32000000 RCC.LCDFreq_Value=32768 RCC.RNGFreq_Value=32000 -PB1.GPIO_Label=LED_RED RCC.PLLSAI1QoutputFreq_Value=48000000 RCC.ADCFreq_Value=48000000 -File.Version=6 +PA10.GPIOParameters=GPIO_Label,GPIO_ModeDefaultEXTI VP_SYS_VS_Systick.Mode=SysTick NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false\:false -RCC.PLLRCLKFreq_Value=64000000 PA4.GPIOParameters=GPIO_Label -NVIC.PendSV_IRQn=true\:0\:0\:false\:false\:true\:false\:false ProjectManager.FreePins=false RCC.IPParameters=ADCFreq_Value,AHBFreq_Value,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,APB3Freq_Value,CK48CLockSelection,Cortex2Freq_Value,Cortex2_Div,CortexFreq_Value,FCLK2Freq_Value,FCLKCortexFreq_Value,FamilyName,HCLK2Freq_Value,HCLK3Freq_Value,HCLKFreq_Value,HCLKRFFreq_Value,HSE_VALUE,HSI48_VALUE,HSI_VALUE,I2C1Freq_Value,I2C3Freq_Value,LCDFreq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPUART1Freq_Value,LSCOPinFreq_Value,LSI_VALUE,MCO1PinFreq_Value,PLLN,PLLPoutputFreq_Value,PLLQoutputFreq_Value,PLLRCLKFreq_Value,PLLSAI1N,PLLSAI1PoutputFreq_Value,PLLSAI1QoutputFreq_Value,PLLSAI1RoutputFreq_Value,PWRFreq_Value,RFWKPClockSelection,RFWKPFreq_Value,RNGFreq_Value,RTCClockSelection,RTCFreq_Value,SAI1Freq_Value,SMPS1Freq_Value,SMPSDivider,SYSCLKFreq_VALUE,SYSCLKSource,USART1Freq_Value,USBFreq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOSAI1OutputFreq_Value ProjectManager.AskForMigrate=true Mcu.Name=STM32WB55CGUx RCC.LPTIM2Freq_Value=32000000 -ProjectManager.HalAssertFull=false -PB0.Locked=true -ProjectManager.ProjectName=nucleo-wb55-dongle-ble ProjectManager.UnderRoot=true Mcu.IP8=TINY_LPM -RCC.APB3Freq_Value=16000000 Mcu.IP9=USB Mcu.IP6=STM32_WPAN Mcu.IP7=SYS ProjectManager.CoupleFile=false PA4.Signal=GPIO_Output RCC.SYSCLKFreq_VALUE=32000000 -NVIC.HSEM_IRQn=true\:0\:0\:false\:false\:true\:false\:true -Mcu.Package=UFQFPN48 -PB1.Signal=GPIO_Output PA12.Mode=Device +PA10.Locked=true PCC.Ble.ConnectionInterval=1000.0 NVIC.ForceEnableDMAVector=true KeepUserPlacement=false @@ -148,46 +175,29 @@ NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false STM32_WPAN.IPParameters=BLE_APPLICATION_TYPE,LOCAL_NAME,LOCAL_NAME_FORMATTED ProjectManager.CompilerOptimize=6 RF1.Mode=RF1_Activate -ProjectManager.ToolChainLocation= -RCC.LSI_VALUE=32000 -VP_SYS_VS_Systick.Signal=SYS_VS_Systick PA11.Signal=USB_DM -RCC.LSCOPinFreq_Value=32000 ProjectManager.HeapSize=0x2000 -Mcu.Pin15=VP_TINY_LPM_VS_TINY_LPM +Mcu.Pin15=VP_SYS_VS_Systick NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false -Mcu.Pin16=VP_USB_DEVICE_VS_USB_DEVICE_CDC_FS -VP_USB_DEVICE_VS_USB_DEVICE_CDC_FS.Signal=USB_DEVICE_VS_USB_DEVICE_CDC_FS -Mcu.Pin13=VP_STM32_WPAN_VS_BLE_HOST -Mcu.Pin14=VP_SYS_VS_Systick -NVIC.USB_LP_IRQn=true\:0\:0\:false\:false\:true\:false\:true +Mcu.Pin16=VP_TINY_LPM_VS_TINY_LPM +Mcu.Pin13=VP_SEQUENCER_VS_SEQUENCER +Mcu.Pin14=VP_STM32_WPAN_VS_BLE_HOST ProjectManager.ComputerToolchain=false +Mcu.Pin17=VP_USB_DEVICE_VS_USB_DEVICE_CDC_FS RCC.HSI_VALUE=16000000 -VP_STM32_WPAN_VS_BLE_HOST.Signal=STM32_WPAN_VS_BLE_HOST -VP_TINY_LPM_VS_TINY_LPM.Mode=TINY_LPM_Enabled NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4 -Mcu.Pin11=VP_RTC_VS_RTC_Activate -VP_HSEM_VS_HSEM.Mode=HSEM_Activate -Mcu.Pin12=VP_SEQUENCER_VS_SEQUENCER +Mcu.Pin11=VP_HSEM_VS_HSEM +Mcu.Pin12=VP_RTC_VS_RTC_Activate RCC.PLLN=32 -RCC.PLLPoutputFreq_Value=64000000 -Mcu.Pin10=VP_HSEM_VS_HSEM -RCC.APB1TimFreq_Value=32000000 -NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false +Mcu.Pin10=PA12 +SH.GPXTI10.ConfNb=1 RCC.PWRFreq_Value=32000000 -RCC.LPUART1Freq_Value=32000000 VP_TINY_LPM_VS_TINY_LPM.Signal=TINY_LPM_VS_TINY_LPM -RCC.CK48CLockSelection=RCC_USBCLKSOURCE_HSI48 RCC.APB1Freq_Value=32000000 RCC.RFWKPClockSelection=RCC_RFWKPCLKSOURCE_LSE -RCC.SMPSDivider=1 PB0.Signal=GPIO_Output USB_DEVICE.VirtualMode=Cdc -PA4.GPIO_Label=LED_BLUE -ProjectManager.CustomerFirmwarePackage= ProjectManager.DeviceId=STM32WB55CGUx ProjectManager.LibraryCopy=1 -RCC.HSI48_VALUE=48000000 -RCC.PLLSAI1N=24 PB1.GPIOParameters=GPIO_Label isbadioc=false