前面打了很多字,详细的描写了调试的过程,点提交提示我没有登录,有点累了,简单描述一下吧
文件创建、读写都没问题,修改文件创建时间不成功,所有想到的方法试过,时间一直都是2004/1/1,什么原因,
1、修改宏的时间,失败
2、使用例程,失败
3、自己写函数,失败
宏时间:
#ifndef DEF_WILDCARD_CHAR
#define DEF_WILDCARD_CHAR 0x2A /* 路径名的通配符 '*' */
#define DEF_SEPAR_CHAR1 0x5C /* 路径名的分隔符 '' */
#define DEF_SEPAR_CHAR2 0x2F /* 路径名的分隔符 '/' */
#define DEF_FILE_YEAR 2017 /* 默认文件日期: 2004年 */
#define DEF_FILE_MONTH 12 /* 默认文件日期: 1月 */
#define DEF_FILE_DATE 1 /* 默认文件日期: 1日 */
#endif
例程:
UINT8 SetFileCreate
time( PUINT8 iFileName, UINT16 iCreateDate, UINT16 iCreateTime )
{
UINT8 s;
printf("iFileName : %srn", iFileName);
s = CH376FileOpen( iFileName ); /* 打开文件 */
if ( s == USB_INT_SUCCESS ) {
/* 文件读写操作等... */
s = CH376DirInfoRead( ); /* 读取当前文件的目录信息FAT_DIR_INFO,将相关数据调到内存中 */
if ( s == USB_INT_SUCCESS ) {
buf[0] = (UINT8)iCreateTime; /* 文件创建的时间,低8位在前 */
buf[1] = (UINT8)(iCreateTime>>8); /* 文件创建的时间,高8位在后 */
CH376WriteOfsBlock( buf, STRUCT_OFFSET( FAT_DIR_INFO, DIR_CrtTime ), 2 ); /* 向内部缓冲区偏移地址DIR_CrtTime写入2个字节 */
buf[0] = (UINT8)iCreateDate; /* 文件创建的日期,低8位在前 */
buf[1] = (UINT8)(iCreateDate>>8); /* 文件创建的日期,高8位在后 */
CH376WriteOfsBlock( buf, STRUCT_OFFSET( FAT_DIR_INFO, DIR_CrtDate ), 2 ); /* 向内部缓冲区偏移地址DIR_CrtDate写入2个字节 */
s = CH376DirInfoSave( ); /* 保存文件的目录信息 */
if ( s == USB_INT_SUCCESS ) { /* 成功修改并保存 */
/* 文件读写操作等... */
}
s = CH376DirInfoRead( ); /* 读取当前文件的目录信息FAT_DIR_INFO,将相关数据调到内存中 */
}
CH376FileClose( FALSE ); /* 关闭文件 */
}
return( s );
}