一 问题 最近使用到了文件系统的读写,中间遇到了一些问题值得深思。 二 源码解析 创建文件:
FRESULT res; do { sprintf(filename,"/sensor_signal/sensor_%d.bin",file_num++); mprintf("filename is:%s \n\r",filename); res=f_open(&file, filename, FA_CREATE_NEW | FA_WRITE); }while(res!=FR_OK);
写文件:
for (uint i = 0; i < 255; i++) { /* code */ memset(TF_Buffer,i,TF_Buffer_Size); f_write( &file, TF_Buffer , TF_Buffer_Size, &bw); osDelay(20); } f_close(&file);
读文件:
res=f_open(&file, filename, FA_READ); while (1) { /* code */ memset(TF_Buffer,0x00,TF_Buffer——Size); osDelay(200); FRESULT res = f_read( &file, TF_Buffer , TF_Buffer_Size, &bw); if(bw < 1) { mprintf("file read over \n\r"); break; } else { } mprintf("file read len is:%d \n\r",bw); dump8(TF_Buffer,40); osDelay(200); }三 总结 A.文件执行了 f_close(&file); 才会被存储到sd卡中。 B 读文件只能从sd卡中读,无法从缓存中读取。 标签:读写操作,Buffer,res,文件系统,filename,stm32,bw,file,TF From: https://www.cnblogs.com/dylancao/p/17330534.html