Skip to content

Commit 59fc99b

Browse files
committed
STM32: full GPIO reset during mbed init
1 parent 6d89500 commit 59fc99b

File tree

1 file changed

+69
-0
lines changed

1 file changed

+69
-0
lines changed

targets/TARGET_STM/mbed_overrides.c

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,72 @@ MBED_WEAK void TargetBSP_Init(void) {
9494
/** Do nothing */
9595
}
9696

97+
void GPIO_Full_Init(void) {
98+
GPIO_InitTypeDef GPIO_InitStruct;
99+
100+
GPIO_InitStruct.Pin = GPIO_PIN_All;
101+
GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
102+
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
103+
#if !TARGET_STM32F1
104+
GPIO_InitStruct.Pull = GPIO_NOPULL;
105+
GPIO_InitStruct.Alternate = 0;
106+
#endif
107+
#if defined(GPIOA)
108+
__HAL_RCC_GPIOA_CLK_ENABLE();
109+
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
110+
__HAL_RCC_GPIOA_CLK_DISABLE();
111+
#endif
112+
#if defined(GPIOB)
113+
__HAL_RCC_GPIOB_CLK_ENABLE();
114+
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
115+
__HAL_RCC_GPIOB_CLK_DISABLE();
116+
#endif
117+
#if defined(GPIOC)
118+
__HAL_RCC_GPIOC_CLK_ENABLE();
119+
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
120+
__HAL_RCC_GPIOC_CLK_DISABLE();
121+
#endif
122+
#if defined(GPIOD)
123+
__HAL_RCC_GPIOD_CLK_ENABLE();
124+
HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
125+
__HAL_RCC_GPIOD_CLK_DISABLE();
126+
#endif
127+
#if defined(GPIOE)
128+
__HAL_RCC_GPIOE_CLK_ENABLE();
129+
HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
130+
__HAL_RCC_GPIOE_CLK_DISABLE();
131+
#endif
132+
#if defined(GPIOF)
133+
__HAL_RCC_GPIOF_CLK_ENABLE();
134+
HAL_GPIO_Init(GPIOF, &GPIO_InitStruct);
135+
__HAL_RCC_GPIOF_CLK_DISABLE();
136+
#endif
137+
#if defined(GPIOG)
138+
__HAL_RCC_GPIOG_CLK_ENABLE();
139+
HAL_GPIO_Init(GPIOG, &GPIO_InitStruct);
140+
__HAL_RCC_GPIOG_CLK_DISABLE();
141+
#endif
142+
#if defined(GPIOH)
143+
__HAL_RCC_GPIOH_CLK_ENABLE();
144+
HAL_GPIO_Init(GPIOH, &GPIO_InitStruct);
145+
__HAL_RCC_GPIOH_CLK_DISABLE();
146+
#endif
147+
#if defined(GPIOI)
148+
__HAL_RCC_GPIOI_CLK_ENABLE();
149+
HAL_GPIO_Init(GPIOI, &GPIO_InitStruct);
150+
__HAL_RCC_GPIOI_CLK_DISABLE();
151+
#endif
152+
#if defined(GPIOJ)
153+
__HAL_RCC_GPIOJ_CLK_ENABLE();
154+
HAL_GPIO_Init(GPIOJ, &GPIO_InitStruct);
155+
__HAL_RCC_GPIOJ_CLK_DISABLE();
156+
#endif
157+
#if defined(GPIOK)
158+
__HAL_RCC_GPIOK_CLK_ENABLE();
159+
HAL_GPIO_Init(GPIOK, &GPIO_InitStruct);
160+
__HAL_RCC_GPIOK_CLK_DISABLE();
161+
#endif
162+
}
97163

98164
// This function is called after RAM initialization and before main.
99165
void mbed_sdk_init()
@@ -226,6 +292,9 @@ void mbed_sdk_init()
226292
#endif /* ! MBED_CONF_TARGET_LSE_AVAILABLE */
227293
#endif /* DEVICE_RTC */
228294

295+
/* Reset all GPIO */
296+
GPIO_Full_Init();
297+
229298
/* BSP initialization hook (external RAM, etc) */
230299
TargetBSP_Init();
231300

0 commit comments

Comments
 (0)