本帖最后由 天上飞的树儿 于 2019-9-14 08:34 编辑
低功耗设备,在每次使用jlink烧写程序时,jlink会自动把DBGMCU_CR寄存器下面的DBG_SLEEP,DBG_STOP,DEG_STANDBY位置为1.这个寄存器只有POR复位才可以影响.导致每次烧写完成程序后必须把设备电池拔下来,再上电才可以正常进入休眠.针对这个问题我在程序内部添加对这个寄存器的这些位置0的操作,但是不知道为什么函数语句没有任何作用,根据printf出来的内容,我执行清零操作之后这些寄存器仍旧是1.
同样的我也尝试调用了,HAL_DBGMCU_DisableDBGStopMode()等等库函数,仍旧没有任何效果.
L1系列的单片机操作DBG寄存器不需要像F0系列单片机一样首先启用DBG的时钟"__HAL_RCC_DBGMCU_CLK_ENABLE()".
想要达到的目的是可以正常在程序中清零此寄存器,而不需要每次烧写完成程序拔一次电池执行断电复位.
低功耗设备大家应该都会遇到类似问题,希望讨论一下.
截图是L151参考手册此寄存器的map:
|