在stm32 USB MSC设备应用程序中使用闪存驱动器代替microSD

在stm32 USB MSC设备应用程序中使用闪存驱动器代替microSD,usb,stm32,stm32cubemx,Usb,Stm32,Stm32cubemx,我想用闪存代替sd卡替换stm32 msc设备实例。 为此,我对示例中的usbd_storage.c文件进行了一些更改。 我尝试了USBH_MSC_Read函数,而不是CubeMX应用程序中使用的BSP_SD_WriteBlocks_DMA函数,但没有得到任何结果。 当我使用usb电缆连接到电脑时,我将我的设备视为一个新的驱动程序,但我收到警告“请将磁盘插入usb驱动器” 我该怎么解决这个问题?我在这件事上等待你的帮助 //////// #define STORAGE_LUN_NBR

我想用闪存代替sd卡替换stm32 msc设备实例。 为此,我对示例中的usbd_storage.c文件进行了一些更改。 我尝试了USBH_MSC_Read函数,而不是CubeMX应用程序中使用的BSP_SD_WriteBlocks_DMA函数,但没有得到任何结果。 当我使用usb电缆连接到电脑时,我将我的设备视为一个新的驱动程序,但我收到警告“请将磁盘插入usb驱动器”

我该怎么解决这个问题?我在这件事上等待你的帮助

////////
#define STORAGE_LUN_NBR                  1
#define STORAGE_BLK_NBR                  0x64 
#define STORAGE_BLK_SIZ                  0x200 //512

int8_t STORAGE_GetCapacity(uint8_t lun, uint32_t * block_num,
                           uint16_t * block_size)
{

  int8_t ret = -1;
  *block_num  = STORAGE_BLK_NBR;
  *block_size = STORAGE_BLK_SIZ;

  return ret = 0;
}

int8_t STORAGE_IsReady(uint8_t lun)
{
  static int8_t prev_status = 0;
  int8_t ret = -1;
  if(USBH_MSC_IsReady(&hUSBHostFS))
  {
   ret = 0;
  } 
  return ret;
}

int8_t STORAGE_Read(uint8_t lun, uint8_t * buf, uint32_t blk_addr,
                    uint16_t blk_len)
{
  int8_t ret = -1;
  USBH_StatusTypeDef  status = USBH_OK;
  status = USBH_MSC_Read(&hUSBHostFS, lun, blk_addr, buf, blk_len);
  if(status == USBH_OK)
  {
    ret = 0;
  }
  return ret; 
}

int8_t STORAGE_Write(uint8_t lun, uint8_t * buf, uint32_t blk_addr,
                     uint16_t blk_len)
{
  int8_t ret = -1; 
  USBH_StatusTypeDef  status = USBH_OK;
  status = USBH_MSC_Write(&hUSBHostFS, lun, blk_addr, buf, blk_len);
  if(status == USBH_OK)
  {
   ret = 0;
  }
  return ret;
}

主机设备是否正确初始化?你能从闪存中读取数据吗?