天天看點

stm32使用sd卡儲存資料不擦除原本資料,資料格式換行

驅動sd卡的程式,主要是使用原子的FATFS程式。

首先是向卡裡寫資料和讀資料的操作。

這些定義一般都在ff.h檔案中

先定義好

FIL fil;

FRESULT res;

UINT bww;

char buf[100];

寫讀操作:

    res=f_open (&fil,"0:/message.txt", FA_OPEN_ALWAYS|FA_WRITE);   

    f_write (&fil, "alientek test", 50, &bww);

    f_close(&fil);

    res=f_open (&fil,"0:/message.txt", FA_READ); 

    f_read (&fil, buf,100,&bww);    

但僅僅這樣是不能進行循環寫操作,每次打開都會擦除了原來的内容

要加上一句f_lseek (&fil,f_size (&fil)); 

就是這樣:

 f_open(&fil,"0:/message.txt", FA_OPEN_ALWAYS|FA_WRITE);                //打開/建立檔案對象

                f_lseek (&fil,f_size (&fil));                                                                //檔案對象的讀寫指針移動到檔案結束處

                f_write (&fil,buf,sizeof(buf),&bww);                                                //将buf中的資料寫入到message.txt

                f_close (&fil);   

這樣就不會覆寫原來的内容了。

因為寫入的資料隻能是字元串,要想寫變量,就用sprintf函數。

同時使用sprintf函數可以讓寫進去的資料進行換行。

sprintf((char*)buf,"Data is:%d \r\n",adcx);   

最後合起來就是這樣:

 sprintf((char*)buf,"Data is:%d \r\n",adcx);                                 //将資料寫入到buf

                f_open(&fil,"0:/message.txt", FA_OPEN_ALWAYS|FA_WRITE);                //打開/建立檔案對象

                f_close (&fil);