24
24
25
25
#include <mcu/stm32_hal.h>
26
26
27
- #if defined(USB_OTG_FS )
28
- #if defined(STM32U5 )
29
- #define GPIO_AF_USB GPIO_AF10_USB
27
+ #if MYNEWT_VAL (USB_USE_OTG_HS )
28
+ #define USB_OTG USB_OTG_HS
29
+ #define USB_OTG_IRQHandler OTG_HS_IRQHandler
30
+ #define USB_OTG_IRQn OTG_HS_IRQn
31
+ #define USB_OTG_CLK_ENABLE __HAL_RCC_USB_OTG_HS_CLK_ENABLE
30
32
#else
31
- #define GPIO_AF_USB GPIO_AF10_OTG_FS
33
+ #define USB_OTG USB_OTG_FS
34
+ #define USB_OTG_IRQHandler OTG_FS_IRQHandler
35
+ #define USB_OTG_IRQn OTG_FS_IRQn
36
+ #define USB_OTG_CLK_ENABLE __HAL_RCC_USB_OTG_FS_CLK_ENABLE
32
37
#endif
38
+ #define GPIO_AF_USB MYNEWT_VAL(USB_AF_USB)
33
39
34
40
static void
35
- OTG_FS_IRQHandler (void )
41
+ OTG_IRQHandler (void )
36
42
{
37
43
/* TinyUSB provides interrupt handler code */
38
44
tud_int_handler (0 );
39
45
}
40
- #define USB_OTG USB_OTG_FS
41
- #define USB_OTG_CLK_ENABLE __HAL_RCC_USB_OTG_FS_CLK_ENABLE
42
- #elif defined(USB_OTG_HS )
43
- static void
44
- OTG_HS_IRQHandler (void )
45
- {
46
- /* TinyUSB provides interrupt handler code */
47
- tud_int_handler (0 );
48
- }
49
- #define USB_OTG USB_OTG_HS
50
- #define USB_OTG_CLK_ENABLE __HAL_RCC_USB_OTG_HS_CLK_ENABLE
51
- #define GPIO_AF10_OTG_FS GPIO_AF10_OTG1_FS
52
- #define GPIO_AF_USB GPIO_AF10_OTG_FS
53
- #endif
54
46
55
47
void
56
48
tinyusb_hardware_init (void )
57
49
{
58
- #if defined(USB_OTG_FS )
59
- NVIC_SetVector (OTG_FS_IRQn , (uint32_t )OTG_FS_IRQHandler );
60
- NVIC_SetPriority (OTG_FS_IRQn , 2 );
61
- #elif defined(USB_OTG_HS )
62
- NVIC_SetVector (OTG_HS_IRQn , (uint32_t )OTG_HS_IRQHandler );
63
- NVIC_SetPriority (OTG_HS_IRQn , 2 );
64
- #endif
50
+ NVIC_SetVector (USB_OTG_IRQn , (uint32_t )OTG_IRQHandler );
51
+ NVIC_SetPriority (USB_OTG_IRQn , 2 );
65
52
/*
66
53
* USB Pin Init
67
54
* PA11- DM, PA12- DP
68
55
*/
69
56
hal_gpio_init_af (MCU_GPIO_PORTA (11 ), GPIO_AF_USB , GPIO_NOPULL , GPIO_MODE_AF_PP );
70
57
#if MYNEWT_VAL (USB_DP_HAS_EXTERNAL_PULL_UP )
71
58
hal_gpio_init_out (MCU_GPIO_PORTA (12 ), 0 );
72
- #if MYNEWT_VAL (BOOT_LOADER )
59
+ #if MYNEWT_VAL (OS_SCHEDULING )
73
60
os_cputime_delay_usecs (1000 );
74
61
#else
75
62
os_time_delay (1 );
@@ -96,7 +83,7 @@ tinyusb_hardware_init(void)
96
83
#endif
97
84
98
85
#ifdef USB_OTG_GCCFG_NOVBUSSENS
99
- #if !MYNEWT_VAL (USB_VBUS_DETECTION_ENABLE )
86
+ #if !MYNEWT_VAL (USB_VBUS_DETECTION_ENABLE )
100
87
/* PA9- VUSB not used for USB */
101
88
USB_OTG -> GCCFG |= USB_OTG_GCCFG_NOVBUSSENS ;
102
89
USB_OTG -> GCCFG &= ~USB_OTG_GCCFG_VBUSBSEN ;
@@ -110,7 +97,7 @@ tinyusb_hardware_init(void)
110
97
#elif USB_OTG_GCCFG_VBDEN
111
98
#if MYNEWT_VAL (USB_VBUS_DETECTION_ENABLE )
112
99
hal_gpio_init_in (MCU_GPIO_PORTA (9 ), HAL_GPIO_PULL_NONE );
113
- USB_OTG_FS -> GCCFG |= USB_OTG_GCCFG_VBDEN ;
100
+ USB_OTG -> GCCFG |= USB_OTG_GCCFG_VBDEN ;
114
101
#else
115
102
/* PA9- VUSB not used for USB */
116
103
USB_OTG -> GCCFG &= ~USB_OTG_GCCFG_VBDEN ;
@@ -120,8 +107,11 @@ tinyusb_hardware_init(void)
120
107
#endif
121
108
#endif
122
109
123
- #if MYNEWT_VAL (MCU_STM32U5 ) || MYNEWT_VAL (MCU_STM32L4 )
110
+ #if MYNEWT_VAL (MCU_STM32U5 ) || MYNEWT_VAL (MCU_STM32L4 ) || MYNEWT_VAL (MCU_STM32L5 )
111
+ __HAL_RCC_PWR_CLK_ENABLE ();
124
112
/* Enable USB power */
125
113
HAL_PWREx_EnableVddUSB ();
114
+ #elif MYNEWT_VAL (MCU_STM32H7 )
115
+ HAL_PWREx_EnableUSBVoltageDetector ();
126
116
#endif
127
117
}
0 commit comments