STM32F103C ----- SDFat Library

Post here first, or if you can't find a relevant section!
Post Reply
jim_patrick
Posts: 10
Joined: Tue Jul 07, 2020 12:23 pm

STM32F103C ----- SDFat Library

Post by jim_patrick »

Hello all,

I'm trying to get the SDFat library to work on my STM32, I've read this library is much faster than the original SD library, and I need to write data while the chip is doing a lot of work so this sounds like the library of choice.

In the examples folder for SDFat there is a sketch called 'STM32TEST' (below) and simply trying to compile it I get the following error:

"no matching function for call to 'SdFat::SdFat(SPIClass*)'"

relating to this line in the exmaple: "SdFat sd2(&SPI_2);"

Unfortunately I just don't understand what that means, if anyone had any ideas or suggestions that would be appreciated.

Thanks.

Code: Select all

/*
 * Example use of two SPI ports on an STM32 board.
 * Note SPI speed is limited to 18 MHz.
 */
#include <SPI.h>
#include "SdFat.h"
#include "FreeStack.h"

// set ENABLE_EXTENDED_TRANSFER_CLASS non-zero to use faster EX classes

// Use first SPI port
SdFat sd1;
// SdFatEX sd1;
const uint8_t SD1_CS = PA4;  // chip select for sd1

// Use second SPI port
SPIClass SPI_2(2);
SdFat sd2(&SPI_2);
// SdFatEX sd2(&SPI_2);

const uint8_t SD2_CS = PB12;   // chip select for sd2

const uint8_t BUF_DIM = 100;
uint8_t buf[BUF_DIM];

const uint32_t FILE_SIZE = 1000000;
const uint16_t NWRITE = FILE_SIZE/BUF_DIM;
//------------------------------------------------------------------------------
// print error msg, any SD error codes, and halt.
// store messages in flash
#define errorExit(msg) errorHalt(F(msg))
#define initError(msg) initErrorHalt(F(msg))
//------------------------------------------------------------------------------
void setup() {
  Serial.begin(9600);
  // Wait for USB Serial 
  while (!Serial) {
  }

  // fill buffer with known data
  for (size_t i = 0; i < sizeof(buf); i++) {
    buf[i] = i;
  }

  Serial.println(F("type any character to start"));
  while (!Serial.available()) {
  }
  Serial.print(F("FreeStack: "));
  Serial.println(FreeStack());

  // initialize the first card
  if (!sd1.begin(SD1_CS, SD_SCK_MHZ(18))) {
    sd1.initError("sd1:");
  }
  // create Dir1 on sd1 if it does not exist
  if (!sd1.exists("/Dir1")) {
    if (!sd1.mkdir("/Dir1")) {
      sd1.errorExit("sd1.mkdir");
    }
  }
  // initialize the second card
  if (!sd2.begin(SD2_CS, SD_SCK_MHZ(18))) {
    sd2.initError("sd2:");
  }
// create Dir2 on sd2 if it does not exist
  if (!sd2.exists("/Dir2")) {
    if (!sd2.mkdir("/Dir2")) {
      sd2.errorExit("sd2.mkdir");
    }
  }
  // list root directory on both cards
  Serial.println(F("------sd1 root-------"));
  sd1.ls();
  Serial.println(F("------sd2 root-------"));
  sd2.ls();

  // make /Dir1 the default directory for sd1
  if (!sd1.chdir("/Dir1")) {
    sd1.errorExit("sd1.chdir");
  }
  // remove test.bin from /Dir1 directory of sd1
  if (sd1.exists("test.bin")) {
    if (!sd1.remove("test.bin")) {
      sd2.errorExit("remove test.bin");
    }
  }
  // make /Dir2 the default directory for sd2
  if (!sd2.chdir("/Dir2")) {
    sd2.errorExit("sd2.chdir");
  }
  // remove rename.bin from /Dir2 directory of sd2
  if (sd2.exists("rename.bin")) {
    if (!sd2.remove("rename.bin")) {
      sd2.errorExit("remove rename.bin");
    }
  }
  // list current directory on both cards
  Serial.println(F("------sd1 Dir1-------"));
  sd1.ls();
  Serial.println(F("------sd2 Dir2-------"));
  sd2.ls();
  Serial.println(F("---------------------"));

  // set the current working directory for open() to sd1
  sd1.chvol();

  // create or open /Dir1/test.bin and truncate it to zero length
  SdFile file1;
  if (!file1.open("test.bin", O_RDWR | O_CREAT | O_TRUNC)) {
    sd1.errorExit("file1");
  }
  Serial.println(F("Writing test.bin to sd1"));

  // write data to /Dir1/test.bin on sd1
  for (uint16_t i = 0; i < NWRITE; i++) {
    if (file1.write(buf, sizeof(buf)) != sizeof(buf)) {
      sd1.errorExit("sd1.write");
    }
  }
  // set the current working directory for open() to sd2
  sd2.chvol();

  // create or open /Dir2/copy.bin and truncate it to zero length
  SdFile file2;
  if (!file2.open("copy.bin", O_WRONLY | O_CREAT | O_TRUNC)) {
    sd2.errorExit("file2");
  }
  Serial.println(F("Copying test.bin to copy.bin"));

  // copy file1 to file2
  file1.rewind();
  uint32_t t = millis();

  while (1) {
    int n = file1.read(buf, sizeof(buf));
    if (n < 0) {
      sd1.errorExit("read1");
    }
    if (n == 0) {
      break;
    }
    if ((int)file2.write(buf, n) != n) {
      sd2.errorExit("write2");
    }
  }
  t = millis() - t;
  Serial.print(F("File size: "));
  Serial.println(file2.fileSize());
  Serial.print(F("Copy time: "));
  Serial.print(t);
  Serial.println(F(" millis"));
  // close test.bin
  file1.close();
  file2.close(); 
  // list current directory on both cards
  Serial.println(F("------sd1 -------"));
  sd1.ls("/", LS_R | LS_DATE | LS_SIZE);
  Serial.println(F("------sd2 -------"));
  sd2.ls("/", LS_R | LS_DATE | LS_SIZE);
  Serial.println(F("---------------------"));
  Serial.println(F("Renaming copy.bin"));
  // rename the copy
  if (!sd2.rename("copy.bin", "rename.bin")) {
    sd2.errorExit("sd2.rename");
  }
  // list current directory on both cards
  Serial.println(F("------sd1 -------"));
  sd1.ls("/", LS_R | LS_DATE | LS_SIZE);
  Serial.println(F("------sd2 -------"));
  sd2.ls("/", LS_R | LS_DATE | LS_SIZE);
  Serial.println(F("---------------------"));
  Serial.println(F("Done"));
}
//------------------------------------------------------------------------------
void loop() {}
stevestrong
Posts: 502
Joined: Fri Dec 27, 2019 4:53 pm
Answers: 8
Location: Munich, Germany
Contact:

Re: STM32F103C ----- SDFat Library

Post by stevestrong »

Which core do you use?
viewtopic.php?f=2&t=301
jim_patrick
Posts: 10
Joined: Tue Jul 07, 2020 12:23 pm

Re: STM32F103C ----- SDFat Library

Post by jim_patrick »

STM32F103C8 Blue Pill
stevestrong
Posts: 502
Joined: Fri Dec 27, 2019 4:53 pm
Answers: 8
Location: Munich, Germany
Contact:

Re: STM32F103C ----- SDFat Library

Post by stevestrong »

I asked about the core you use, not the board.
Have you read the info behind the link?
jim_patrick
Posts: 10
Joined: Tue Jul 07, 2020 12:23 pm

Re: STM32F103C ----- SDFat Library

Post by jim_patrick »

I'm using #1, the Roger Clark files from Github. Although I seem to be using an older version (that works) whereas when I download the latest zip the sketches won't compile. There is no obvious error message, just says exit 1.
stevestrong
Posts: 502
Joined: Fri Dec 27, 2019 4:53 pm
Answers: 8
Location: Munich, Germany
Contact:

Re: STM32F103C ----- SDFat Library

Post by stevestrong »

You can turn verbose on in Arduino IDE so that you can see the compilation warnings and errors. Then post those error here.
jim_patrick
Posts: 10
Joined: Tue Jul 07, 2020 12:23 pm

Re: STM32F103C ----- SDFat Library

Post by jim_patrick »

Code: Select all

n file included from /Users/james/Documents/Arduino/libraries/SdFat/SdFat.h:38:0,
                 from /Users/james/Documents/Arduino/STM32_SDFat/STM32_SDFat.ino:6:
/Users/james/Documents/Arduino/libraries/SdFat/SdFile.h:44:7: error: conflicting return type specified for 'virtual int SdFile::write(const char*)'
   int write(const char* str);

       ^
In file included from /Users/james/Documents/Arduino/hardware/Arduino_STM32/STM32F1/cores/maple/HardwareSerial.h:38:0,
                 from /Users/james/Documents/Arduino/hardware/Arduino_STM32/STM32F1/cores/maple/wirish.h:69,
                 from /Users/james/Documents/Arduino/hardware/Arduino_STM32/STM32F1/cores/maple/Arduino.h:30,
                 from /var/folders/94/f3hz7ssd1z57fv4jg6cnhy480000gn/T/arduino_build_4511/sketch/STM32_SDFat.ino.cpp:1:
/Users/james/Documents/Arduino/hardware/Arduino_STM32/STM32F1/cores/maple/Print.h:40:20: error:   overriding 'virtual size_t Print::write(const char*)'
     virtual size_t write(const char *str);
                    ^
STM32_SDFat:11:17: error: no matching function for call to 'SdFat::SdFat(SPIClass*)'
 SdFat sd2(&SPI_2);
                 ^
/Users/james/Documents/Arduino/STM32_SDFat/STM32_SDFat.ino:11:17: note: candidates are:
In file included from /Users/james/Documents/Arduino/STM32_SDFat/STM32_SDFat.ino:6:0:
/Users/james/Documents/Arduino/libraries/SdFat/SdFat.h:49:3: note: SdFat::SdFat()
   SdFat() {}

   ^
/Users/james/Documents/Arduino/libraries/SdFat/SdFat.h:49:3: note:   candidate expects 0 arguments, 1 provided
/Users/james/Documents/Arduino/libraries/SdFat/SdFat.h:47:7: note: constexpr SdFat::SdFat(const SdFat&)
 class SdFat {

       ^
/Users/james/Documents/Arduino/libraries/SdFat/SdFat.h:47:7: note:   no known conversion for argument 1 from 'SPIClass*' to 'const SdFat&'
/Users/james/Documents/Arduino/libraries/SdFat/SdFat.h:47:7: note: constexpr SdFat::SdFat(SdFat&&)
/Users/james/Documents/Arduino/libraries/SdFat/SdFat.h:47:7: note:   no known conversion for argument 1 from 'SPIClass*' to 'SdFat&&'
/Users/james/Documents/Arduino/STM32_SDFat/STM32_SDFat.ino: In function 'void setup()':
STM32_SDFat:43:39: error: 'SD_SCK_MHZ' was not declared in this scope
   if (!sd2.begin(SD2_CS, SD_SCK_MHZ(18))) {
                                       ^
STM32_SDFat:25:44: error: no matching function for call to 'SdFat::initErrorHalt(const __FlashStringHelper*)'
 #define initError(msg) initErrorHalt(F(msg))
                                            ^
/Users/james/Documents/Arduino/STM32_SDFat/STM32_SDFat.ino:44:9: note: in expansion of macro 'initError'
     sd2.initError("sd2:");
         ^
/Users/james/Documents/Arduino/STM32_SDFat/STM32_SDFat.ino:25:44: note: candidates are:
 #define initError(msg) initErrorHalt(F(msg))
                                            ^
/Users/james/Documents/Arduino/STM32_SDFat/STM32_SDFat.ino:44:9: note: in expansion of macro 'initError'
     sd2.initError("sd2:");
         ^
In file included from /Users/james/Documents/Arduino/STM32_SDFat/STM32_SDFat.ino:6:0:
/Users/james/Documents/Arduino/libraries/SdFat/SdFat.h:62:8: note: void SdFat::initErrorHalt()
   void initErrorHalt();

        ^
/Users/james/Documents/Arduino/libraries/SdFat/SdFat.h:62:8: note:   candidate expects 0 arguments, 1 provided
/Users/james/Documents/Arduino/libraries/SdFat/SdFat.h:63:8: note: void SdFat::initErrorHalt(const char*)
   void initErrorHalt(char const *msg);

        ^
/Users/james/Documents/Arduino/libraries/SdFat/SdFat.h:63:8: note:   no known conversion for argument 1 from 'const __FlashStringHelper*' to 'const char*'
STM32_SDFat:24:40: error: no matching function for call to 'SdFat::errorHalt(const __FlashStringHelper*)'
 #define errorExit(msg) errorHalt(F(msg))
                                        ^
/Users/james/Documents/Arduino/STM32_SDFat/STM32_SDFat.ino:49:11: note: in expansion of macro 'errorExit'
       sd2.errorExit("sd2.mkdir");
           ^
/Users/james/Documents/Arduino/STM32_SDFat/STM32_SDFat.ino:24:40: note: candidates are:
 #define errorExit(msg) errorHalt(F(msg))
                                        ^
/Users/james/Documents/Arduino/STM32_SDFat/STM32_SDFat.ino:49:11: note: in expansion of macro 'errorExit'
       sd2.errorExit("sd2.mkdir");
           ^
In file included from /Users/james/Documents/Arduino/STM32_SDFat/STM32_SDFat.ino:6:0:
/Users/james/Documents/Arduino/libraries/SdFat/SdFat.h:55:8: note: void SdFat::errorHalt()
   void errorHalt();

        ^
/Users/james/Documents/Arduino/libraries/SdFat/SdFat.h:55:8: note:   candidate expects 0 arguments, 1 provided
/Users/james/Documents/Arduino/libraries/SdFat/SdFat.h:56:8: note: void SdFat::errorHalt(const char*)
   void errorHalt(char const *msg);

        ^
/Users/james/Documents/Arduino/libraries/SdFat/SdFat.h:56:8: note:   no known conversion for argument 1 from 'const __FlashStringHelper*' to 'const char*'
STM32_SDFat:24:40: error: no matching function for call to 'SdFat::errorHalt(const __FlashStringHelper*)'
 #define errorExit(msg) errorHalt(F(msg))
                                        ^
/Users/james/Documents/Arduino/STM32_SDFat/STM32_SDFat.ino:58:9: note: in expansion of macro 'errorExit'
     sd2.errorExit("sd2.chdir");
         ^
/Users/james/Documents/Arduino/STM32_SDFat/STM32_SDFat.ino:24:40: note: candidates are:
 #define errorExit(msg) errorHalt(F(msg))
                                        ^
/Users/james/Documents/Arduino/STM32_SDFat/STM32_SDFat.ino:58:9: note: in expansion of macro 'errorExit'
     sd2.errorExit("sd2.chdir");
         ^
In file included from /Users/james/Documents/Arduino/STM32_SDFat/STM32_SDFat.ino:6:0:
/Users/james/Documents/Arduino/libraries/SdFat/SdFat.h:55:8: note: void SdFat::errorHalt()
   void errorHalt();

        ^
/Users/james/Documents/Arduino/libraries/SdFat/SdFat.h:55:8: note:   candidate expects 0 arguments, 1 provided
/Users/james/Documents/Arduino/libraries/SdFat/SdFat.h:56:8: note: void SdFat::errorHalt(const char*)
   void errorHalt(char const *msg);

        ^
/Users/james/Documents/Arduino/libraries/SdFat/SdFat.h:56:8: note:   no known conversion for argument 1 from 'const __FlashStringHelper*' to 'const char*'
STM32_SDFat:24:40: error: no matching function for call to 'SdFat::errorHalt(const __FlashStringHelper*)'
 #define errorExit(msg) errorHalt(F(msg))
                                        ^
/Users/james/Documents/Arduino/STM32_SDFat/STM32_SDFat.ino:63:11: note: in expansion of macro 'errorExit'
       sd2.errorExit("remove rename.bin");
           ^
/Users/james/Documents/Arduino/STM32_SDFat/STM32_SDFat.ino:24:40: note: candidates are:
 #define errorExit(msg) errorHalt(F(msg))
                                        ^
/Users/james/Documents/Arduino/STM32_SDFat/STM32_SDFat.ino:63:11: note: in expansion of macro 'errorExit'
       sd2.errorExit("remove rename.bin");
           ^
In file included from /Users/james/Documents/Arduino/STM32_SDFat/STM32_SDFat.ino:6:0:
/Users/james/Documents/Arduino/libraries/SdFat/SdFat.h:55:8: note: void SdFat::errorHalt()
   void errorHalt();

        ^
/Users/james/Documents/Arduino/libraries/SdFat/SdFat.h:55:8: note:   candidate expects 0 arguments, 1 provided
/Users/james/Documents/Arduino/libraries/SdFat/SdFat.h:56:8: note: void SdFat::errorHalt(const char*)
   void errorHalt(char const *msg);

        ^
/Users/james/Documents/Arduino/libraries/SdFat/SdFat.h:56:8: note:   no known conversion for argument 1 from 'const __FlashStringHelper*' to 'const char*'
STM32_SDFat:24:40: error: no matching function for call to 'SdFat::errorHalt(const __FlashStringHelper*)'
 #define errorExit(msg) errorHalt(F(msg))
                                        ^
/Users/james/Documents/Arduino/STM32_SDFat/STM32_SDFat.ino:77:9: note: in expansion of macro 'errorExit'
     sd2.errorExit("file2");
         ^
/Users/james/Documents/Arduino/STM32_SDFat/STM32_SDFat.ino:24:40: note: candidates are:
 #define errorExit(msg) errorHalt(F(msg))
                                        ^
/Users/james/Documents/Arduino/STM32_SDFat/STM32_SDFat.ino:77:9: note: in expansion of macro 'errorExit'
     sd2.errorExit("file2");
         ^
In file included from /Users/james/Documents/Arduino/STM32_SDFat/STM32_SDFat.ino:6:0:
/Users/james/Documents/Arduino/libraries/SdFat/SdFat.h:55:8: note: void SdFat::errorHalt()
   void errorHalt();

        ^
/Users/james/Documents/Arduino/libraries/SdFat/SdFat.h:55:8: note:   candidate expects 0 arguments, 1 provided
/Users/james/Documents/Arduino/libraries/SdFat/SdFat.h:56:8: note: void SdFat::errorHalt(const char*)
   void errorHalt(char const *msg);

        ^
/Users/james/Documents/Arduino/libraries/SdFat/SdFat.h:56:8: note:   no known conversion for argument 1 from 'const __FlashStringHelper*' to 'const char*'
STM32_SDFat:82:3: error: 'file1' was not declared in this scope
   file1.rewind();
   ^
STM32_SDFat:88:7: error: 'sd1' was not declared in this scope
       sd1.errorExit("read1");
       ^
STM32_SDFat:24:40: error: no matching function for call to 'SdFat::errorHalt(const __FlashStringHelper*)'
 #define errorExit(msg) errorHalt(F(msg))
                                        ^
/Users/james/Documents/Arduino/STM32_SDFat/STM32_SDFat.ino:94:11: note: in expansion of macro 'errorExit'
       sd2.errorExit("write2");
           ^
/Users/james/Documents/Arduino/STM32_SDFat/STM32_SDFat.ino:24:40: note: candidates are:
 #define errorExit(msg) errorHalt(F(msg))
                                        ^
/Users/james/Documents/Arduino/STM32_SDFat/STM32_SDFat.ino:94:11: note: in expansion of macro 'errorExit'
       sd2.errorExit("write2");
           ^
In file included from /Users/james/Documents/Arduino/STM32_SDFat/STM32_SDFat.ino:6:0:
/Users/james/Documents/Arduino/libraries/SdFat/SdFat.h:55:8: note: void SdFat::errorHalt()
   void errorHalt();

        ^
/Users/james/Documents/Arduino/libraries/SdFat/SdFat.h:55:8: note:   candidate expects 0 arguments, 1 provided
/Users/james/Documents/Arduino/libraries/SdFat/SdFat.h:56:8: note: void SdFat::errorHalt(const char*)
   void errorHalt(char const *msg);

        ^
/Users/james/Documents/Arduino/libraries/SdFat/SdFat.h:56:8: note:   no known conversion for argument 1 from 'const __FlashStringHelper*' to 'const char*'
STM32_SDFat:110:39: error: no matching function for call to 'SdFat::ls(const char [2], int)'
   sd2.ls("/", LS_R | LS_DATE | LS_SIZE);
                                       ^
/Users/james/Documents/Arduino/STM32_SDFat/STM32_SDFat.ino:110:39: note: candidates are:
In file included from /Users/james/Documents/Arduino/STM32_SDFat/STM32_SDFat.ino:6:0:
/Users/james/Documents/Arduino/libraries/SdFat/SdFat.h:66:8: note: void SdFat::ls(uint8_t)
   void ls(uint8_t flags = 0);

        ^
/Users/james/Documents/Arduino/libraries/SdFat/SdFat.h:66:8: note:   candidate expects 1 argument, 2 provided
/Users/james/Documents/Arduino/libraries/SdFat/SdFat.h:67:8: note: void SdFat::ls(Print*, uint8_t)
   void ls(Print* pr, uint8_t flags = 0);

        ^
/Users/james/Documents/Arduino/libraries/SdFat/SdFat.h:67:8: note:   no known conversion for argument 1 from 'const char [2]' to 'Print*'
STM32_SDFat:24:40: error: no matching function for call to 'SdFat::errorHalt(const __FlashStringHelper*)'
 #define errorExit(msg) errorHalt(F(msg))
                                        ^
/Users/james/Documents/Arduino/STM32_SDFat/STM32_SDFat.ino:115:9: note: in expansion of macro 'errorExit'
     sd2.errorExit("sd2.rename");
         ^
/Users/james/Documents/Arduino/STM32_SDFat/STM32_SDFat.ino:24:40: note: candidates are:
 #define errorExit(msg) errorHalt(F(msg))
                                        ^
/Users/james/Documents/Arduino/STM32_SDFat/STM32_SDFat.ino:115:9: note: in expansion of macro 'errorExit'
     sd2.errorExit("sd2.rename");
         ^
In file included from /Users/james/Documents/Arduino/STM32_SDFat/STM32_SDFat.ino:6:0:
/Users/james/Documents/Arduino/libraries/SdFat/SdFat.h:55:8: note: void SdFat::errorHalt()
   void errorHalt();

        ^
/Users/james/Documents/Arduino/libraries/SdFat/SdFat.h:55:8: note:   candidate expects 0 arguments, 1 provided
/Users/james/Documents/Arduino/libraries/SdFat/SdFat.h:56:8: note: void SdFat::errorHalt(const char*)
   void errorHalt(char const *msg);

        ^
Multiple libraries were found for "SPI.h"
 Used: /Users/james/Documents/Arduino/hardware/Arduino_STM32/STM32F1/libraries/SPI
Multiple libraries were found for "SdFat.h"
 Used: /Users/james/Documents/Arduino/libraries/SdFat
 Not used: /Users/james/Documents/Arduino/libraries/SdFat-master
Multiple libraries were found for "FreeStack.h"
/Users/james/Documents/Arduino/libraries/SdFat/SdFat.h:56:8: note:   no known conversion for argument 1 from 'const __FlashStringHelper*' to 'const char*'
 Used: /Users/james/Documents/Arduino/libraries/SdFat-master
STM32_SDFat:119:39: error: no matching function for call to 'SdFat::ls(const char [2], int)'
   sd2.ls("/", LS_R | LS_DATE | LS_SIZE);
                                       ^
/Users/james/Documents/Arduino/STM32_SDFat/STM32_SDFat.ino:119:39: note: candidates are:
In file included from /Users/james/Documents/Arduino/STM32_SDFat/STM32_SDFat.ino:6:0:
/Users/james/Documents/Arduino/libraries/SdFat/SdFat.h:66:8: note: void SdFat::ls(uint8_t)
   void ls(uint8_t flags = 0);

        ^
/Users/james/Documents/Arduino/libraries/SdFat/SdFat.h:66:8: note:   candidate expects 1 argument, 2 provided
/Users/james/Documents/Arduino/libraries/SdFat/SdFat.h:67:8: note: void SdFat::ls(Print*, uint8_t)
   void ls(Print* pr, uint8_t flags = 0);

        ^
/Users/james/Documents/Arduino/libraries/SdFat/SdFat.h:67:8: note:   no known conversion for argument 1 from 'const char [2]' to 'Print*'
Using library SPI at version 1.0 in folder: /Users/james/Documents/Arduino/hardware/Arduino_STM32/STM32F1/libraries/SPI 
Using library SdFat in folder: /Users/james/Documents/Arduino/libraries/SdFat (legacy)
Using library SdFat-master at version 1.1.0 in folder: /Users/james/Documents/Arduino/libraries/SdFat-master 
exit status 1
no matching function for call to 'SdFat::SdFat(SPIClass*)'
That's the whole error output message. Hopefully that can be of some use. TIA.
stevestrong
Posts: 502
Joined: Fri Dec 27, 2019 4:53 pm
Answers: 8
Location: Munich, Germany
Contact:

Re: STM32F103C ----- SDFat Library

Post by stevestrong »

I would recommend to use my SdFat fork, it is made compatible with the libmaple (aka Roger's and my) core.
Post Reply

Return to “General discussion”