#ifndef USB_H #define USB_H #include struct USB_reg_t { volatile uint32_t GOTGCTL; volatile uint32_t GOTGINT; volatile uint32_t GAHBCFG; volatile uint32_t GUSBCFG; volatile uint32_t GRSTCTL; volatile uint32_t GINTSTS; volatile uint32_t GINTMSK; volatile uint32_t GRXSTSR; volatile uint32_t GRXSTSP; volatile uint32_t GRXFSIZ; volatile uint32_t DIEPTXF0; volatile uint32_t HNPTXSTS; volatile uint32_t GCCFG; volatile uint32_t CID; uint32_t _reserved[49]; volatile uint32_t HPTXFSIZ; volatile uint32_t DIEPTXF1; volatile uint32_t DIEPTXF2; volatile uint32_t DIEPTXF3; }; class USB_t { public: USB_reg_t& reg; USB_t(uint32_t reg_addr) : reg(*(USB_reg_t*)reg_addr) {} }; #if defined(STM32F1) #elif defined(STM32F4) static USB_t OTG_FS(0x50000000); #endif #endif