问题描述
我正在尝试使用 stm32f107 将数据写入 USB 记忆棒。主要功能是:
while (1)
{
/* USER CODE END WHILE */
MX_USB_HOST_Process();
/* USER CODE BEGIN 3 */
switch(Appli_state)
{
case APPLICATION_IDLE:
break;
case APPLICATION_START:
counter_start++;
if(f_mount(&myUsbFatFS,(TCHAR const*)USBH_Path,0) == FR_OK)
{
UsbTest_Write();
}
break;
case APPLICATION_READY:
break;
case APPLICATION_disCONNECT:
break;
}
}
写函数是:
bool UsbTest_Write(void)
{
//Open or Create file for writing
if(f_open(&myFile,"a.csv",FA_WRITE | FA_OPEN_ALWAYS ) != FR_OK)
{
return 0;
}
//copy test Text to my temporary read/write buffer
f_lseek(&myFile,myFile.fsize);
sprintf(rwtext,"test\n");
//Write to text file
res = f_write(&myFile,(const void *)rwtext,strlen(rwtext),&byteswritten);
if((res != FR_OK) || (byteswritten == 0))
{
return 0;
f_close(&myFile);
}
f_close(&myFile);
return 1; //Success
}
我有 2GB 的 USB 记忆棒,它可以正常工作。当我尝试写入 8GB 和 16GB 的其他记忆棒时,它不会写入。我调试并
f_open()->find_volume()->get_ldnumber()
get_idnumber() 函数返回 0,所以 f_open() 函数返回 FR_disK_ERR。
可能是什么原因以及如何解决这个问题?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)