microSD Card control function for DISCO-F769NI based on BD_SD_DISCO_F746NG library by Roy Krikke
Dependencies: BD_SD_DISCO_F769NI BSP_DISCO_F769NI
Fork of DISCO-F746NG_BLOCK_DEVICE_WITH_FAT_FILESYSTEM_ON_SDCARD by
Please refer following my Notebook page.
/users/kenjiArai/notebook/sd-card-control-new/#
Diff: org_main.cpp
- Revision:
- 4:0f7797c2d3fe
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/org_main.cpp Sat Apr 07 02:10:18 2018 +0000 @@ -0,0 +1,117 @@ +#if 0 +/* Example file of using SD/MMC Block device Library for MBED-OS + * Copyright 2017 Roy Krikke + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include "mbed.h" +#include "FATFileSystem.h" +#include "SDBlockDeviceDISCOF746NG.h" +#include <stdio.h> +#include <errno.h> + +DigitalOut led (LED1); + +// Instantiate the Block Device for sd card on DISCO-F746NG +SDBlockDeviceDISCOF746NG bd; +FATFileSystem fs ("fs"); + +void +return_error (int ret_val) +{ + if(ret_val) + printf ("Failure. %d\r\n", ret_val); + else + printf ("done.\r\n"); +} + +void +errno_error (void* ret_val) +{ + if(ret_val == NULL) + printf (" Failure. %d \r\n", errno); + else + printf (" done.\r\n"); +} + +int +main () +{ + Serial pc (SERIAL_TX, SERIAL_RX); + pc.baud(115200); + printf("Start\n"); + + int error = 0; + printf("Welcome to the filesystem example.\r\n" + "Formatting a FAT, RAM-backed filesystem. "); + error = FATFileSystem::format(&bd); + return_error(error); + + printf("Mounting the filesystem on \"/fs\". "); + error = fs.mount(&bd); + return_error(error); + + printf("Opening a new file, numbers.txt."); + FILE* fd = fopen("/fs/numbers.txt", "w"); + errno_error(fd); + + for (int i = 0; i < 20; i++) { + printf("Writing decimal numbers to a file (%d/20)\r", i); + fprintf(fd, "%d\r\n", i); + } + printf("Writing decimal numbers to a file (20/20) done.\r\n"); + + printf("Closing file."); + fclose(fd); + printf(" done.\r\n"); + + printf("Re-opening file read-only."); + fd = fopen("/fs/numbers.txt", "r"); + errno_error(fd); + + printf("Dumping file to screen.\r\n"); + char buff[16] = { 0 }; + while(!feof (fd)) { + int size = fread(&buff[0], 1, 15, fd); + fwrite(&buff[0], 1, size, stdout); + } + printf("EOF.\r\n"); + + printf("Closing file."); + fclose(fd); + printf(" done.\r\n"); + + printf("Opening root directory."); + DIR* dir = opendir("/fs/"); + errno_error(fd); + + struct dirent* de; + printf("Printing all filenames:\r\n"); + while((de = readdir (dir)) != NULL) { + printf(" %s\r\n", &(de->d_name)[0]); + } + + printf("Closeing root directory. "); + error = closedir(dir); + return_error(error); + printf("Filesystem Demo complete.\r\n"); + + // Blink led with 2 Hz + while(true) { + led = !led; + wait (0.5); + } +} +#endif \ No newline at end of file