|
U盘读写问题:
由于本人的项目需要U盘读写数据,所以做了下U盘读写实验,但是总是遇到问题,跟踪程序发现程序在diskio.c如下程序段死循环,麻烦朋
友们帮我看下是什么原因,谢谢!
do
{
status = USBH_MSC_Write10(&USB_OTG_Core,(BYTE*)buff,sector, 512 * count);
USBH_MSC_HandleBOTXfer(&USB_OTG_Core, &USB_Host);
if(!HCD_IsDeviceConnected(&USB_OTG_Core))
{
break;
}
}while(status == USBH_MSC_BUSY );
实验使用安富莱_STM32-V5开发板(7寸电阻屏),基于μCOS-III+STemWin+FatFs+Lwip+UIP+USB综合程序V1.2c版本修改。
U盘使用的是朗科U235 8G(此U盘使用“./01.开发板例程\02.高级篇例程(裸机)\V5-107c_FatFS文件系统例程(U盘)(V1.2)\V5-
107c_FatFS文件系统例程(U盘)”这个例程可以正常读写)。
所修改代码如下:
//---------------------------------------------第一种尝试--------------------------------------
//USB图标按下时的响应代码添加如下(位于MainTask.c 519行):
/* USB********************************************************************/
case 15:
printf("USB Task Running.\n");
/*打开根文件夹*/
result = f_opendir(&DirInf, "2:/");
if (result == FR_OK)
{
printf("打开根目录成功\r\n");
}
else
{
printf("打开根目录失败(%d)\r\n", result);
return;
}
/*打开文件*/
result = f_open(&file, "armfly.txt", FA_CREATE_ALWAYS | FA_WRITE);
if (result == FR_OK)
{
printf("文件打开成功\r\n");
}
else
{
printf("文件打开失败(%d)\r\n", result);
return;
}
/*写一串数据*/
result = f_write(&file, "111", sizeof("111"), &bw);
if (result == FR_OK)
{
printf("armfly.txt 文件写入成功\r\n");
}
else
{
printf("armfly.txt 文件写入失败\r\n");
return;
}
/*关闭文件*/
f_close(&file);
break;
//---------------------------------------------第二种尝试--------------------------------------
//将原有K1按键截图的程序修改为保存在U盘(位于Main.c 330行)
sprintf(buf,"2:/PicSave/%d.bmp",Pic_Name);
OSSchedLock(&err);
/*如果SD卡中没有PicSave文件夹,会进行创建*/
result = f_mkdir("2:/PicSave");
/*创建截图*/
result = f_open(&file,buf, FA_WRITE|FA_CREATE_ALWAYS);
/*向SD卡绘制BMP图片*/
GUI_BMP_Serialize(_WriteByte2File, &file);
/*创建完成后关闭file*/
result = f_close(&file);
附件里是我修改好的代码和问题描述,麻烦帮我看下是什么原因,谢谢! |
|