在Arduino IDE上调用内部arduino库函数

问题描述 投票:0回答:1

我正在使用Arduino IDE,我想调用位于

sd_diskio.cpp
中的内部Arduino SD.h

库函数

这是我的代码:

#include <sd_diskio.h>
#include <SPI.h>

#define SD_MMC_CLK 7 
#define SD_MMC_CMD 9
#define SD_MMC_D0 8

#define SD_MMC_D3_CS 21


void setup() {
    
    Serial.begin(9600);
    uint8_t ssPin = SD_MMC_D3_CS;
    SPI.begin(SD_MMC_CLK, SD_MMC_D0 ,SD_MMC_CMD, SD_MMC_D3_CS);
    SPIClass spi = SPI;
    
    uint32_t frequency = 4000000;
    uint8_t pdrv = sdcard_init(ssPin, &spi, frequency);
    if (!sdSelectCard(pdrv)) {
      return 0;
    }

    if (!sdCommand(pdrv, SEND_CID, 0, NULL)) {
      char cid[16];
      bool success = sdReadBytes(pdrv, cid, 16);
      sdDeselectCard(pdrv);
      if (success) {
        Serial.println(cid);
      }
    }

}

我得到的错误是:

错误:“sdcard_init”未在此范围内声明

更新:

最后一个错误不再显示(不知道为什么)还有另一个错误:

错误:“sdSelectCard”未在此范围内声明

'sdSelectCard' 不是由

sd_diskio.h
定义的,如何告诉 Arduino IDE 将
sd_diskio.cpp
添加到编译中? (我尝试了 Sketch->Add File...但它不能解决问题)

arduino
1个回答
0
投票

您需要初始化SD库。此代码在 ESP32 Feather 上运行,并确认读卡器已正确初始化并且存在卡。

#include <SPI.h>
#include <SD.h>

#ifdef ESP32
    #define SD_CS    14     //SD card chip select
#else ifdef ESP8266
    #define SD_CS    2
#endif

void initSDcard() {
    if (!SD.begin(SD_CS)) {
        Serial.println(F("SD Card not found"));
        Serial.println(F("Remember MISO to MISO & MOSI to MOSI"));        
        while (!SD.begin(SD_CS)) {
            delay(10);
        }
    }
    Serial.println(F("SD Card OK"));        
}

void setup() {                
    Serial.begin(115200);
    delay(2000); 
    Serial.println("Started");
    initSDcard();
}

void loop() {
    delay(10);
}
© www.soinside.com 2019 - 2024. All rights reserved.