小编Daa*_*iel的帖子

ESP32直接端口操作

亲爱的StackOverflowers,

我正在尝试将Adafruit的HX8357D 3.5“ TFT(链接)与esp32一起使用。TFT驱动程序具有两个接口:SPI和8位并行。Adafruit 的提供的库(链接)仅支持esp32上的SPI。我需要esp32具有更高的显示速度,所以我决定自己尝试添加对esp32的支持,虽然我完全没有这种编程经验,但是我喜欢挑战。

我通过对Arduino Uno / Mega支持进行反向工程来弄清楚8位接口是如何工作的。为了增加对esp32的支持,我需要一种直接操作控制esp32的gpio端口的寄存器的方法。我在互联网上四处张望,但是很少有如何执行此操作的示例。Espressif(link)的技术参考手册包含所有需要的信息,但是我不够熟练,无法弄清楚如何将其转换为代码。

要对esp32进行编程,我使用esp32 Arduino内核。本示例(链接)显示了如何将gpio引脚设置为输出,并直接使用寄存器将其设置为高电平和低电平。问题是我需要能够将8个引脚设置为输出,向它们写入数据,使其成为输入,然后从它们读取数据,所有这些都使用寄存器而不是使用pinMode,digitalRead和digitalWrite函数。

我知道它在Arduino Uno / Mega上的工作方式,其中有三个寄存器控制端口:

  • DDR *读/写
  • 端口*设置GPIO高/低
  • 如果gpio为INPUT,则PIN *读取HIGH / LOW。

但是,这在esp32上如何工作?如何使用寄存器创建这种8位并行通信?

如果有人在这个主题上比我有更多的专业知识,我将不胜感激。提前致谢。

c arduino display adafruit esp32

3
推荐指数
2
解决办法
3425
查看次数

C++在向量中获取const char*[]的长度

如何获取const char*数组索引的长度?

矢量:

std::vector<const char*> _infoBarText;
Run Code Online (Sandbox Code Playgroud)

const char*[]:

const char* text[4] = {"Current T:", "Target T:", "Time elapsed:", "Time remaining:"};
Run Code Online (Sandbox Code Playgroud)

将char数组分配给向量:

_infoBarText.assign(text, text+4);
Run Code Online (Sandbox Code Playgroud)

如何"current T"从向量中获取单个字符串的长度?

c++ const-char vector

0
推荐指数
1
解决办法
736
查看次数

标签 统计

adafruit ×1

arduino ×1

c ×1

c++ ×1

const-char ×1

display ×1

esp32 ×1

vector ×1