Skip to content

Commit 3fc77df

Browse files
committed
STM32: full GPIO reset during mbed init
1 parent e1d3037 commit 3fc77df

File tree

1 file changed

+54
-0
lines changed

1 file changed

+54
-0
lines changed

targets/TARGET_STM/mbed_overrides.c

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,57 @@ MBED_WEAK void TargetBSP_Init(void) {
4646
/** Do nothing */
4747
}
4848

49+
void GPIO_Full_Init(void) {
50+
GPIO_InitTypeDef GPIO_InitStruct;
51+
52+
GPIO_InitStruct.Pin = GPIO_PIN_All;
53+
GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
54+
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
55+
#if !TARGET_STM32F1
56+
GPIO_InitStruct.Pull = GPIO_NOPULL;
57+
GPIO_InitStruct.Alternate = 0;
58+
#endif
59+
#if defined(GPIOA)
60+
__HAL_RCC_GPIOA_CLK_ENABLE();
61+
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
62+
__HAL_RCC_GPIOA_CLK_DISABLE();
63+
#endif
64+
#if defined(GPIOB)
65+
__HAL_RCC_GPIOB_CLK_ENABLE();
66+
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
67+
__HAL_RCC_GPIOB_CLK_DISABLE();
68+
#endif
69+
#if defined(GPIOC)
70+
__HAL_RCC_GPIOC_CLK_ENABLE();
71+
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
72+
__HAL_RCC_GPIOC_CLK_DISABLE();
73+
#endif
74+
#if defined(GPIOD)
75+
__HAL_RCC_GPIOD_CLK_ENABLE();
76+
HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
77+
__HAL_RCC_GPIOD_CLK_DISABLE();
78+
#endif
79+
#if defined(GPIOE)
80+
__HAL_RCC_GPIOE_CLK_ENABLE();
81+
HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
82+
__HAL_RCC_GPIOE_CLK_DISABLE();
83+
#endif
84+
#if defined(GPIOF)
85+
__HAL_RCC_GPIOF_CLK_ENABLE();
86+
HAL_GPIO_Init(GPIOF, &GPIO_InitStruct);
87+
__HAL_RCC_GPIOF_CLK_DISABLE();
88+
#endif
89+
#if defined(GPIOG)
90+
__HAL_RCC_GPIOG_CLK_ENABLE();
91+
HAL_GPIO_Init(GPIOG, &GPIO_InitStruct);
92+
__HAL_RCC_GPIOG_CLK_DISABLE();
93+
#endif
94+
#if defined(GPIOH)
95+
__HAL_RCC_GPIOH_CLK_ENABLE();
96+
HAL_GPIO_Init(GPIOH, &GPIO_InitStruct);
97+
__HAL_RCC_GPIOH_CLK_DISABLE();
98+
#endif
99+
}
49100

50101
// This function is called after RAM initialization and before main.
51102
void mbed_sdk_init()
@@ -166,6 +217,9 @@ void mbed_sdk_init()
166217
#endif /* ! MBED_CONF_TARGET_LSE_AVAILABLE */
167218
#endif /* DEVICE_RTC */
168219

220+
/* Reset all GPIO */
221+
GPIO_Full_Init();
222+
169223
/* BSP initialization hook (external RAM, etc) */
170224
TargetBSP_Init();
171225

0 commit comments

Comments
 (0)