From 10e0759372f1e04c8fcd182c382d31d7ca8534d4 Mon Sep 17 00:00:00 2001 From: jeromecoutant Date: Wed, 17 Mar 2021 08:35:04 +0100 Subject: [PATCH 1/5] STM32 PWM : correct GPIO free --- targets/TARGET_STM/pwmout_api.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/targets/TARGET_STM/pwmout_api.c b/targets/TARGET_STM/pwmout_api.c index 27f140a530..38120f2772 100644 --- a/targets/TARGET_STM/pwmout_api.c +++ b/targets/TARGET_STM/pwmout_api.c @@ -219,8 +219,8 @@ void pwmout_init(pwmout_t *obj, PinName pin) void pwmout_free(pwmout_t *obj) { - // Configure GPIO - pin_function(obj->pin, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0)); + // Configure GPIO back to reset value + pin_function(obj->pin, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)); } void pwmout_write(pwmout_t *obj, float value) From 20e9235a2687053814c5a9b43b60c8229f16ba94 Mon Sep 17 00:00:00 2001 From: jeromecoutant Date: Wed, 17 Mar 2021 08:35:21 +0100 Subject: [PATCH 2/5] STM32 SERIAL : correct GPIO free --- targets/TARGET_STM/serial_api.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/targets/TARGET_STM/serial_api.c b/targets/TARGET_STM/serial_api.c index 0ca4489e86..a58ed74fdc 100644 --- a/targets/TARGET_STM/serial_api.c +++ b/targets/TARGET_STM/serial_api.c @@ -350,17 +350,15 @@ void serial_free(serial_t *obj) LL_HSEM_ReleaseLock(HSEM, CFG_HW_RCC_SEMID, HSEM_CR_COREID_CURRENT); #endif /* DUAL_CORE */ - // Configure GPIOs - pin_function(obj_s->pin_tx, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0)); - - pin_function(obj_s->pin_rx, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0)); - + // Configure GPIOs back to reset value + pin_function(obj_s->pin_tx, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)); + pin_function(obj_s->pin_rx, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)); #if DEVICE_SERIAL_FC if ( (obj_s->hw_flow_ctl == UART_HWCONTROL_RTS) || (obj_s->hw_flow_ctl == UART_HWCONTROL_RTS_CTS) ) { - pin_function(obj_s->pin_rts, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0)); + pin_function(obj_s->pin_rts, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)); } if ( (obj_s->hw_flow_ctl == UART_HWCONTROL_CTS) || (obj_s->hw_flow_ctl == UART_HWCONTROL_RTS_CTS) ) { - pin_function(obj_s->pin_cts, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0)); + pin_function(obj_s->pin_cts, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)); } #endif From 73239b6a996d4816a1b09c57b0668c9d25899f97 Mon Sep 17 00:00:00 2001 From: jeromecoutant Date: Wed, 17 Mar 2021 08:35:44 +0100 Subject: [PATCH 3/5] STM32 SPI : correct GPIO free --- targets/TARGET_STM/stm_spi_api.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/targets/TARGET_STM/stm_spi_api.c b/targets/TARGET_STM/stm_spi_api.c index 7d1986655d..2c891635e4 100644 --- a/targets/TARGET_STM/stm_spi_api.c +++ b/targets/TARGET_STM/stm_spi_api.c @@ -374,12 +374,13 @@ void spi_free(spi_t *obj) #if defined(DUAL_CORE) && (TARGET_STM32H7) LL_HSEM_ReleaseLock(HSEM, CFG_HW_RCC_SEMID, HSEM_CR_COREID_CURRENT); #endif /* DUAL_CORE */ - // Configure GPIOs - pin_function(spiobj->pin_miso, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0)); - pin_function(spiobj->pin_mosi, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0)); - pin_function(spiobj->pin_sclk, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0)); + + // Configure GPIOs back to reset value + pin_function(spiobj->pin_miso, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)); + pin_function(spiobj->pin_mosi, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)); + pin_function(spiobj->pin_sclk, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)); if (handle->Init.NSS != SPI_NSS_SOFT) { - pin_function(spiobj->pin_ssel, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0)); + pin_function(spiobj->pin_ssel, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)); } } From 72031258279144ba0133d6390503dc692b122d88 Mon Sep 17 00:00:00 2001 From: jeromecoutant Date: Wed, 17 Mar 2021 15:37:09 +0100 Subject: [PATCH 4/5] STM32 ANALOGOUT : correct GPIO free --- targets/TARGET_STM/TARGET_STM32F0/analogout_device.c | 4 ++-- targets/TARGET_STM/TARGET_STM32F1/analogout_device.c | 4 ++-- targets/TARGET_STM/TARGET_STM32F2/analogout_device.c | 4 ++-- targets/TARGET_STM/TARGET_STM32F3/analogout_device.c | 4 ++-- targets/TARGET_STM/TARGET_STM32G0/analogout_device.c | 4 ++-- targets/TARGET_STM/TARGET_STM32G4/analogout_device.c | 4 ++-- targets/TARGET_STM/TARGET_STM32L0/analogout_device.c | 4 ++-- targets/TARGET_STM/TARGET_STM32L1/analogout_device.c | 4 ++-- targets/TARGET_STM/TARGET_STM32L4/analogout_device.c | 4 ++-- targets/TARGET_STM/TARGET_STM32L5/analogout_device.c | 4 ++-- targets/TARGET_STM/TARGET_STM32WL/analogout_device.c | 4 ++-- 11 files changed, 22 insertions(+), 22 deletions(-) diff --git a/targets/TARGET_STM/TARGET_STM32F0/analogout_device.c b/targets/TARGET_STM/TARGET_STM32F0/analogout_device.c index 8fb284f965..db8cb48d18 100644 --- a/targets/TARGET_STM/TARGET_STM32F0/analogout_device.c +++ b/targets/TARGET_STM/TARGET_STM32F0/analogout_device.c @@ -84,8 +84,8 @@ void analogout_free(dac_t *obj) __HAL_RCC_DAC1_RELEASE_RESET(); __HAL_RCC_DAC1_CLK_DISABLE(); - // Configure GPIO - pin_function(obj->pin, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0)); + // Configure GPIO back to reset value + pin_function(obj->pin, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)); } const PinMap *analogout_pinmap() diff --git a/targets/TARGET_STM/TARGET_STM32F1/analogout_device.c b/targets/TARGET_STM/TARGET_STM32F1/analogout_device.c index d58f2e422d..d50e8e464c 100644 --- a/targets/TARGET_STM/TARGET_STM32F1/analogout_device.c +++ b/targets/TARGET_STM/TARGET_STM32F1/analogout_device.c @@ -96,8 +96,8 @@ void analogout_free(dac_t *obj) __HAL_RCC_DAC_RELEASE_RESET(); __HAL_RCC_DAC_CLK_DISABLE(); - // Configure GPIO - pin_function(obj->pin, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0)); + // Configure GPIO back to reset value + pin_function(obj->pin, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)); } const PinMap *analogout_pinmap() diff --git a/targets/TARGET_STM/TARGET_STM32F2/analogout_device.c b/targets/TARGET_STM/TARGET_STM32F2/analogout_device.c index d58f2e422d..d50e8e464c 100644 --- a/targets/TARGET_STM/TARGET_STM32F2/analogout_device.c +++ b/targets/TARGET_STM/TARGET_STM32F2/analogout_device.c @@ -96,8 +96,8 @@ void analogout_free(dac_t *obj) __HAL_RCC_DAC_RELEASE_RESET(); __HAL_RCC_DAC_CLK_DISABLE(); - // Configure GPIO - pin_function(obj->pin, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0)); + // Configure GPIO back to reset value + pin_function(obj->pin, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)); } const PinMap *analogout_pinmap() diff --git a/targets/TARGET_STM/TARGET_STM32F3/analogout_device.c b/targets/TARGET_STM/TARGET_STM32F3/analogout_device.c index 67c2b94188..2e13095567 100644 --- a/targets/TARGET_STM/TARGET_STM32F3/analogout_device.c +++ b/targets/TARGET_STM/TARGET_STM32F3/analogout_device.c @@ -158,8 +158,8 @@ void analogout_free(dac_t *obj) } #endif - // Configure GPIO - pin_function(obj->pin, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0)); + // Configure GPIO back to reset value + pin_function(obj->pin, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)); } const PinMap *analogout_pinmap() diff --git a/targets/TARGET_STM/TARGET_STM32G0/analogout_device.c b/targets/TARGET_STM/TARGET_STM32G0/analogout_device.c index bb71818cb2..1925e107b5 100644 --- a/targets/TARGET_STM/TARGET_STM32G0/analogout_device.c +++ b/targets/TARGET_STM/TARGET_STM32G0/analogout_device.c @@ -118,8 +118,8 @@ void analogout_free(dac_t *obj) __HAL_RCC_DAC1_CLK_DISABLE(); } - // Configure GPIO - pin_function(obj->pin, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0)); + // Configure GPIO back to reset value + pin_function(obj->pin, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)); } const PinMap *analogout_pinmap() diff --git a/targets/TARGET_STM/TARGET_STM32G4/analogout_device.c b/targets/TARGET_STM/TARGET_STM32G4/analogout_device.c index f560829022..6e260940ea 100644 --- a/targets/TARGET_STM/TARGET_STM32G4/analogout_device.c +++ b/targets/TARGET_STM/TARGET_STM32G4/analogout_device.c @@ -146,8 +146,8 @@ void analogout_free(dac_t *obj) } #endif - // Configure GPIO - pin_function(obj->pin, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0)); + // Configure GPIO back to reset value + pin_function(obj->pin, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)); } const PinMap *analogout_pinmap() diff --git a/targets/TARGET_STM/TARGET_STM32L0/analogout_device.c b/targets/TARGET_STM/TARGET_STM32L0/analogout_device.c index a31b2b11ad..ef63640406 100644 --- a/targets/TARGET_STM/TARGET_STM32L0/analogout_device.c +++ b/targets/TARGET_STM/TARGET_STM32L0/analogout_device.c @@ -120,8 +120,8 @@ void analogout_free(dac_t *obj) __DAC_CLK_DISABLE(); } - // Configure GPIO - pin_function(obj->pin, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0)); + // Configure GPIO back to reset value + pin_function(obj->pin, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)); } const PinMap *analogout_pinmap() diff --git a/targets/TARGET_STM/TARGET_STM32L1/analogout_device.c b/targets/TARGET_STM/TARGET_STM32L1/analogout_device.c index de737c46ae..e4bd9b0761 100644 --- a/targets/TARGET_STM/TARGET_STM32L1/analogout_device.c +++ b/targets/TARGET_STM/TARGET_STM32L1/analogout_device.c @@ -99,8 +99,8 @@ void analogout_free(dac_t *obj) __DAC_CLK_DISABLE(); } - // Configure GPIO - pin_function(obj->pin, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0)); + // Configure GPIO back to reset value + pin_function(obj->pin, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)); } const PinMap *analogout_pinmap() diff --git a/targets/TARGET_STM/TARGET_STM32L4/analogout_device.c b/targets/TARGET_STM/TARGET_STM32L4/analogout_device.c index 7953aa8063..c1e8be56fd 100644 --- a/targets/TARGET_STM/TARGET_STM32L4/analogout_device.c +++ b/targets/TARGET_STM/TARGET_STM32L4/analogout_device.c @@ -131,8 +131,8 @@ void analogout_free(dac_t *obj) __HAL_RCC_DAC1_CLK_DISABLE(); } - // Configure GPIO - pin_function(obj->pin, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0)); + // Configure GPIO back to reset value + pin_function(obj->pin, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)); sleep_manager_unlock_deep_sleep(); } diff --git a/targets/TARGET_STM/TARGET_STM32L5/analogout_device.c b/targets/TARGET_STM/TARGET_STM32L5/analogout_device.c index f6d42fe06f..fcf8fd7033 100644 --- a/targets/TARGET_STM/TARGET_STM32L5/analogout_device.c +++ b/targets/TARGET_STM/TARGET_STM32L5/analogout_device.c @@ -125,8 +125,8 @@ void analogout_free(dac_t *obj) __HAL_RCC_DAC1_CLK_DISABLE(); } - // Configure GPIO - pin_function(obj->pin, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0)); + // Configure GPIO back to reset value + pin_function(obj->pin, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)); } const PinMap *analogout_pinmap() diff --git a/targets/TARGET_STM/TARGET_STM32WL/analogout_device.c b/targets/TARGET_STM/TARGET_STM32WL/analogout_device.c index 4ef747858b..8368cde698 100644 --- a/targets/TARGET_STM/TARGET_STM32WL/analogout_device.c +++ b/targets/TARGET_STM/TARGET_STM32WL/analogout_device.c @@ -99,8 +99,8 @@ void analogout_free(dac_t *obj) __HAL_RCC_DAC_RELEASE_RESET(); __HAL_RCC_DAC_CLK_DISABLE(); - // Configure GPIO - pin_function(obj->pin, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0)); + // Configure GPIO back to reset value + pin_function(obj->pin, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)); } const PinMap *analogout_pinmap() From 21dcebb58d48a5dc9bbadb80e9e01626f2f54441 Mon Sep 17 00:00:00 2001 From: jeromecoutant Date: Wed, 17 Mar 2021 15:37:28 +0100 Subject: [PATCH 5/5] STM32 OSPI/QSPI : correct GPIO free --- targets/TARGET_STM/ospi_api.c | 24 ++++++++++++------------ targets/TARGET_STM/qspi_api.c | 26 +++++++++++++------------- 2 files changed, 25 insertions(+), 25 deletions(-) diff --git a/targets/TARGET_STM/ospi_api.c b/targets/TARGET_STM/ospi_api.c index 25d762be40..bd9df34748 100644 --- a/targets/TARGET_STM/ospi_api.c +++ b/targets/TARGET_STM/ospi_api.c @@ -430,18 +430,18 @@ ospi_status_t ospi_free(ospi_t *obj) } #endif - // Configure GPIOs - pin_function(obj->io0, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0)); - pin_function(obj->io1, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0)); - pin_function(obj->io2, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0)); - pin_function(obj->io3, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0)); - pin_function(obj->io4, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0)); - pin_function(obj->io5, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0)); - pin_function(obj->io6, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0)); - pin_function(obj->io7, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0)); - pin_function(obj->sclk, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0)); - pin_function(obj->ssel, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0)); - pin_function(obj->dqs, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0)); + // Configure GPIOs back to reset value + pin_function(obj->io0, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)); + pin_function(obj->io1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)); + pin_function(obj->io2, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)); + pin_function(obj->io3, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)); + pin_function(obj->io4, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)); + pin_function(obj->io5, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)); + pin_function(obj->io6, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)); + pin_function(obj->io7, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)); + pin_function(obj->sclk, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)); + pin_function(obj->ssel, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)); + pin_function(obj->dqs, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)); (void)(obj); return OSPI_STATUS_OK; diff --git a/targets/TARGET_STM/qspi_api.c b/targets/TARGET_STM/qspi_api.c index 28d61f17a5..ee803387be 100644 --- a/targets/TARGET_STM/qspi_api.c +++ b/targets/TARGET_STM/qspi_api.c @@ -656,13 +656,13 @@ qspi_status_t qspi_free(qspi_t *obj) } #endif - // Configure GPIOs - pin_function(obj->io0, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0)); - pin_function(obj->io1, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0)); - pin_function(obj->io2, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0)); - pin_function(obj->io3, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0)); - pin_function(obj->sclk, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0)); - pin_function(obj->ssel, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0)); + // Configure GPIOs back to reset value + pin_function(obj->io0, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)); + pin_function(obj->io1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)); + pin_function(obj->io2, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)); + pin_function(obj->io3, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)); + pin_function(obj->sclk, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)); + pin_function(obj->ssel, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)); (void)(obj); return QSPI_STATUS_OK; @@ -691,12 +691,12 @@ qspi_status_t qspi_free(qspi_t *obj) __HAL_RCC_QSPI_CLK_DISABLE(); // Configure GPIOs - pin_function(obj->io0, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0)); - pin_function(obj->io1, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0)); - pin_function(obj->io2, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0)); - pin_function(obj->io3, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0)); - pin_function(obj->sclk, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0)); - pin_function(obj->ssel, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0)); + pin_function(obj->io0, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)); + pin_function(obj->io1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)); + pin_function(obj->io2, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)); + pin_function(obj->io3, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)); + pin_function(obj->sclk, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)); + pin_function(obj->ssel, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0)); (void)(obj); return QSPI_STATUS_OK;