|
楼主 |
发表于 2024-1-4 14:46:54
|
显示全部楼层
找到没有调用的原因了,我之前初始化USB的时候,如果连接了usb线的话,初始化完后就直接弹出来了,然后我不想让他直接弹出,所以我把USB初始化函数中的USBD_Start(&hUsbDeviceFS);给拿出来了。这样在初始化函数中的
void MX_USB_DEVICE_Init(void)
{
if (USBD_Init(&hUsbDeviceFS, &FS_Desc, DEVICE_FS) != USBD_OK)
{
Error_Handler();
}
if (USBD_RegisterClass(&hUsbDeviceFS, &USBD_MSC) != USBD_OK)
{
Error_Handler();
}
if (USBD_MSC_RegisterStorage(&hUsbDeviceFS, &USBD_Storage_Interface_fops_FS) != USBD_OK)
{
Error_Handler();
}
}
就剩这3个,初始化完成后确实不会弹出来,然后单独调用USBD_Start(&hUsbDeviceFS)也可以启动u盘,但是这种情况下conf.c里的回调函数就都不执行了,我设置的标志也没有置。
然后我把USBD_Start(&hUsbDeviceFS)还是加在MX_USB_DEVICE_Init后面,然后执行判断,判断USB是否连接,连接了就调用USBD_Start启动u盘,没有连接就打开文件存数据。这次就能进回调函数里了,我的标志也调用了。就很奇怪。。。。。。。。 最变态的是执行第一个USBD_Start时,u盘没启动
|
|