Skip to content

Commit f09ad37

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

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
@@ -46,6 +46,72 @@ 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+
#if defined(GPIOI)
100+
__HAL_RCC_GPIOI_CLK_ENABLE();
101+
HAL_GPIO_Init(GPIOI, &GPIO_InitStruct);
102+
__HAL_RCC_GPIOI_CLK_DISABLE();
103+
#endif
104+
#if defined(GPIOJ)
105+
__HAL_RCC_GPIOJ_CLK_ENABLE();
106+
HAL_GPIO_Init(GPIOJ, &GPIO_InitStruct);
107+
__HAL_RCC_GPIOJ_CLK_DISABLE();
108+
#endif
109+
#if defined(GPIOK)
110+
__HAL_RCC_GPIOK_CLK_ENABLE();
111+
HAL_GPIO_Init(GPIOK, &GPIO_InitStruct);
112+
__HAL_RCC_GPIOK_CLK_DISABLE();
113+
#endif
114+
}
49115

50116
// This function is called after RAM initialization and before main.
51117
void mbed_sdk_init()
@@ -166,6 +232,9 @@ void mbed_sdk_init()
166232
#endif /* ! MBED_CONF_TARGET_LSE_AVAILABLE */
167233
#endif /* DEVICE_RTC */
168234

235+
/* Reset all GPIO */
236+
GPIO_Full_Init();
237+
169238
/* BSP initialization hook (external RAM, etc) */
170239
TargetBSP_Init();
171240

0 commit comments

Comments
 (0)