找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1493|回复: 6
收起左侧

如何将Arduino的程序移植到ESP8266上?

[复制链接]
ID:16255 发表于 2022-10-5 15:55 | 显示全部楼层 |阅读模式
本帖最后由 mengsiu 于 2022-10-5 23:07 编辑

最近买了一个TFT显示屏,在网上找了该屏的驱动例程。有51的,有Arduino的,也有STM32的。

51hei五笔截图未命名.jpg


已经使用51的代码测试过,成功点亮。唯一不足的是51的速度太慢,导致刷屏速度也慢。
我现在想试试Arduino的代码如何。但我手头上并没有正式的Arduino板,只有8266的板,加上我也是刚接触的Arduino,操作并不熟练。
当前情况是:
  • 我的8266板是好的;
  • 电脑也安装好Arduino,加载了8266库;
  • 曾试过能成功编译程序,并运行;
  • 根据网上的说法,加载程序后选择 无标题2.jpg 开发板,就可以使用ESP8266了。
  • 我找到的例程在Arduino里选择 无标题.jpg 开发板时能正常编译,但我手头上并没有正式的Arduino板,所以并不能验证是否能运行;
  • 而选择开发板,编译时会报错,如下
    1. c:/users/administrator/appdata/local/arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/3.0.4-gcc10.3-1757bed/bin/../lib/gcc/xtensa-lx106-elf/10.3.0/../../../../xtensa-lx106-elf/bin/ld.exe: sketch\clear_Screen.ino.cpp.o: in function `loop':
    2. C:\Users\Administrator\Desktop\Demo_UNO_Software_SPI\Example_01_clear_screen\clear_Screen/clear_Screen.ino:56: undefined reference to `_ZN11LCDWIKI_SPIC1Etaaaaaaa'
    3. c:/users/administrator/appdata/local/arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/3.0.4-gcc10.3-1757bed/bin/../lib/gcc/xtensa-lx106-elf/10.3.0/../../../../xtensa-lx106-elf/bin/ld.exe: sketch\clear_Screen.ino.cpp.o: in function `__static_initialization_and_destruction_0':
    4. C:\Users\Administrator\Desktop\Demo_UNO_Software_SPI\Example_01_clear_screen\clear_Screen/clear_Screen.ino:59: undefined reference to `_ZN11LCDWIKI_SPIC1Etaaaaaaa'
    5. collect2.exe: error: ld returned 1 exit status
    6. exit status 1
    7. 为开发板 Generic ESP8266 Module 编译时出错。
    复制代码

  • 例程如下:
    1. #include <LCDWIKI_GUI.h> //Core graphics library
    2. #include <LCDWIKI_SPI.h> //Hardware-specific library

    3. //paramters define
    4. #define MODEL ST7735S128
    5. #define CS   2
    6. #define CD   4
    7. #define RST  5
    8. #define SDA  12
    9. #define SCK  13
    10. #define LED  0   //if you don't need to control the LED pin,you should set it to -1 and set it to 3.3V

    11. //the definiens of software spi mode as follow:
    12. //if the IC model is known or the modules is unreadable,you can use this constructed function
    13. LCDWIKI_SPI mylcd(MODEL,CS,CD,-1,SDA,RST,SCK,LED); //model,cs,dc,sdo,sda,reset,sck,led

    14. void setup()
    15. {
    16.     mylcd.Init_LCD();
    17.     mylcd.Fill_Screen(0x0000);
    18.     mylcd.Fill_Screen(0xFFFF);
    19. }

    20. void loop()
    21. {   
    22.     mylcd.Fill_Screen(0,0,0);
    23.     mylcd.Fill_Screen(255,255,255);
    24.     mylcd.Fill_Screen(255,0,0);
    25.     mylcd.Fill_Screen(0,255,0);
    26.     mylcd.Fill_Screen(0,0,255);
    27.     delay(3000);
    28.     mylcd.Fill_Screen(0,0,0);
    29.     delay(1000);
    30.     mylcd.Fill_Screen(255,255,255);
    31.     delay(1000);
    32.     mylcd.Fill_Screen(0xF800);
    33.     delay(1000);
    34.     mylcd.Fill_Screen(0x07E0);
    35.    delay(1000);
    36.    mylcd.Fill_Screen(0x001F);
    37.    delay(3000);
    38. }
    复制代码


有请大神们帮忙分析一下,问题出现在哪里,为什么编译不过呢?谢谢。
回复

使用道具 举报

ID:161164 发表于 2022-10-5 16:59 | 显示全部楼层
2022-10-05_165429.png
2022-10-05_165441.png


2022-10-05_165801.png


回复

使用道具 举报

ID:16255 发表于 2022-10-5 22:59 | 显示全部楼层

谢谢回答,然而并不是。
插件库已经加载了。(选择Arduino开发板可以编译出来,说明库已经加载好了)
现在的问题是,选择8266开发板后编译出错。
回复

使用道具 举报

ID:161164 发表于 2022-10-6 09:42 | 显示全部楼层
mengsiu 发表于 2022-10-5 22:59
谢谢回答,然而并不是。
插件库已经加载了。(选择Arduino开发板可以编译出来,说明库已经加载好了)
...

你要选支援ESP8266的库
Arduino和ESP8266的底层寄存器是不同的
回复

使用道具 举报

ID:16255 发表于 2022-10-8 16:41 | 显示全部楼层
lkc8210 发表于 2022-10-6 09:42
你要选支援ESP8266的库
Arduino和ESP8266的底层寄存器是不同的

正是,我已经放弃他家的例程了。用别家的库成功点亮屏幕了。接着是仔细分析一下库函数,应该是有一定可玩性的。
回复

使用道具 举报

ID:88256 发表于 2022-10-8 17:55 | 显示全部楼层

首先说法就不对,ESP8266用Arduino的程序不需要移植。
本来想替你生成bin文件以解燃眉之急,奈何那两个库文件我就是搜索不到,无法编译,Arduino我也不熟哦,晚上有空再试试。
回复

使用道具 举报

ID:88256 发表于 2022-10-10 02:01 | 显示全部楼层
我下了相应的库也编译不通过,和你的一样的错误,估计是程序和库配不上或者错误吧(猜的)。
搜索了一下,没什么结果,好像有说结构问题的,或者是链接错误
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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