我使用STM32+CH376实现U盘文件的读写。目前遇到文件大小总是固定为1的问题。
主代码如下:
uint8_t AppZndbFile2UsbDiskMain(void)
{
sDateTime dt;
char filename[15];
char testnr[18];
uint16_t rsize;
if(TRUE == AppZndbFile2UsbInit()) /* 已经初始化 */
{
if(TRUE == CheckTimer(eTMR_UsbSpace))
{
StartTimer(eTMR_UsbSpace,1000);
if(FALSE == UsbDiskIn)/* 没有检测到U盘 */
{
UsbDiskIn = DrvCh376DiskConnect();/* 检测到U盘已经插入 */
if(TRUE==UsbDiskIn)
{
if(TRUE == DrvCh376DiskMount()) /* U盘枚举成功 */
{
dt = AppZndbDataRtcTime();
//sprintf(filename,"%02d%02d%02d%02d%02d%02d.JL",dt.Year_U8,dt.Month_U8,dt.Day_U8,dt.Hour_U8,dt.Min_U8,dt.Sec_U8);
sprintf(filename,"/%c%c%02d%02d%02d.REC\0",DecTo36Char(dt.Month_U8),DecTo36Char(dt.Day_U8),dt.Hour_U8,dt.Min_U8,dt.Sec_U8);
if(TRUE == DrvCh376FileCreate((uint8_t*)filename))/* 文件创建完成 */
{
sprintf(testnr,"0123456789ABCDEF\r\n");
DrvCh376FileWrite((uint8_t *)testnr,16,NULL);
DrvCh376FileClose(TRUE);
DelayMS(5);
}
}
else
{
UsbDiskIn = FALSE;
}
}
}
else
{
if(FALSE == DrvCh376DiskConnect()) UsbDiskIn = FALSE;
}
}
}
return UsbDiskIn;
}
上面函数DrvCh376****均直接采用示例里面的FILE_SYS.C的原型,未做任何更改。
执行完成后,U盘可以看到文件名,文件大小为1字节,利用Winhex直接查看U盘。可以看到写入的16个字节。
说明文件内容已经写入,但文件的大小并未更新。
后右增加了设置文件大小指令,将FileClose的参数改为FALSE。文件大小仍然为1字节。
这个情况该如何解决?