
STM32写文本文件到SD卡带有USB功能在电脑上显示
我用FATFS写一个文本文件到SD卡,为什么要重启下位机,PC才能看到这个文件生成呢?我估计是没有同步,但不知道怎么办!以下是我的写文件程序:u8mkdir(void){...
我用FATFS写一个文本文件到SD卡,为什么要重启下位机,PC才能看到这个文件生成呢?
我估计是没有同步,但不知道怎么办!
以下是我的写文件程序:
u8 mkdir(void)
{
u8 i,n;
res = f_mount(0, &fs); //加载文件系统
if ( f_open(&file, "2200.txt" , FA_CREATE_NEW | FA_WRITE))//FA_OPEN_EXISTING|FA_WRITE) //打开文件
delay_ms(30);
// res = f_open(&file, "/20110526/2200.txt" , FA_OPEN_EXISTING | FA_READ); //FA_OPEN_EXISTING|FA_WRITE) //打开文件
delay_ms(30);
if(res!=FR_OK)
{
while(1);
}
// f_write(&file,databuf,7,0);
for(i=0;i<3;i++)
{
/* Move to end of the file to append data */
//res=f_lseek(&file, file->fsize); //出错
//res = f_lseek(&file,(&file)->fsize); //正确 file->fsize file是指向结构的指针
res = f_lseek(&file,file.fsize); //移动文件的读写指针
n = f_puts("hab\r\n", &file) ; //、、file.fsize file是结构体变量 写文件内容
if(n<1) //判断磁盘写 是否成功
{
break;
}
}
// int ff_cre_syncobj(BYTE, _SYNC_t*); //创建同步对象
// int ff_req_grant(_SYNC_t); //申请同步对象
// void ff_rel_grant(_SYNC_t); //释放同步对象
//write_time = Time_GetUnixTime() - write_time;
/* Close open files */
f_close(&file); //关闭文件
f_mount(0, NULL); //加载文件系统
return 0;
}
我现在搞了一个软件复位USB重新枚举可以了,但是这样搞产生了另一个更大的问题
因为我有个上位机软件是放在SD卡的,重新复位过后这个软件就关掉了啊!,我不想这样! 展开
我估计是没有同步,但不知道怎么办!
以下是我的写文件程序:
u8 mkdir(void)
{
u8 i,n;
res = f_mount(0, &fs); //加载文件系统
if ( f_open(&file, "2200.txt" , FA_CREATE_NEW | FA_WRITE))//FA_OPEN_EXISTING|FA_WRITE) //打开文件
delay_ms(30);
// res = f_open(&file, "/20110526/2200.txt" , FA_OPEN_EXISTING | FA_READ); //FA_OPEN_EXISTING|FA_WRITE) //打开文件
delay_ms(30);
if(res!=FR_OK)
{
while(1);
}
// f_write(&file,databuf,7,0);
for(i=0;i<3;i++)
{
/* Move to end of the file to append data */
//res=f_lseek(&file, file->fsize); //出错
//res = f_lseek(&file,(&file)->fsize); //正确 file->fsize file是指向结构的指针
res = f_lseek(&file,file.fsize); //移动文件的读写指针
n = f_puts("hab\r\n", &file) ; //、、file.fsize file是结构体变量 写文件内容
if(n<1) //判断磁盘写 是否成功
{
break;
}
}
// int ff_cre_syncobj(BYTE, _SYNC_t*); //创建同步对象
// int ff_req_grant(_SYNC_t); //申请同步对象
// void ff_rel_grant(_SYNC_t); //释放同步对象
//write_time = Time_GetUnixTime() - write_time;
/* Close open files */
f_close(&file); //关闭文件
f_mount(0, NULL); //加载文件系统
return 0;
}
我现在搞了一个软件复位USB重新枚举可以了,但是这样搞产生了另一个更大的问题
因为我有个上位机软件是放在SD卡的,重新复位过后这个软件就关掉了啊!,我不想这样! 展开
展开全部
你的电脑自带的读卡插槽的驱动需要重装。或者是需要更新。
更多追问追答
追问
不是吧!
不行,我试过了!
追答
那你的电脑是w7还的xp?。。。如果是w7的你换xp看看
如果还不行的话。。。你还是请大虾了。。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询