Using SD cards with STM32F407VET6 boards.

Dependencies:   SDFileSystem mbed

Using SD cards with STM32F407VET6 black boards

To use the on-board micro SD card slot with this demo program connect the board pins one another with wires as indicated below.

Wiring
SPI pinsSDIO pins
PC_3<=>PD_2
PC_2<=>PC_8
PB_10<=>PC_12
PC_0<=>PC_11

main.cpp

Committer:
hudakz
Date:
2018-04-28
Revision:
0:fad6683294f8

File content as of revision 0:fad6683294f8:

#include "mbed.h"
#include "SDFileSystem.h"
#include "errno.h"

SDFileSystem    fs(PC_3, PC_2, PB_10, PC_0, "sd");  // mosi, miso, sck, cs
FILE*           fp;

/**
 * @brief
 * @note
 * @param
 * @retval
 */
int main()
{
    printf("Mounting file system...\r\n");

    int err = fs.mount();
    printf("%s\r\n", (err ? "Failed :(\r\n" : "OK\r\n"));
    if (err)
        return err;

    // Open the file.
    printf("Opening file '/sd/mytest/sdtest.txt'... ");
    fp = fopen("/sd/mytest/sdtest.txt", "w+");
    printf("%s\r\n", (!fp ? "Failed :(\r\n" : "OK\r\n"));

    if (!fp)
    {
        // Check whether directory '/sd/mytest' exists.
        printf("\r\nChecking directory '/sd/mytest'...\r\n");

        struct stat info;
        err = stat("/sd/mytest", &info);
        if (err)
        {
            printf("Directory '/sd/mytest' does not exist.\r\n");
            printf("Trying to create it...");
            err = mkdir("/sd/mytest", 0777);
            printf("%s\r\n", (err ? "Failed :(\r\n" : "OK\r\n"));
            if (err)
                return err;
        }

        // Create a new 'sdtest.txt' file.
        printf("File not found, creating a new one...\r\n");
        fp = fopen("/sd/mytest/sdtest.txt", "w+");
        printf("%s\r\n", (!fp ? "Failed :(" : "OK"));
        if (!fp)
        {
            error("error: %s (%d)\r\n", strerror(errno), -errno);
            return errno;
        }
    }

    for (int i = 0; i < 10; i++)
    {
        printf("Writing numbers (%d/%d)... ", i, 10);
        err = fprintf(fp, "    %d\r\n", i);
        if (err < 0)
        {
            printf("Fail :(\r\n");
            error("error: %s (%d)\r\n", strerror(errno), -errno);
        }
        else
            printf("OK\r\n");
    }

    printf("Writing numbers (%d/%d)... OK\r\n\r\n", 10, 10);
    err = fclose(fp);
    printf("Closing file '/sd/mytest/sdtest.txt'... ");
    printf("%s\r\n", (err ? "Failed :(\r\n" : "OK\r\n"));
    if (err)
        return err;

    return 0;
}