STM32F407的USB用户回调函数USBD_Usr_cb_TypeDef
2022-06-16
925
1
前面了解过USBD_Usr_cb_TypeDef结构体中是用户的回调函数。用户的回调函数位于usbd_user.c文件中。
typedef struct _USBD_USR_PROP
{
void (*Init)(void);
void (*DeviceReset)(uint8_t speed);
void (*DeviceConfigured)(void);
void (*DeviceSuspended)(void);
void (*DeviceResumed)(void);
void (*DeviceConnected)(void);
void (*DeviceDisconnected)(void);
}
USBD_Usr_cb_TypeDef;
示例中的结构体函数指针初始化为:
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,
};
USBD_USR_Init
用户初始化函数,当USB设备硬件初始化后,留给用户的自定义回调函数,用于软件的初始化.
void USBD_USR_Init(void)
{
//printf("USBD_USR_Init\r\n");
}
USBD_USR_DeviceReset
USB设备复位后的回调函数,入参speed代别代表高速,全速。
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;
}
}
USBD_USR_DeviceConfigured
设备配置之后的回调函数
void USBD_USR_DeviceConfigured (void)
{
printf("MSC Interface started.\r\n");
}
USBD_USR_DeviceSuspended
设备挂起的回调函数
void USBD_USR_DeviceSuspended(void)
{
printf("Device In suspend mode.\r\n");
}
USBD_USR_DeviceResumed
设备从挂起状态恢复的回调函数
void USBD_USR_DeviceResumed(void)
{
printf("Device Resumed\r\n");
}
USBD_USR_DeviceConnected
USB设备连接成功回调函数
void USBD_USR_DeviceConnected (void)
{
bDeviceState=1;
printf("USB Device Connected.\r\n");
}
USBD_USR_DeviceDisconnected
USB从主机断开的回调函数
void USBD_USR_DeviceDisconnected (void)
{
bDeviceState=0;
printf("USB Device Disconnected.\r\n");
}
总结
其实可以对比STM32F103系列的回调函数,感觉这样划分更加合理。针对用户需要的各个阶段的回调函数,使我们的开发工作可以根据需要一目了然的开发。
HID人机交互QQ群:564808376
UAC音频QQ群:218581009
UVC相机QQ群:331552032
BOT&UASP大容量存储QQ群:258159197
STC-USB单片机QQ群:315457461
USB技术交流QQ群2:580684376
USB技术交流QQ群:952873936