乐鑫技术交流
直播中

吴凡

10年用户 906经验值
擅长:48674
私信 关注
[问答]

ESP32-C3在通过蓝牙连接时尝试修复ADC崩溃怎么办?

开发规范:WIndows 10、ESP-IDF for VSCode v4.4、ESP32-C3 连接板载 JTAG 调试和串行日志记录。
我正在尝试调试在添加 ADC 代码后连接到基于 ESP32-C3 的设备时遇到的崩溃。在添加 ADC 之前,我能够连接。我正在使用 ADC 1 通道 2 和 3 以及 ADC 2 通道 0。我读到 Wifi 可能与 ADC2 有冲突,但文档没有说这会影响蓝牙并且在连续模式下使用它应该在某些频率限制之间工作。由于我满足了这些限制并且这个问题似乎不适用,所以这似乎不是问题所在。
我在 panic_arch.c 的第 341 行设置了一个断点,以尝试从调用堆栈中找到有问题的代码。看起来恐慌处理程序是在 btm_establish_continue() 之后立即调用的。查看此函数,它似乎正在使用为该函数构建的一些数据调用回调。根据监视变量,p_bl_changed_cb 引用 multiprecision_add_mod+100。这似乎是错误的,设置回调的代码改为引用函数 bta_dm_bl_change_cback。我希望将它追溯到我在代码中错误设置的东西,但此时它看起来像是指向一个随机函数。我也未能找到关于“+100”的含义的良好解释。看起来它将回调指向该函数之后可能 100 个地址的某个东西,但事实并非如此
看起来我的调试器在欺骗我代码的执行位置。当我之前在调试器工作时在代码中设置断点时,代码似乎永远不会在我设置断点的行上停止,所以它就像地址到实际代码的转换被抵消了,但我不不知道如何解决这个问题。

更多回帖

发帖
×
20
完善资料,
赚取积分