问题标签 [esp-idf]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
84 浏览

git - 在 release/v4.2 SDK 中构建 aws_iot(事物影子)示例时出错

大家好,在 release/v3.3 中有一个 aws_iot 示例,它在 esp-idf 的 release/v4.2 中不存在。因此,我复制了 aws_iot(事物影子)示例,并根据我的要求在 thing_shadow.c 文件和组件中的 aws_iot 文件夹中进行了所需的更改,从 v3.3 到 v4.2。但是在当前 SDK(v4.2) 中构建示例时,出现以下错误。

错误:

警告:缺少子模块组件/aws_iot/aws-iot-device-sdk-embedded-C... 在 esp-idf 中尝试“git submodule update --init components/aws_iot/aws-iot-device-sdk-embedded-C”根目录...错误:pathspec 'components/aws_iot/aws-iot-device-sdk-embedded-C' 与 git 已知的任何文件都不匹配。/home/harshitha/esp32/esp-idf/make/project.mk:672:目标配方'/home/harshitha/esp32/esp-idf/components/aws_iot/aws-iot-device-sdk-embedded-C/ .git' failed make: *** [/home/harshitha/esp32/esp-idf/components/aws_iot/aws-iot-device-sdk-embedded-C/.git] 错误1 我该如何解决这个问题? 有人可以建议在当前 SDK version4.2 中进行所需的更改以解决此问题。

0 投票
1 回答
350 浏览

c - 如何访问 ESP-IDF 应用程序代码中的编译时间?

有没有办法从 ESP-IDF 应用程序代码中访问编译时间?与您如何访问 IDF 版本类似IDF_VER

0 投票
1 回答
2831 浏览

esp32 - 如何在 FreeRTOS 中干净利落地告诉任务终止

我正在使用 ESP32 和我选择的 HomeKit 库使用我不熟悉的 FreeRTOS 和 esp-idf。

目前,我有一个函数,只要应该改变光的颜色,就会调用它,它只是一步一步地改变它。我想让它在颜色之间褪色,这需要一个运行一两秒的函数。有了这个块,程序的主要执行显然会使其完全没有响应,所以我需要让它作为一个任务运行。

我面临的问题是我只希望一次运行一个淡入淡出功能的副本,如果在它完成之前第二次调用它,第一个副本应该退出(不等待完整的淡入淡出时间)之前开始第二个副本。

我发现了vTaskDelete,但如果我只是在任意点终止淡入淡出功能,一些变量和 LED 本身将处于未知状态。为了解决这个问题,我想使用一个“kill flag”全局变量,fading 函数将检查它的每个循环。

这是我正在考虑的伪代码:

我的主要问题是:

  • 这是最好的方法还是有更好的选择?
  • 如果这没问题,什么是相当于 my wait_for_fade_to_die?我无法从短暂的环顾中找到任何东西,但我是 FreeRTOS 的新手。
0 投票
1 回答
827 浏览

esp32 - 如何在 esp-idf 项目上正确设置链接器标志

在尝试使用 esp-idf 工具链将 punyforth 从 esp8266 移植到 esp32 时,我遇到了一个让我很头疼的链接器问题。

如果不使用任何特殊的链接器标志,我会遇到如下错误:

如果我设置(如在此处和其他地方推荐) LDFLAGS += -mtext-section-literals,那么我会得到 undefined main 像这样:

关于 esp-idf 工具链,我是一个完全的菜鸟,所以我几乎被卡住了。关于如何解决这个问题的任何指示都会很棒。

我找到了这个这个帖子,但我仍然卡住了。

0 投票
1 回答
69 浏览

google-cloud-iot - 向谷歌云物联网核心发送大数据量

我正在使用 esp32 开发一个项目,即测量传感器数据,将此数据保存到 sd 并将数据发布到网络(到谷歌云 IOT 核心)。数据的测量和保存已经非常好,但是我在发送到网络方面遇到了一些问题。

为了测量数据(最大频率应为 500 Hz),我使用了一个计时器,它定期测量数据并将测量数据发送到队列。一个单独的任务从队列中读取数据,然后将这些数据格式化保存到 sd 卡。到目前为止,一切都很好。

我正在使用 esp-idf 进行开发,因此实现了 Web 框架 esp-google-iot。连接到云的效果非常好,我已经能够接收命令(在第一种方法中,只是停止或开始测量的命令)。现在我尝试创建另一个队列,其中应该发布的数据被保存。然后我创建了一个延迟发布任务,它应该每秒将存储在队列中的所有数据发送到云端。不幸的是,我总是收到“内存不足”错误。

由于我认为这可能是由于数据量大而出现的,所以我删除了第二个队列,并且每秒发送一次“虚拟”消息。这非常有效。

有谁知道,如何处理这些数据量或有类似的问题?

可能我也采用了完全错误的方法......每次发布可能只发送一个以上的值,这样我就不必每秒发送 500 个请求?

任何帮助表示赞赏

0 投票
1 回答
1748 浏览

spi - 为什么带有 ESP-IDF 的 SPI 与 ESP-IDF Arduino 端口 (AS5048A) 的工作方式不同?

我已将 AS5048A 磁编码器连接到 ESP32 开发板(VSPI/SPI3 总线:CS=5,CLK=18,MISO=19,MOSI=23)。使用 ESP IDF 4.0.1 版。Arduino 库: https ://github.com/espressif/arduino-esp32/tree/idf-release/v4.0

我测试了两个版本的 SPI 传输:a)有b)没有Arduino ESP-IDF 库

Arduino 版本通常在不同的速度下都能很好地工作。纯 IDF 很难正确接收数据。奇怪的是,纯 IDF 版本设法在 SPI 模式 3(Arduino 与模式 1 下工作)下发送 0x0000 和 0xFFFF(具有奇偶校验和 r/w 的读取角度命令),但其他命令失败。0x0000(空命令)也会返回一些垃圾(0x6000 或类似的东西,而不是 0x00000)。所以纯 IDF 版本可以使用 SPI 模式 3 正确读取角度(?!),但其他任何操作都失败(我想这是一些意外,因为读取角度命令是 0xFFFF)。

我尝试了每种模式和很多计时配置。试图查看 Arduino 库 SPI 内部,它使用与 IDF 本身不同的 SPI 方法。

任何帮助/想法?下面是代码。

Arduino 实现非常简单:

纯 IDF 如下:

并传输(cmd 是 uint16_t,带有奇偶校验和 r/w 位):

0 投票
2 回答
747 浏览

c - 某些头文件只能包含在主文件中吗?

我正在使用 ESP-IDF 为 ESP32 开发一个项目。我正在尝试在组件中使用蓝牙库,但编译器抱怨头文件不存在。包含来自 main.c 的相同头文件没有任何问题。我试图包含的头文件是:

为什么某些头文件只能从 main.c 中包含?是否有任何解决方案,或者是否必须在 main.c 文件中放入某些功能来安抚 ESP-IDF?

注意:我在尝试使用 HTTPS 服务器时包含头文件时遇到了同样的问题。

如果它有任何相关性,这是我正在使用的项目结构:

CMakeLists.txt 文件完全相同:

main 函数是一个非常简单的函数,它设置环境(例如 NVS_FLASH)并调用每个组件的 setup 函数并终止,将程序的控制权留给组件。

0 投票
1 回答
64 浏览

linux - 为 ESP-IDF 安装 requirements.txt 时出现 msys2 错误

我正在尝试使用“pip install -r requirements.txt”为 msys32 中的 ESP-IDF 安装 requirements.txt,但出现此错误。

0 投票
1 回答
587 浏览

c - esp-idf 中的“sprintf”错误。msys2 中的 gcc 版本 9.1.0

我之前在 gcc 6.4.0 中使用 msys2 并且正在为我的项目工作。我将工具链和 gcc 升级到 9.1.0。现在我收到此错误:

一小部分代码:

错误信息是:-

我怎样才能解决这个问题。如何将我的 gcc 降级到以前的版本?

0 投票
0 回答
214 浏览

eclipse-plugin - 如何在 Eclipse 中更改 ESP32 中的 SPI Flash 大小?

在我的 Eclipse 控制台中 Auto-detected Flash size: 4MB显示,但在终端I (55) boot: SPI Flash Size : 2MB给出错误,因为分区表需要 4MB。

奇怪的是,这不是一周前的问题,一切正常,我检查了一周前的终端日志(由于其他一些错误,我将其保存在单独的文本文件中)在我(54)启动时:SPI Flash大小:写入4MB 。所以这会自动改变,我猜是因为我没有更改 menuconfig 中的任何内容。我试图在互联网上找到解决方案,但找不到任何东西。关于我应该怎么做的任何建议?