打印
[STM32L1]

L151单片机很奇怪无法修改DBG->CR寄存器

[复制链接]
865|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 天上飞的树儿 于 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:

寄存器截图.png (60.49 KB )

RM0038为STM32L1部分单片机参考手册

RM0038为STM32L1部分单片机参考手册

使用特权

评论回复
沙发
airwill| | 2019-9-15 11:49 | 只看该作者
权限问题吧, 可能是只有调试系统可以改写的寄存器位

使用特权

评论回复
板凳
天上飞的树儿|  楼主 | 2019-9-16 09:27 | 只看该作者
本帖最后由 天上飞的树儿 于 2019-9-16 09:28 编辑

设备处于调试模式的时候,单步执行可以修改这个寄存器,参考手册上说用户可以修改的.麻烦经验丰富额版主想想还有什么可能性.
@airwill


使用特权

评论回复
地板
天上飞的树儿|  楼主 | 2019-9-16 14:15 | 只看该作者
jlink在下载程序时都会对那些寄存器进行写入如何看到呢?

使用特权

评论回复
5
xiaoqizi| | 2019-10-12 15:10 | 只看该作者
这个是干嘛用的寄存器啊

使用特权

评论回复
6
木木guainv| | 2019-10-12 15:13 | 只看该作者
确实很奇怪

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

30

帖子

0

粉丝