完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
我正在尝试使用新的 wifi_fpm_* API,但看到系统崩溃。代码如下:
静态 void ICACHE_FLASH_ATTR prSleeptimerCb(void *arg) { os_printf("睡!n"); os_delay_us(600); // time for "睡!" to be printed at 115200 baud int8_t err = wifi_fpm_do_sleep(1000*1000); if (err != 0) os_printf("Sleep error: %dn", err); os_printf("返回!n"); } void user_init(无效) { ... os_timer_disarm(&prHeapTimer); wifi_fpm_set_sleep_type(light_sleep_t); wifi_fpm_open(); os_timer_disarm(&prHeapTimer); os_timer_setfn(&prHeapTimer, prSleepTimerCb, NULL); os_timer_arm(&prHeapTimer, 20000, 0); ... } 一些os_printf输出: 141> 强制 SLP 启用,类型:1 141> FPM 打开,类型:1 0 ... 8831> 与 TVE-HOME 连接,频道 1 8831> DHCP 客户端启动... 11605> IP:192.168.0.114,掩码:255.255.255.0,GW:192.168.0.1 15125> Wifi check: mode=STA status=5 17948> FPM 收盘价 3 17948> pm open phy_2,type:2 0 0 20141> 睡! 20142> PM2 684 ets Jan 8 2013,rst cause:1, boot mode:(3,7) 哎呀,这太崩溃了!(左边的数字显示自启动以来的毫秒数。 崩溃信息为:重置原因:3=soft wdt,exccause=4 epc1=0x40221ac6 epc2=0x0 epc3=0x0 excvaddr=0x0 depc=0x0 坠机地点在fpm_do_sleep开头附近: 40221aa8 : fpm_do_sleep(): 40221aa8: f0c112 addi a1, a1, -16 40221aab: 006122 s32i a2, a1, 0 40221aae: 016102 s32i a0, a1, 4 40221ab1: ff3485 call0 40220dfc 40221ab4: 011216 beqz a2, 40221ac9 40221ab7: fe7721 l32r a2, 40221494 40221aba: fe7731 l32r a3, 40221498 40221abd: aca242 movi a4, 0x2ac 40221ac0: 7d5901 l32r a0, 40201024 <_irom0_text_start+0x14> 40221ac3: 0000c0 callx0 a0 40221ac6: ffff06 j 40221ac6 40221ac9: fd7941 l32r a4, 402210b0 40221acc: 4408 l32i.n a0, a4, 16 40221ace: e27c movi.n a2, -2 40221ad0: 02e0d7 bbsi a0, 13, 40221ad6 40221ad3: 0001c6 j 40221ade ... |
|
相关推荐
1个回答
|
|
|
根据您提供的代码和描述,我将尝试分析可能导致系统崩溃的原因。以下是一些可能的原因及相应的解决方案:
1. **内存问题**:在您的代码中,可能存在内存泄漏或不正确的内存分配。这可能导致系统崩溃。请检查您的代码,确保没有内存泄漏,并正确地分配和释放内存。 2. **中断问题**:在`prSleepTimerCb`函数中,您使用了`os_delay_us`函数。这可能导致中断被阻塞,从而影响系统的正常运行。您可以尝试使用其他方法来实现延迟,例如使用定时器。 3. **错误处理**:在`wifi_fpm_do_sleep`函数调用后,您检查了错误代码,但没有采取任何措施来处理错误。如果错误代码不为0,您可以尝试打印错误信息并采取相应的措施,例如重试或停止程序。 4. **API使用问题**:您提到正在尝试使用新的`wifi_fpm_*` API。请确保您已经正确地了解了这些API的使用方法,并遵循了官方文档中的示例。如果可能,请查阅相关文档以获取更多关于API使用的信息。 5. **硬件问题**:系统崩溃可能与硬件有关。请检查您的硬件设备,确保它们正常工作,并且与您的代码兼容。 6. **编译器/链接器问题**:请确保您的编译器和链接器设置正确,以便正确编译和链接您的代码。如果可能,请尝试使用不同的编译器或链接器设置。 7. **代码逻辑问题**:请检查您的代码逻辑,确保没有无限循环或其他可能导致系统崩溃的问题。 为了解决这些问题,您可以尝试以下步骤: 1. 使用调试器检查程序的运行过程,找出崩溃的确切位置。 2. 在崩溃位置附近添加日志输出,以便更好地了解程序的状态。 3. 逐步检查代码,确保所有资源都正确分配和释放。 4. 确保您的代码遵循了API的使用规范。 希望这些建议能帮助您找到导致系统崩溃的原因,并解决问题。 |
|
|
|
|
只有小组成员才能发言,加入小组>>
176 浏览 0 评论
946 浏览 0 评论
1674 浏览 0 评论
请问一下我想用ESP8685直接替换ESP8266而不用写程序,可以让ESP8685直接通过之前ESP8266的外挂的flash运行程序吗
1334 浏览 1 评论
1234 浏览 1 评论
为blufi_device设置自定义名称,但是无法修改,为什么?
1254浏览 4评论
请问ESP32-S2-WROOM怎么获得ESP32-S2外接FLASH的唯一序列号?
928浏览 3评论
2341浏览 3评论
ESP-IDF的VScode插件的build按钮点击会报错的原因?
2528浏览 3评论
ESP-Jumpstart例程中第5个工程:5_cloud连接报错是哪里的问题?
1052浏览 2评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-3 10:30 , Processed in 0.734600 second(s), Total 78, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
657
