esp32编译报错 SPI_Flash.cpp 编译失败

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

esp32错误解决方法(esp-idf)

错误类型:编译时出错,错误为:编译SPI_Flash.cpp这个文件时报错在这里插入图片描述在这里插入图片描述


一、SPI_Flash.cpp这个文件是什么

据我的推测这是一个对于定义flash擦除和写读SPI_Flash类的定义c++文件。

二、报错原因

SPI_Flash这个类未定义,无法找到。

三、解决办法

应为这个文件报错了,所以我们进入到SPI_Flash.cpp这个文件里面一探究竟

// An highlighted block
#include "esp_log.h"
#include "private_include/SPI_Flash.h"
#include "esp_spi_flash.h"
static const char *TAG = "spi_flash";

SPI_Flash::SPI_Flash()
{
}

size_t SPI_Flash::chip_size()
{
    return spi_flash_get_chip_size();
}

esp_err_t SPI_Flash::erase_sector(size_t sector)
{
    esp_err_t result = spi_flash_erase_sector(sector);
    if (result == ESP_OK) {
        ESP_LOGV(TAG, "erase_sector - sector=0x%08x, result=0x%08x", sector, result);
    } else {
        ESP_LOGE(TAG, "erase_sector - sector=0x%08x, result=0x%08x", sector, result);
    }
    return result;
}
esp_err_t SPI_Flash::erase_range(size_t start_address, size_t size)
{
    size = (size + SPI_FLASH_SEC_SIZE - 1) / SPI_FLASH_SEC_SIZE;
    size = size * SPI_FLASH_SEC_SIZE;
    esp_err_t result = spi_flash_erase_range(start_address, size);
    if (result == ESP_OK) {
        ESP_LOGV(TAG, "erase_range - start_address=0x%08x, size=0x%08x, result=0x%08x", start_address, size, result);
    } else {
        ESP_LOGE(TAG, "erase_range - start_address=0x%08x, size=0x%08x, result=0x%08x", start_address, size, result);
    }
    return result;
}

esp_err_t SPI_Flash::write(size_t dest_addr, const void *src, size_t size)
{
    esp_err_t result = spi_flash_write(dest_addr, src, size);
    if (result == ESP_OK) {
        ESP_LOGV(TAG, "write - dest_addr=0x%08x, size=0x%08x, result=0x%08x", dest_addr, size, result);
    } else {
        ESP_LOGE(TAG, "write - dest_addr=0x%08x, size=0x%08x, result=0x%08x", dest_addr, size, result);
    }
    return result;
}

esp_err_t SPI_Flash::read(size_t src_addr, void *dest, size_t size)
{
    esp_err_t result = spi_flash_read(src_addr, dest, size);
    if (result == ESP_OK) {
        ESP_LOGV(TAG, "read - src_addr=0x%08x, size=0x%08x, result=0x%08x", src_addr, size, result);
    } else {
        ESP_LOGE(TAG, "read - src_addr=0x%08x, size=0x%08x, result=0x%08x", src_addr, size, result);
    }
    return result;
}

size_t SPI_Flash::sector_size()
{
    return SPI_FLASH_SEC_SIZE;
}

SPI_Flash::~SPI_Flash()
{
}

此文件目录

SPI_Flash.cpp根目录下的文件
我们发现SPI_Flash这个类是定义在SPI_Flash.h这个文件中的,但是我们发现SPI_Flash.h并没有正确的添加到这个SPI_Flash.cpp这个文件中,即添加的路径错误,且在这里面也没有相关环境的配置,所以我们在前面添加SPI_Flash这个文件的所在的文件夹路径即可,在SPI_Flash.h这个前面加private_include就可以正常编译了


总结

一开始找错误很久的原因是因为这是个esp-idf中sdk的文件,所以没有认为他会出错,出错的只是我的代码和配置,后来经过到处差错发现都没问题,才开始进入这个SPI_Flash.cpp找到错误的。。。(呜呜呜)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值