跟猫一起酸汤面系列:第三天 学睡觉

睡觉是降低功耗的有效手段,怎么睡,睡成什么样子都是要学习的
以前的328P运行大概是10ma的级别,也可以睡觉,后来发现青蛙是ma级别,再发现通过降频似乎可以进入ua级别了,
结合睡觉技术,似乎碰到了na的边缘
参考了JJ老师5年前的文章http://forum.eepw.com.cn/thread/278079/1
睡觉的关键代码:

HAL_PWREx_EnableUltraLowPower();
//HAL_PWR_EnterSLEEPMode(PWR_LOWPOWERREGULATOR_ON,PWR_SLEEPENTRY_WFI);
//HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON,PWR_STOPENTRY_WFI);
HAL_PWR_EnterSTANDBYMode();

JJ老师说,一次睡不着就掉电重新睡,结果......真的睡着了,程序都没有办法更新了,最后受田鸡和猫的启发,通过拉高boot0的办法解决,还是加个延时再睡比较稳妥

LL_mDelay(995);
LL_PWR_EnableUltraLowPower();
SET_BIT(PWR->CR, PWR_CR_PDDS);
SET_BIT(SCB->SCR, SCB_SCR_SLEEPDEEP_Msk);
#if defined ( __CC_ARM)
    __force_stores();
#endif
__WFI();

至于为什么是这个姿势睡,以后要仔细研究寄存器参考手册,还有就是如何唤醒。

标签: none

添加新评论