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_close(&fil);

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

要加上一句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_lseek (&fil,f_size (&fil));                                                                //文件對象的讀寫指針移動到文件結束處
                f_write (&fil,buf,sizeof(buf),&bww);                                                //將buf中的數據寫入到message.txt
                f_close (&fil);       

有時爲了獲得多個數據可以用函數memset(buf,0,sizeof(buf));來清除數組的內容。

頭文件爲#include "string.h"
    

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章