Toan Dang / Mbed 2 deprecated fatfs

Dependencies:   mbed

Committer:
danghuutoan
Date:
Wed Sep 30 10:12:16 2015 +0000
Revision:
0:f24ba3a89ec1
read and write file successfully

Who changed what in which revision?

UserRevisionLine numberNew contents of line
danghuutoan 0:f24ba3a89ec1 1 #include "mbed.h"
danghuutoan 0:f24ba3a89ec1 2 #include "diskio.h"
danghuutoan 0:f24ba3a89ec1 3 #include "ff.h"
danghuutoan 0:f24ba3a89ec1 4 Serial pc(USBTX, USBRX); // tx, rx
danghuutoan 0:f24ba3a89ec1 5 Ticker flipper;
danghuutoan 0:f24ba3a89ec1 6 FATFS FatFs; /* Work area (file system object) for logical drive */
danghuutoan 0:f24ba3a89ec1 7 void _10ms_task (void){
danghuutoan 0:f24ba3a89ec1 8 disk_timerproc();
danghuutoan 0:f24ba3a89ec1 9 }
danghuutoan 0:f24ba3a89ec1 10
danghuutoan 0:f24ba3a89ec1 11 FRESULT FATFS_DriveSize(uint32_t* total, uint32_t* free) {
danghuutoan 0:f24ba3a89ec1 12 FATFS *fs;
danghuutoan 0:f24ba3a89ec1 13 DWORD fre_clust;
danghuutoan 0:f24ba3a89ec1 14 FRESULT res;
danghuutoan 0:f24ba3a89ec1 15
danghuutoan 0:f24ba3a89ec1 16 /* Get volume information and free clusters of drive */
danghuutoan 0:f24ba3a89ec1 17 res = f_getfree("", &fre_clust, &fs);
danghuutoan 0:f24ba3a89ec1 18 if (res != FR_OK) {
danghuutoan 0:f24ba3a89ec1 19 return res;
danghuutoan 0:f24ba3a89ec1 20 }
danghuutoan 0:f24ba3a89ec1 21
danghuutoan 0:f24ba3a89ec1 22 /* Get total sectors and free sectors */
danghuutoan 0:f24ba3a89ec1 23 *total = (fs->n_fatent - 2) * fs->csize / 2;
danghuutoan 0:f24ba3a89ec1 24 *free = fre_clust * fs->csize / 2;
danghuutoan 0:f24ba3a89ec1 25
danghuutoan 0:f24ba3a89ec1 26 /* Return OK */
danghuutoan 0:f24ba3a89ec1 27 return FR_OK;
danghuutoan 0:f24ba3a89ec1 28 }
danghuutoan 0:f24ba3a89ec1 29 int main() {
danghuutoan 0:f24ba3a89ec1 30 FIL fil; /* File object */
danghuutoan 0:f24ba3a89ec1 31 FRESULT fr; /* FatFs return code */
danghuutoan 0:f24ba3a89ec1 32 char line[82]; /* Line buffer */
danghuutoan 0:f24ba3a89ec1 33 uint32_t total = 0,free = 0;
danghuutoan 0:f24ba3a89ec1 34 int res =0;
danghuutoan 0:f24ba3a89ec1 35 flipper.attach(&_10ms_task, 0.001); // the address of the function to be attached (flip) and the interval (2 seconds)
danghuutoan 0:f24ba3a89ec1 36 pc.printf("Hello World!\r\n");
danghuutoan 0:f24ba3a89ec1 37
danghuutoan 0:f24ba3a89ec1 38 /* Register work area to the default drive */
danghuutoan 0:f24ba3a89ec1 39 fr = f_mount(&FatFs,(TCHAR*) "0:", 1);
danghuutoan 0:f24ba3a89ec1 40 pc.printf("mount return %d\r\n", fr);
danghuutoan 0:f24ba3a89ec1 41 /* Open a text file */
danghuutoan 0:f24ba3a89ec1 42 fr = f_open(&fil, "message1.txt", FA_OPEN_ALWAYS | FA_WRITE);
danghuutoan 0:f24ba3a89ec1 43 pc.printf("open return %d \r\n", fr);
danghuutoan 0:f24ba3a89ec1 44 fr = f_sync(&fil);
danghuutoan 0:f24ba3a89ec1 45 FATFS_DriveSize(&total,&free);
danghuutoan 0:f24ba3a89ec1 46 pc.printf("total %d free %d \r\n", total, free);
danghuutoan 0:f24ba3a89ec1 47 f_lseek(&fil, f_size(&fil));
danghuutoan 0:f24ba3a89ec1 48 res = f_printf(&fil,"hello world\r\n");
danghuutoan 0:f24ba3a89ec1 49 if(res > 0){
danghuutoan 0:f24ba3a89ec1 50 pc.printf("write success \r\n");
danghuutoan 0:f24ba3a89ec1 51 }
danghuutoan 0:f24ba3a89ec1 52 else{
danghuutoan 0:f24ba3a89ec1 53 pc.printf("write failed \r\n");
danghuutoan 0:f24ba3a89ec1 54 }
danghuutoan 0:f24ba3a89ec1 55 fr = f_sync(&fil);
danghuutoan 0:f24ba3a89ec1 56 f_close(&fil);
danghuutoan 0:f24ba3a89ec1 57
danghuutoan 0:f24ba3a89ec1 58 /* Register work area to the default drive */
danghuutoan 0:f24ba3a89ec1 59 f_mount(&FatFs,(TCHAR*) "0:", 1);
danghuutoan 0:f24ba3a89ec1 60
danghuutoan 0:f24ba3a89ec1 61 /* Open a text file */
danghuutoan 0:f24ba3a89ec1 62 fr = f_open(&fil, "message1.txt", FA_READ);
danghuutoan 0:f24ba3a89ec1 63 if (fr) return (int)fr;
danghuutoan 0:f24ba3a89ec1 64
danghuutoan 0:f24ba3a89ec1 65 /* Read all lines and display it */
danghuutoan 0:f24ba3a89ec1 66 while (f_gets(line, sizeof line, &fil))
danghuutoan 0:f24ba3a89ec1 67 pc.printf(line);
danghuutoan 0:f24ba3a89ec1 68
danghuutoan 0:f24ba3a89ec1 69 /* Close the file */
danghuutoan 0:f24ba3a89ec1 70 f_close(&fil);
danghuutoan 0:f24ba3a89ec1 71 while(1) {
danghuutoan 0:f24ba3a89ec1 72 }
danghuutoan 0:f24ba3a89ec1 73 }