#include "usbd_usr.h" #include "usb_dcd_int.h" #include #include "usbd_desc.h" #include "usbd_cdc_core.h" ////////////////////////////////////////////////////////////////////////////////// //本程序只供学习使用,未经作者许可,不得用于其它任何用途 //ALIENTEK STM32开发板 //USBD-USR 代码 //正点原子@ALIENTEK //技术论坛:www.openedv.com //创建日期:2016/1/21 //版本:V1.0 //版权所有,盗版必究。 //Copyright(C) 广州市星翼电子科技有限公司 2009-2019 //All rights reserved //******************************************************************************* //修改信息 //无 ////////////////////////////////////////////////////////////////////////////////// //表示USB连接状态 //0,没有连接; //1,已经连接; static vu8 bDeviceState=0; //默认没有连接 __ALIGN_BEGIN static USB_OTG_CORE_HANDLE USB_OTG_dev={0} __ALIGN_END; //USB OTG 中断服务函数 //处理所有USB中断 void OTG_FS_IRQHandler(void) { USBD_OTG_ISR_Handler(&USB_OTG_dev); } //指向DEVICE_PROP结构体 //USB Device 用户回调函数. static USBD_Usr_cb_TypeDef USR_cb = { USBD_USR_Init, USBD_USR_DeviceReset, USBD_USR_DeviceConfigured, USBD_USR_DeviceSuspended, USBD_USR_DeviceResumed, USBD_USR_DeviceConnected, USBD_USR_DeviceDisconnected, }; //USB Device 用户自定义初始化函数 void USBD_USR_Init(void) { //printf("USBD_USR_Init\r\n"); } //USB Device 复位 //speed:USB速度,0,高速;1,全速;其他,错误. void USBD_USR_DeviceReset (uint8_t speed) { switch (speed) { case USB_OTG_SPEED_HIGH: // printf("USB Device Library v1.1.0 [HS]\r\n"); break; case USB_OTG_SPEED_FULL: // printf("USB Device Library v1.1.0 [FS]\r\n"); break; default: // printf("USB Device Library v1.1.0 [??]\r\n"); break; } } //USB Device 配置成功 void USBD_USR_DeviceConfigured (void) { bDeviceState=1; // printf("MSC Interface started.\r\n"); } //USB Device挂起 void USBD_USR_DeviceSuspended(void) { bDeviceState=0; // printf("Device In suspend mode.\r\n"); } //USB Device恢复 void USBD_USR_DeviceResumed(void) { // printf("Device Resumed\r\n"); } //USB Device连接成功 void USBD_USR_DeviceConnected (void) { bDeviceState=1; // printf("USB Device Connected.\r\n"); } //USB Device未连接 void USBD_USR_DeviceDisconnected (void) { bDeviceState=0; // printf("USB Device Disconnected.\r\n"); } void USBD_InitAsVcp (void) { USBD_Init(&USB_OTG_dev,USB_OTG_HS_CORE_ID,&USR_desc,&USBD_CDC_cb,&USR_cb); } void USBD_OTG_ISR_USER (void) { USBD_OTG_ISR_Handler (&USB_OTG_dev); //u32 st=USB_OTG_READ_REG32(&(&USB_OTG_dev)->regs.GREGS->GINTSTS ); u32 st=*(u32 *)0x4004001c; //st=*(u32 *)0x40040020; if (st==0) { return; } } void OTG_HS_EP1_IN_ISR_USER (void) { #ifdef USB_OTG_HS_DEDICATED_EP1_ENABLED USBD_OTG_EP1IN_ISR_Handler (&USB_OTG_dev); #endif } void OTG_HS_EP1_OUT_ISR_USER (void) { #ifdef USB_OTG_HS_DEDICATED_EP1_ENABLED USBD_OTG_EP1OUT_ISR_Handler (&USB_OTG_dev); #endif }