本帖最后由 hoop 于 2020-12-14 20:01 编辑
如下低功耗相关注意事项
1)Sleep模式下功耗说明
Sleep模式下外设会正常工作,因此如果Sleep模式需要进一步降低功耗,那可以在进入之前关闭无用外设时钟,退出时再开启;
2)Sleep唤醒说明
Sleep可以被任意中断或事件唤醒,因此应用设计时必须要严格控制唤醒源,并对非期望的唤醒源做处理,比如应用只期望串口接收中断唤醒,那此时必须要禁止TMR、ADC、CAN等其他外设;
3)通过WFE进入低功耗说明
建议严格按照AT BSP库的写法“__SEV();__WFE();__WFE();”,这段话的前两句的意义在于确保清除在进入低功耗之前产生的无效唤醒事件——此点对Sleep和Stop均有效;
4)ADC在低功耗下的说明
ADC,只要用户写ADC_Ctrl(ADCx,ENABLE)命令开启ADC后,不管是否进入低功耗,ADC模拟部分会一直消耗电流,为最大限度降低低功耗,建议进低功耗前执行一下ADC_Ctrl(ADCx,DISABLE)——此点对Sleep和Stop均有效;
5)SPI在低功耗下的说明
SPI,在进入Sleep后,SPI有时钟,如果作为从机的话,可正常收发数据。在进入Stop后,SPI无时钟,作为主机的话不会再动作,但作为从机的话,因其内部的CLK边沿检测机制,此时如果外部有有效的CLK来,SPI会识别,别响应该CLK发送数据;
6)DBG_SLEEP/STOP/STANDBY说明
照旧参考之前的:MCUDBG结合低功耗使用的相关建议:,这三个Bit强烈建议应用在非调试状态下关闭。
(@串联烧烤)以及其他小伙伴们,以上经验分享,期望对你们有所帮助,其中还是例行备注一下,AT与ST同行为。
|