完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我们的低功耗是通过睡眠来实现的,单片机在进入睡眠状态时,USB模块是停止工作的,但是由于配置了RB_UC_DEV_PU_EN强制上拉,根集线器不会判断为设备断连,主机也就不会移除USB设备。若此时主机给USB设备发送数据,而设备的USB模块停止工作而不能及时应答,主机可能会主动移除USB设备导致断连,设备需要再次经过枚举才能连上。
可以自行设置一个标志,检测USB模块是否处于工作中。在即将进入睡眠时判断标志,若仍在收发数据,就跳出而不进入睡眠状态。 |
|
|
|
HAL_SLEEP是在宏定义开启,如何在工作中关闭不进入睡眠呢?
|
|
|
|
HAL_SLEEP只用于睡眠功能的使能,进入睡眠需要调用进入低功耗睡眠模式的函数,对于58x系列的单片机函数名为CH58X_LowPower。
手动设置一个flag标志,在枚举收到令牌包时,这个flag置位,表示USB正在工作中。在调用CH58X_LowPower前或是在函数中添加对flag的判断,若判断为USB仍在工作中则直接return,不继续执行睡眠模式的启动。 当USB数据传输完毕,用户从USB接口拔掉设备时,flag需要清除标志位。可以向主机发个数据包看主机是否有应答,或者是读D+D-两脚上的电压是否都没有上拉,来判断设备是否手动拔出。若已经拔出,flag标志清除,则可以进入低功耗睡眠。 |
|
|
|
只有小组成员才能发言,加入小组>>
535 浏览 1 评论
CH579M+RT-Thread,RTC从Sleep模式唤醒失败是什么原因?
2910 浏览 2 评论
2404 浏览 1 评论
882浏览 2评论
697浏览 1评论
riscv-none-embed-objcopy: \'PWM_Output.elf\': No such file这个咋解决,
426浏览 1评论
543浏览 1评论
请教一下,Mounriver 编译不成功:找不到库文件,怎么整
822浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-30 13:10 , Processed in 1.292499 second(s), Total 81, Slave 66 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号