使用SIZE是256K的单片机
使能USB外设
配置为大容量存储设备
配置USB时钟
修改程序堆栈大小
创建一个U盘空间
uint8_t msc_data[STORAGE_BLK_NBR][STORAGE_BLK_SIZ] = {0};
实现读写
/*******************************************************************************
* Function Name : STORAGE_Read_FS
* Description :
* Input : None.
* Output : None.
* Return : None.
*******************************************************************************/
int8_t STORAGE_Read_FS (uint8_t lun,
uint8_t *buf,
uint32_t blk_addr,
uint16_t blk_len)
{
/* USER CODE BEGIN 6 */
uint32_t n,ii;
for(n = 0;n < blk_len;n++)
{
for(ii = 0;ii<STORAGE_BLK_SIZ;ii++)
{
buf[n*STORAGE_BLK_SIZ + ii] = msc_data[blk_addr+n][ii];
}
}
return (USBD_OK);
/* USER CODE END 6 */
}
/*******************************************************************************
* Function Name : STORAGE_Write_FS
* Description :
* Input : None.
* Output : None.
* Return : None.
*******************************************************************************/
int8_t STORAGE_Write_FS (uint8_t lun,
uint8_t *buf,
uint32_t blk_addr,
uint16_t blk_len)
{
/* USER CODE BEGIN 7 */
uint32_t n,ii;
for(n = 0;n < blk_len;n++)
{
for(ii = 0;ii<STORAGE_BLK_SIZ;ii++)
{
msc_data[blk_addr+n][ii] = buf[n*STORAGE_BLK_SIZ+ii];
}
}
return USBD_OK;
/* USER CODE END 7 */
}