33
33
void initialize_discharge_pin (void ) {
34
34
/* Initialize the 3V3 discharge to be OFF and the output power to be ON */
35
35
__HAL_RCC_GPIOE_CLK_ENABLE ();
36
+ __HAL_RCC_GPIOC_CLK_ENABLE ();
37
+
36
38
GPIO_InitTypeDef GPIO_InitStruct ;
37
- GPIO_InitStruct .Mode = GPIO_MODE_OUTPUT_OD ;
39
+ /* Set the DISCHARGE pin and the USB_DETECT pin to FLOAT */
40
+ GPIO_InitStruct .Mode = GPIO_MODE_ANALOG ;
38
41
GPIO_InitStruct .Pull = GPIO_NOPULL ;
39
- GPIO_InitStruct .Speed = GPIO_SPEED_LOW ;
40
42
GPIO_InitStruct .Pin = GPIO_PIN_6 ;
41
- HAL_GPIO_Init (GPIOE , & GPIO_InitStruct );
42
- HAL_GPIO_WritePin (GPIOE , GPIO_PIN_6 , GPIO_PIN_SET );
43
+ HAL_GPIO_Init (GPIOE , & GPIO_InitStruct ); /* PE6 DISCHRG */
44
+ HAL_GPIO_Init (GPIOC , & GPIO_InitStruct ); /* PC6 is USB_DETECT */
45
+
46
+ /* Turn on the 3V3 regulator */
43
47
GPIO_InitStruct .Mode = GPIO_MODE_OUTPUT_PP ;
48
+ GPIO_InitStruct .Speed = GPIO_SPEED_LOW ;
44
49
GPIO_InitStruct .Pin = GPIO_PIN_4 ;
45
50
HAL_GPIO_Init (GPIOE , & GPIO_InitStruct );
46
51
HAL_GPIO_WritePin (GPIOE , GPIO_PIN_4 , GPIO_PIN_SET );
@@ -53,14 +58,26 @@ void board_init(void) {
53
58
// Set tick interrupt priority, default HAL value is intentionally invalid
54
59
// Without this, USB does not function.
55
60
HAL_InitTick ((1UL << __NVIC_PRIO_BITS ) - 1UL );
61
+
62
+ initialize_discharge_pin ();
63
+
64
+ __HAL_RCC_GPIOE_CLK_ENABLE ();
65
+ GPIO_InitTypeDef GPIO_InitStruct ;
66
+ GPIO_InitStruct .Mode = GPIO_MODE_OUTPUT_PP ;
67
+ GPIO_InitStruct .Pull = GPIO_NOPULL ;
68
+ GPIO_InitStruct .Speed = GPIO_SPEED_LOW ;
69
+ GPIO_InitStruct .Pin = GPIO_PIN_2 ;
70
+ HAL_GPIO_Init (GPIOE , & GPIO_InitStruct );
71
+ HAL_GPIO_WritePin (GPIOE , GPIO_PIN_2 , GPIO_PIN_SET );
72
+ HAL_Delay (50 );
73
+ HAL_GPIO_WritePin (GPIOE , GPIO_PIN_2 , GPIO_PIN_RESET );
56
74
}
57
75
58
76
bool board_requests_safe_mode (void ) {
59
77
return false;
60
78
}
61
79
62
80
void reset_board (void ) {
63
- initialize_discharge_pin ();
64
81
}
65
82
66
83
void board_deinit (void ) {
0 commit comments