From d689e90917a610174f73938a460cb120cf5da9c9 Mon Sep 17 00:00:00 2001 From: jeromecoutant Date: Fri, 11 Dec 2020 16:56:20 +0100 Subject: [PATCH] STM32: RESET GPIO during init is configurable Default value is disabled --- targets/TARGET_STM/mbed_overrides.c | 4 ++++ targets/targets.json | 7 +++++++ 2 files changed, 11 insertions(+) diff --git a/targets/TARGET_STM/mbed_overrides.c b/targets/TARGET_STM/mbed_overrides.c index 22d50dd96b..7888ee3e38 100644 --- a/targets/TARGET_STM/mbed_overrides.c +++ b/targets/TARGET_STM/mbed_overrides.c @@ -94,6 +94,7 @@ MBED_WEAK void TargetBSP_Init(void) { /** Do nothing */ } +#if MBED_CONF_TARGET_GPIO_RESET_AT_INIT void GPIO_Full_Init(void) { GPIO_InitTypeDef GPIO_InitStruct; @@ -160,6 +161,7 @@ void GPIO_Full_Init(void) { __HAL_RCC_GPIOK_CLK_DISABLE(); #endif } +#endif // This function is called after RAM initialization and before main. void mbed_sdk_init() @@ -309,8 +311,10 @@ void mbed_sdk_init() #endif /* ! MBED_CONF_TARGET_LSE_AVAILABLE */ #endif /* DEVICE_RTC */ +#if MBED_CONF_TARGET_GPIO_RESET_AT_INIT /* Reset all GPIO */ GPIO_Full_Init(); +#endif /* BSP initialization hook (external RAM, etc) */ TargetBSP_Init(); diff --git a/targets/targets.json b/targets/targets.json index 6976193bbb..17aa530dce 100644 --- a/targets/targets.json +++ b/targets/targets.json @@ -1157,6 +1157,10 @@ "lpticker_lptim_clock": { "help": "Default value for LPTIM clock (lpticker_lptim == 1). Value is the dividing factor. Choose 1, 2 or 4", "value": 1 + }, + "gpio_reset_at_init": { + "help": "if value set, all GPIO are reset during init", + "value": false } }, "overrides": { @@ -3200,6 +3204,9 @@ "macro_name": "CLOCK_SOURCE" } }, + "overrides": { + "gpio_reset_at_init": true + }, "device_has_add": [ "ANALOGOUT", "SERIAL_ASYNCH",