Skip to content

Commit b91a705

Browse files
authored
Merge pull request #14444 from jeromecoutant/PR_GPIO_FREE
STM32: reset GPIO value is analog mode
2 parents cbc6209 + 21dcebb commit b91a705

File tree

16 files changed

+60
-61
lines changed

16 files changed

+60
-61
lines changed

targets/TARGET_STM/TARGET_STM32F0/analogout_device.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,8 +84,8 @@ void analogout_free(dac_t *obj)
8484
__HAL_RCC_DAC1_RELEASE_RESET();
8585
__HAL_RCC_DAC1_CLK_DISABLE();
8686

87-
// Configure GPIO
88-
pin_function(obj->pin, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
87+
// Configure GPIO back to reset value
88+
pin_function(obj->pin, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0));
8989
}
9090

9191
const PinMap *analogout_pinmap()

targets/TARGET_STM/TARGET_STM32F1/analogout_device.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,8 +96,8 @@ void analogout_free(dac_t *obj)
9696
__HAL_RCC_DAC_RELEASE_RESET();
9797
__HAL_RCC_DAC_CLK_DISABLE();
9898

99-
// Configure GPIO
100-
pin_function(obj->pin, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
99+
// Configure GPIO back to reset value
100+
pin_function(obj->pin, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0));
101101
}
102102

103103
const PinMap *analogout_pinmap()

targets/TARGET_STM/TARGET_STM32F2/analogout_device.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,8 +96,8 @@ void analogout_free(dac_t *obj)
9696
__HAL_RCC_DAC_RELEASE_RESET();
9797
__HAL_RCC_DAC_CLK_DISABLE();
9898

99-
// Configure GPIO
100-
pin_function(obj->pin, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
99+
// Configure GPIO back to reset value
100+
pin_function(obj->pin, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0));
101101
}
102102

103103
const PinMap *analogout_pinmap()

targets/TARGET_STM/TARGET_STM32F3/analogout_device.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -158,8 +158,8 @@ void analogout_free(dac_t *obj)
158158
}
159159
#endif
160160

161-
// Configure GPIO
162-
pin_function(obj->pin, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
161+
// Configure GPIO back to reset value
162+
pin_function(obj->pin, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0));
163163
}
164164

165165
const PinMap *analogout_pinmap()

targets/TARGET_STM/TARGET_STM32G0/analogout_device.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -118,8 +118,8 @@ void analogout_free(dac_t *obj)
118118
__HAL_RCC_DAC1_CLK_DISABLE();
119119
}
120120

121-
// Configure GPIO
122-
pin_function(obj->pin, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
121+
// Configure GPIO back to reset value
122+
pin_function(obj->pin, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0));
123123
}
124124

125125
const PinMap *analogout_pinmap()

targets/TARGET_STM/TARGET_STM32G4/analogout_device.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -146,8 +146,8 @@ void analogout_free(dac_t *obj)
146146
}
147147
#endif
148148

149-
// Configure GPIO
150-
pin_function(obj->pin, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
149+
// Configure GPIO back to reset value
150+
pin_function(obj->pin, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0));
151151
}
152152

153153
const PinMap *analogout_pinmap()

targets/TARGET_STM/TARGET_STM32L0/analogout_device.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -120,8 +120,8 @@ void analogout_free(dac_t *obj)
120120
__DAC_CLK_DISABLE();
121121
}
122122

123-
// Configure GPIO
124-
pin_function(obj->pin, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
123+
// Configure GPIO back to reset value
124+
pin_function(obj->pin, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0));
125125
}
126126

127127
const PinMap *analogout_pinmap()

targets/TARGET_STM/TARGET_STM32L1/analogout_device.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,8 +99,8 @@ void analogout_free(dac_t *obj)
9999
__DAC_CLK_DISABLE();
100100
}
101101

102-
// Configure GPIO
103-
pin_function(obj->pin, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
102+
// Configure GPIO back to reset value
103+
pin_function(obj->pin, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0));
104104
}
105105

106106
const PinMap *analogout_pinmap()

targets/TARGET_STM/TARGET_STM32L4/analogout_device.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -131,8 +131,8 @@ void analogout_free(dac_t *obj)
131131
__HAL_RCC_DAC1_CLK_DISABLE();
132132
}
133133

134-
// Configure GPIO
135-
pin_function(obj->pin, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
134+
// Configure GPIO back to reset value
135+
pin_function(obj->pin, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0));
136136

137137
sleep_manager_unlock_deep_sleep();
138138
}

targets/TARGET_STM/TARGET_STM32L5/analogout_device.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -125,8 +125,8 @@ void analogout_free(dac_t *obj)
125125
__HAL_RCC_DAC1_CLK_DISABLE();
126126
}
127127

128-
// Configure GPIO
129-
pin_function(obj->pin, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
128+
// Configure GPIO back to reset value
129+
pin_function(obj->pin, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0));
130130
}
131131

132132
const PinMap *analogout_pinmap()

targets/TARGET_STM/TARGET_STM32WL/analogout_device.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,8 +99,8 @@ void analogout_free(dac_t *obj)
9999
__HAL_RCC_DAC_RELEASE_RESET();
100100
__HAL_RCC_DAC_CLK_DISABLE();
101101

102-
// Configure GPIO
103-
pin_function(obj->pin, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
102+
// Configure GPIO back to reset value
103+
pin_function(obj->pin, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0));
104104
}
105105

106106
const PinMap *analogout_pinmap()

targets/TARGET_STM/ospi_api.c

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -430,18 +430,18 @@ ospi_status_t ospi_free(ospi_t *obj)
430430
}
431431
#endif
432432

433-
// Configure GPIOs
434-
pin_function(obj->io0, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
435-
pin_function(obj->io1, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
436-
pin_function(obj->io2, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
437-
pin_function(obj->io3, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
438-
pin_function(obj->io4, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
439-
pin_function(obj->io5, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
440-
pin_function(obj->io6, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
441-
pin_function(obj->io7, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
442-
pin_function(obj->sclk, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
443-
pin_function(obj->ssel, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
444-
pin_function(obj->dqs, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
433+
// Configure GPIOs back to reset value
434+
pin_function(obj->io0, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0));
435+
pin_function(obj->io1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0));
436+
pin_function(obj->io2, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0));
437+
pin_function(obj->io3, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0));
438+
pin_function(obj->io4, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0));
439+
pin_function(obj->io5, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0));
440+
pin_function(obj->io6, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0));
441+
pin_function(obj->io7, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0));
442+
pin_function(obj->sclk, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0));
443+
pin_function(obj->ssel, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0));
444+
pin_function(obj->dqs, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0));
445445

446446
(void)(obj);
447447
return OSPI_STATUS_OK;

targets/TARGET_STM/pwmout_api.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -219,8 +219,8 @@ void pwmout_init(pwmout_t *obj, PinName pin)
219219

220220
void pwmout_free(pwmout_t *obj)
221221
{
222-
// Configure GPIO
223-
pin_function(obj->pin, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
222+
// Configure GPIO back to reset value
223+
pin_function(obj->pin, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0));
224224
}
225225

226226
void pwmout_write(pwmout_t *obj, float value)

targets/TARGET_STM/qspi_api.c

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -656,13 +656,13 @@ qspi_status_t qspi_free(qspi_t *obj)
656656
}
657657
#endif
658658

659-
// Configure GPIOs
660-
pin_function(obj->io0, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
661-
pin_function(obj->io1, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
662-
pin_function(obj->io2, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
663-
pin_function(obj->io3, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
664-
pin_function(obj->sclk, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
665-
pin_function(obj->ssel, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
659+
// Configure GPIOs back to reset value
660+
pin_function(obj->io0, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0));
661+
pin_function(obj->io1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0));
662+
pin_function(obj->io2, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0));
663+
pin_function(obj->io3, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0));
664+
pin_function(obj->sclk, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0));
665+
pin_function(obj->ssel, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0));
666666

667667
(void)(obj);
668668
return QSPI_STATUS_OK;
@@ -691,12 +691,12 @@ qspi_status_t qspi_free(qspi_t *obj)
691691
__HAL_RCC_QSPI_CLK_DISABLE();
692692

693693
// Configure GPIOs
694-
pin_function(obj->io0, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
695-
pin_function(obj->io1, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
696-
pin_function(obj->io2, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
697-
pin_function(obj->io3, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
698-
pin_function(obj->sclk, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
699-
pin_function(obj->ssel, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
694+
pin_function(obj->io0, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0));
695+
pin_function(obj->io1, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0));
696+
pin_function(obj->io2, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0));
697+
pin_function(obj->io3, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0));
698+
pin_function(obj->sclk, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0));
699+
pin_function(obj->ssel, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0));
700700

701701
(void)(obj);
702702
return QSPI_STATUS_OK;

targets/TARGET_STM/serial_api.c

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -350,17 +350,15 @@ void serial_free(serial_t *obj)
350350
LL_HSEM_ReleaseLock(HSEM, CFG_HW_RCC_SEMID, HSEM_CR_COREID_CURRENT);
351351
#endif /* DUAL_CORE */
352352

353-
// Configure GPIOs
354-
pin_function(obj_s->pin_tx, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
355-
356-
pin_function(obj_s->pin_rx, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
357-
353+
// Configure GPIOs back to reset value
354+
pin_function(obj_s->pin_tx, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0));
355+
pin_function(obj_s->pin_rx, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0));
358356
#if DEVICE_SERIAL_FC
359357
if ( (obj_s->hw_flow_ctl == UART_HWCONTROL_RTS) || (obj_s->hw_flow_ctl == UART_HWCONTROL_RTS_CTS) ) {
360-
pin_function(obj_s->pin_rts, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
358+
pin_function(obj_s->pin_rts, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0));
361359
}
362360
if ( (obj_s->hw_flow_ctl == UART_HWCONTROL_CTS) || (obj_s->hw_flow_ctl == UART_HWCONTROL_RTS_CTS) ) {
363-
pin_function(obj_s->pin_cts, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
361+
pin_function(obj_s->pin_cts, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0));
364362
}
365363
#endif
366364

targets/TARGET_STM/stm_spi_api.c

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -374,12 +374,13 @@ void spi_free(spi_t *obj)
374374
#if defined(DUAL_CORE) && (TARGET_STM32H7)
375375
LL_HSEM_ReleaseLock(HSEM, CFG_HW_RCC_SEMID, HSEM_CR_COREID_CURRENT);
376376
#endif /* DUAL_CORE */
377-
// Configure GPIOs
378-
pin_function(spiobj->pin_miso, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
379-
pin_function(spiobj->pin_mosi, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
380-
pin_function(spiobj->pin_sclk, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
377+
378+
// Configure GPIOs back to reset value
379+
pin_function(spiobj->pin_miso, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0));
380+
pin_function(spiobj->pin_mosi, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0));
381+
pin_function(spiobj->pin_sclk, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0));
381382
if (handle->Init.NSS != SPI_NSS_SOFT) {
382-
pin_function(spiobj->pin_ssel, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
383+
pin_function(spiobj->pin_ssel, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0));
383384
}
384385
}
385386

0 commit comments

Comments
 (0)