hoop 发表于 2020-12-13 15:49

MCUDBG结合低功耗使用的相关建议

本帖最后由 hoop 于 2020-12-13 15:51 编辑

我对MCUDBG的功能理解
一般芯片内核进入调试状态时,外设无时钟不会动作,MCUDBG主要是为调试状态提供时钟,为外设的工作提供条件
MCUDBG结合低功耗(Stop)使用时:
若Bit位DBG_STOP=1时,不管是处于调试状态还是正常的运行,进入Stop后的系统时钟是HSI,且在退出Stop后如果不重新做时钟初始化的话,系统时钟就固定为HSI;
若Bit位DBG_STOP=0时,调试进Stop时Link会断线,正常运行进入Stop后的系统时钟会被切换到LSI,且在退出Stop后如果不重新做时钟初始化的话,系统时钟还会被切换到HSI。
原则上,正常进入Stop的话,HSI会被关掉,但是实测当DBG_STOP=1时,HSI被选做了系统时钟。
结论总结:
由此衍生注意点,如果Stop相关应用需要关注功耗的话,一定要在进入Stop前将DBG_STOP清零,即调用库函数MCUDBG_PeriphDebugModeConfig(MCUDBG_STOP, DISABLE);
当然推测此结论同样适用于Sleep及Standby,所以如下三句话建议所有低功耗相关应用都尽量去调用执行一次
       MCUDBG_PeriphDebugModeConfig(MCUDBG_SLEEP, DISABLE);
       MCUDBG_PeriphDebugModeConfig(MCUDBG_STOP, DISABLE);
       MCUDBG_PeriphDebugModeConfig(MCUDBG_STANDBY, DISABLE);
特别说明一下:
前述特点在AT即ST上行为均相同,本贴的目的只是给各位小伙伴们分享下我之前做应用时候的一点心得体会

fuqinyyy 发表于 2020-12-13 17:28

学习了,感谢楼主分享经验。

串联烧烤 发表于 2020-12-13 23:19

在用sleep的时候又什么注意事项呢 等楼主一个更新

hoop 发表于 2020-12-17 19:24

串联烧烤 发表于 2020-12-13 23:19
在用sleep的时候又什么注意事项呢 等楼主一个更新

“低功耗模式相关注意事项”这篇帖子有对Sleep注意点做了一点说明

明天真的好 发表于 2020-12-17 20:14

学习了,感谢楼主的分享,不错的感觉,这个确实很棒的帖子
页: [1]
查看完整版本: MCUDBG结合低功耗使用的相关建议