问题标签 [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.
esp32 - 分析 NodeMCU 上的 ESP32 回溯
我正在调试 NodeMCU Lua 固件的 dev-esp32 分支上的一些崩溃。你们其他 NodeMCU 开发人员如何分析回溯?
在正常的 ESP32 开发期间,idf 监视器处理解码回溯。我尝试在我的 NodeMCU 构建中使用 IDF 监视器(不成功)。我也试过https://github.com/me-no-dev/EspExceptionDecoder没有成功。
在我深入研究这个问题之前,我想我会检查其他人是如何处理它的。
下面是我尝试解码的输出类型的一个示例。
有关解码器尝试的附加信息
对于 EspExceptionDecoder 尝试,我将崩溃输出保存在一个名为backtrace
. 然后我按如下方式调用解码器,这会导致解析器错误(确认路径正确)。
我在上面尝试的backtrace
文件具有以下内容(注意 sha 与上面的检查相匹配)。
c - ESP32 与 ESP-IDF 深度睡眠时的 RTC 静态内存
我正在使用 ESP32 内部 RTC 上的 8KB 静态 RAM 来保存少量传感器数据,以通过减少传输频率来降低功耗。但即使是简单的示例代码,我也没有运气:
在监视器中,我第一次可以看到值为 0,但这是任何人的猜测。
编辑
还尝试了属性:
我究竟做错了什么?
arduino - 在 ESP32 和 esptool 选项 --no-stub 的上下文中,“存根”是什么意思?
我想使用esp-prog和esptool对带有 esp32 的板进行编程。当我这样做时,我收到以下错误:
但是,如果我使用带有选项的esptool --no-stub,我可以对电路板进行编程而不会出错。那么这个存根是什么?使用--no-stub的用途和意义是什么?
c++ - 将“this”作为参数传递给 ISR 注册有什么问题吗?
我正在用 C++ 为 esp32 编写固件,我发现在注册 ISR 时将对象引用作为参数传递非常棒,因为我可以简单地将 ISR 的工作委托给特定对象(本例中为资源),直接从类管理资源属性和功能。但是,我不确定在使用这种技术时要注意什么。
- 它有什么本质上的错误吗?
- 如果没有,在做的时候应该注意什么?
esp32 - 反转 ESP32 上的 RTC GPIO
我正在开发一种电池供电的设备,当传感器开关变高时会唤醒。现在我还需要设备返回休眠模式并等待传感器开关变低。我正在使用 ESP-IDF。我已经配置了 ext_1 唤醒引脚。设备按预期唤醒。
问题是该引脚设置为在变高时唤醒。当设备重新进入睡眠状态时,该引脚仍将处于高电平,我想检测它何时变为低电平。我的第一个想法是反转引脚 - 低读高。我在 ESP-IDF 中看不到这样做的方法。
我不想为此使用 ULP,因为它在睡眠中消耗了太多电流。
events - 在 RTOS 上的嵌入式开发环境中,什么时候应该使用事件处理程序,什么时候应该使用任务?
我正在熟悉使用 ESP-IDF 框架在 ESP32 上进行开发,这也是我第一次在 freeRTOS 上进行开发。
我的简单探索性应用程序将涉及响应来自两个不同来源的输入:与我的开发计算机的串行连接,以及与 MQTT 客户端的连接(例如)。
阅读关于 freeRTOS 的介绍性材料似乎建议我应该创建单独的任务来监视和处理每个输入源。
但是,ESP-IDF 中的项目示例(构建在 freeRTOS 之上)不包含对xTaskCreate
or的调用vTaskStartScheduler()
。相反,我看到在事件循环中注册了事件句柄和回调:
我不明白为什么 ESP-IDF 会在看起来像是一种相当专用的方法之上强加一个事件循环结构来管理代码块之间共享处理器时间以响应外部事件。我怀疑我错过了一个关键的理解,它清楚地说明了每个工具(事件循环和任务管理器)适用于什么范围/上下文。
最终,我的下一步将是创建自己的任务或创建自己的事件来处理来自我的开发机器的串行输入。哪一个?
c - CMake:“致命错误:cstdio:没有这样的文件或目录”
我正在尝试 CMake 一个项目。我是新手,所以我想这对于熟悉 CMake 的人来说一定很明显:在 main.c 所在的主文件夹中,我包括
找到了这个库。在文件 all_ops_resolver.h 中有一行:
在 micro_mutable_op_resolver.h 文件中是另一行:
现在这会触发 CMake 的错误:
文件 stdio.h 将位于:
它在项目目录之外。我不知道应该进入哪个 CMakeLists.txt 以将编译器指向该文件夹。有人可以帮忙吗?
c - C 缓冲区指针
问题
我目前正在使用带有 esp-idf 的 ESP-NOW。以下是他们 espnow 示例的片段。我需要一些帮助来确定这条线的含义,但我不太确定谷歌是什么。有人可以指出我正确的方向吗?
到目前为止我尝试了什么
我似乎无法在网上找到任何指南,因为我不确定用谷歌搜索什么。根据我能找到的,我的猜测是send_param
缓冲区参数被解析buf
为example_espnow_data_t
. 我的理解正确吗?
示例代码
example_espnow_send_param_t
是一个typdef struct
作为buffer
参数之一。然后将发送参数分配并填充到send_param
内存块中。然后将其传递给数据准备函数。
bluetooth-lowenergy - (ESP-IDF) 通过 BLE 发送 .txt 文件(日志数据)?(从 ESP32 到 Android 手机的大文件)
我想将我的日志文件从我的 ESP32 闪存下载到我的 Android 手机。
我知道我们一次只能发送 20 个字节的文件。因此,我将文件分成 20 个字节的块。这是我的代码:
以下代码适用于小文件(最大 400 字节),但除此之外,我将得到以下结果:
打印完之后,ESP32 就会卡住,不响应任何东西,除非你再次重置它。
我不确定这是否是 Android 应用程序的问题,但我认为它更倾向于 esp32 处理文本传输。
这里有没有人曾经通过BLE成功发送过大文件?非常感谢您的帮助!