驅動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"