assert failed,搞不定了

之前搞了esp8266

很爽

点灯工程师的一天——ESP8266

然后,现在就想搞下esp32

买了一个这样的东西

https://github.com/Xinyuan-LilyGO/T-QT

e69669819de5113bd2d1b27988d1a4c0.jpeg

f46b09b692f2b6d90273acbc5b49c75e.jpeg

但是这个给出来的例程是Arduino的。

我不是不喜欢Arduino,只是固执的觉得搞嵌入式还是要面对C语言,所以,我还是想在esp-idf上能跑这些东西。

然后就安装环境

编译环境安装

https://docs.espressif.com/projects/esp-idf/zh_CN/stable/esp32s3/get-started/index.html

因为这个是esp32s3芯片

需要按照下面流程来安装环境

https://docs.espressif.com/projects/esp-idf/zh_CN/stable/esp32s3/get-started/linux-macos-setup.html

找了一个仓库

https://github.com/lvgl/lv_port_esp32.git

跑了下,assert failed 了

c01de0f186c7de56be300a2eae51c87e.png

眼看太阳出来了

底板就要干了,就要到了快乐的打球时光了

怎么办

求助各位大伙,有搞过lvgl和esp32s3的一起交流交流。

哦,对了U盘和esp8266还有货,毕竟是可以当单片机玩的东西,强烈推荐。

f44c9d1372c4f0abb89e76014793b625.png

171b0462b79e9a83b42453d285d3690e.jpeg

097cd4a89e934a0241c76c3bdf8b4f64.png

### 断言失败的原因及解决方案 #### 断言的作用与工作原理 断言(`assert`)主要用于开发和调试阶段,用于验证程序中的假设条件。当条件不满足时,会触发断言失败并终止程序执行。在正式发布的版本中,通常通过定义 `NDEBUG` 宏来禁用断言[^1]。 ```c #ifdef NDEBUG #define assert(e) (void)0 #else #define assert(e) ((e) ? (void)0 : _assert(#e, __FILE__, __LINE__)) #endif ``` #### 断言失败的常见原因 1. **逻辑错误**:如果程序中有逻辑上的缺陷,可能会导致预期之外的行为,进而使断言表达式的计算结果为假。 2. **输入数据异常**:外部输入的数据不符合预期格式或范围,可能导致断言检测到非法状态。 3. **资源不足**:内存分配失败或其他系统资源耗尽的情况下也可能引发断言失败。 4. **并发问题**:多线程环境下可能出现竞争条件等问题,使得某些共享变量的状态无法达到预设的要求。 #### 解决方案 针对不同的原因有不同的应对策略: - 对于**逻辑错误**,应该仔细审查代码逻辑,确保算法实现正确无误;可以通过单元测试等方式提前发现潜在的问题。 - 如果是因为**输入数据异常**引起的,则需加强对输入参数的有效性校验,在函数入口处加入必要的边界检查机制。 - 当遇到由**资源不足**造成的情况时,应优化应用程序性能,合理管理有限的硬件资源,并考虑增加冗余处理能力以提高系统的鲁棒性。 - 处理好**并发问题**的关键在于采用合适的同步原语和技术手段防止竞态条件发生,比如锁、信号量等工具的应用。 另外值得注意的是,不应依赖断言来进行常规性的错误处理,而应当将其视为辅助开发者定位问题的一种方式[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值