完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
大家好,
我在使用 ESP8266 进行开发时遇到了问题,我的函数enter_light_sleep工作,但消耗量会根据我在 wifi_fpm_do_sleep() 函数中设置的时间而变化。 如果我设置最大时间 (0xFFFFFFF),它可以工作并接近 1,5 mA,但永远不会唤醒或调用wake_cb函数 如果我将时间设置为 15 秒 (15*1000*1000) 等值,它会变为 16 mA(调制解调器睡眠消耗),它会在 15 秒后唤醒并调用我的wake_cb功能。 有什么见解吗? 静态 void enter_light_sleep(void *arg) { mgos_uart_printf(UART_NO, "Enter_light_sleep rn"); wifi_station_disconnect(); wifi_set_opmode(null_mode); wifi_set_opmode_current(null_mode); wifi_set_sleep_type(light_sleep_t); wifi_fpm_open(); wifi_fpm_set_wakeup_cb(wake_cb); wifi_fpm_do_sleep(fpm_sleep_max_time); (无效)arg; } |
|
相关推荐
1个回答
|
|
以下是一些可能影响功耗的因素:
1. 超时时间:设置的超时时间越长,ESP8266在轻睡眠模式下保持的时间越长,功耗可能会降低。但是,如果设置的时间过长,设备可能无法在预期的时间内唤醒。 2. 唤醒源:ESP8266在轻睡眠模式下可以配置多个唤醒源,如定时器、GPIO等。不同的唤醒源可能会影响功耗。例如,使用定时器唤醒可能会比使用GPIO唤醒消耗更多的功耗。 3. 硬件配置:ESP8266的硬件配置,如模块、天线等,也可能影响功耗。不同的硬件配置可能会导致功耗差异。 4. 软件优化:在编写代码时,可以优化程序以降低功耗。例如,关闭不必要的外设、降低CPU频率等。 关于您提到的wake_cb函数无法被调用的问题,这可能是由于以下原因: 1. 超时时间设置过长:如果设置的超时时间过长,ESP8266可能无法在预期的时间内唤醒。您可以尝试缩短超时时间,看看是否可以解决问题。 2. 唤醒源配置错误:请检查您的唤醒源配置是否正确。如果配置错误,ESP8266可能无法在轻睡眠模式下被正确唤醒。 3. 软件问题:可能是您的代码中存在问题,导致wake_cb函数无法被调用。请检查您的代码,确保wake_cb函数被正确注册和调用。 |
|
|
|
只有小组成员才能发言,加入小组>>
168个成员聚集在这个小组
加入小组140 浏览 0 评论
1158 浏览 1 评论
584浏览 6评论
482浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
467浏览 5评论
466浏览 4评论
441浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-25 15:04 , Processed in 0.771728 second(s), Total 80, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号