Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp@0:f24ba3a89ec1, 2015-09-30 (annotated)
- 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?
| User | Revision | Line number | New 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 | } |