我使用STM32+CH376實(shí)現(xiàn)U盤(pán)文件的讀寫(xiě)。目前遇到文件大小總是固定為1的問(wèn)題。
主代碼如下:
uint8_t AppZndbFile2UsbDiskMain(void)
{
? ? sDateTime dt;
? ? char filename[15];
? ? char testnr[18];
? ? uint16_t rsize;
? ? if(TRUE == AppZndbFile2UsbInit()) /* 已經(jīng)初始化 */
? ? {
? ? ? ? if(TRUE == CheckTimer(eTMR_UsbSpace))
? ? ? ? {
? ? ? ? ? ? StartTimer(eTMR_UsbSpace,1000);
? ? ? ? ? ? if(FALSE == UsbDiskIn)/* 沒(méi)有檢測(cè)到U盤(pán) */
? ? ? ? ? ? {
? ? ? ? ? ? ? ? UsbDiskIn = DrvCh376DiskConnect();/* 檢測(cè)到U盤(pán)已經(jīng)插入 */
? ? ? ? ? ? ? ? if(TRUE==UsbDiskIn)
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? if(TRUE == DrvCh376DiskMount()) ? /* U盤(pán)枚舉成功 */
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? 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))/* 文件創(chuàng)建完成 */
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? 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;
}
上面函數(shù)DrvCh376****均直接采用示例里面的FILE_SYS.C的原型,未做任何更改。
執(zhí)行完成后,U盤(pán)可以看到文件名,文件大小為1字節(jié),利用Winhex直接查看U盤(pán)??梢钥吹綄?xiě)入的16個(gè)字節(jié)。
說(shuō)明文件內(nèi)容已經(jīng)寫(xiě)入,但文件的大小并未更新。
后右增加了設(shè)置文件大小指令,將FileClose的參數(shù)改為FALSE。文件大小仍然為1字節(jié)。
這個(gè)情況該如何解決?