求助。使用esp32开发板时出现编译错误-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 4564|回复: 3

[未解决] 求助。使用esp32开发板时出现编译错误

[复制链接]
发表于 2020-6-13 11:38 | 显示全部楼层 |阅读模式
查询解决方法时有人说是库文件找不到,但是libraries中库文件都有。希望大神解答。
-----------------------------------------------------------------------------------------------------------------------------------------

使用已经编译的文件:C:\WINDOWS\Temp\arduino_build_492341\libraries\Adafruit_BusIO\Adafruit_I2CDevice.cpp.o
C:\Users\hasee\Documents\Arduino\libraries\Adafruit_BusIO\Adafruit_SPIDevice.cpp: In member function 'void Adafruit_SPIDevice::transfer(uint8_t*, size_t)':

C:\Users\hasee\Documents\Arduino\libraries\Adafruit_BusIO\Adafruit_SPIDevice.cpp:99:31: error: no matching function for call to 'SPIClass::transfer(uint8_t*&, size_t&)'

     _spi->transfer(buffer, len);

                               ^

In file included from C:\Users\hasee\Documents\Arduino\libraries\Adafruit_BusIO/Adafruit_SPIDevice.h:1:0,

                 from C:\Users\hasee\Documents\Arduino\libraries\Adafruit_BusIO\Adafruit_SPIDevice.cpp:1:

C:\Users\hasee\Documents\Arduino\hardware\arduino-esp32\esp32\libraries\SPI\src/SPI.h:67:13: note: candidate: uint8_t SPIClass::transfer(uint8_t)

     uint8_t transfer(uint8_t data);

             ^

C:\Users\hasee\Documents\Arduino\hardware\arduino-esp32\esp32\libraries\SPI\src/SPI.h:67:13: note:   candidate expects 1 argument, 2 provided

使用 1.3.2  版本的库 Adafruit_BusIO 在文件夹: C:\Users\hasee\Documents\Arduino\libraries\Adafruit_BusIO
使用 1.0  版本的库 Wire 在文件夹: C:\Users\hasee\Documents\Arduino\hardware\arduino-esp32\esp32\libraries\Wire
使用 1.0  版本的库 SPI 在文件夹: C:\Users\hasee\Documents\Arduino\hardware\arduino-esp32\esp32\libraries\SPI
使用 1.8.4  版本的库 Adafruit_GFX_Library 在文件夹: C:\Users\hasee\Documents\Arduino\libraries\Adafruit_GFX_Library
使用 2.3.0  版本的库 Adafruit_SSD1306 在文件夹: C:\Users\hasee\Documents\Arduino\libraries\Adafruit_SSD1306
exit status 1
为开发板 DOIT ESP32 DEVKIT V1 编译时出错。
发表于 2020-6-13 17:12 | 显示全部楼层
本帖最后由 Zoologist 于 2020-6-13 19:41 编辑

出现这个问题的原因是你调用的函数在头文件中没有定义,
在  Adafruit_SPIDevice.cpp 文件中按照下面修改就好了

/*!
*    @brief  Transfer (send/receive) one byte over hard/soft SPI
*    @param  buffer The buffer to send and receive at the same time
*    @param  len    The number of bytes to transfer
*/
void Adafruit_SPIDevice::transfer(uint8_t *buffer, size_t len) {
  if (_spi) {
    // hardware SPI is easy
    //LABZDebug _spi->transfer(buffer, len);
    _spi->transferBytes(buffer,NULL,len); //LABZDebug
    return;
  }

发表于 2021-6-20 01:50 | 显示全部楼层
  1. void Adafruit_SPIDevice::transfer(uint8_t *buffer, size_t len) {
  2.   if (_spi) {
  3.     // hardware SPI is easy

  4. #if defined(SPARK)
  5.     _spi->transfer(buffer, buffer, len, NULL);
  6. #elif defined(STM32)
  7.     for (size_t i = 0; i < len; i++) {
  8.       _spi->transfer(buffer[i]);
  9.     }
  10. #else
  11.     _spi->transferBytes(buffer,NULL,len); //_spi->transfer(buffer, len);
  12. #endif
  13.     return;
  14.   }
复制代码

最后else那改了,编译 通过,但是我oled还是没反应
发表于 2021-6-20 07:24 | 显示全部楼层
本帖最后由 topdog 于 2021-6-20 07:27 编辑

Adafruit Bus IO Library 现在版本是1.7.5 需要手动安装 https://github.com/adafruit/Adafruit_BusIO.git 其他的升级一下吧!

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-29 03:52 , Processed in 0.094306 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表