打印
[应用相关]

如何在低功耗模式下debugMCU?

[复制链接]
461|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
在正常情况下,通过SWD在线调试时,一旦芯片进入低功耗模式(Stop或者Standby),调试就会断开。原因是进入Stop或者Standby模式后,内核时钟就停止了。如果想在调试低功耗代码时,还可以正常通过调试接口debug,有没有什么办法呢?

以STM32F030 Stop模式为例,方法是将DBGMCU_CR寄存器的DBG_STOP位置1。

可以看到,DBG_STOP置1时,FCLK和HCLK将处于开启状态,由内部RC振荡器提供时钟,所以还可以继续debug。之前在调试低功耗功能时,我都是通过加打印信息来调试的。所以在看到此功能时,就迫不及待的去试了一下。首先,使用官方HAL库 Examples\PWR\PWR_CurrentConsumption 工程,将原例程简化了一下,使能 DBG_STOP,之后通过WFI方式进入stop模式,然后while(1)里翻转LED,通过按键方式唤醒。 理论上述代码应该是先进入低功耗,之后按键唤醒的话,LED才开始闪烁。但实际现象却是LED直接就闪烁了,这是怎么回事呢?后来经过分析,是因为HAL库在初始化时,使用了systick同时开启了中断,当DBG_STOP设置位1时,systick 因为时钟在,所以还继续正常运行,导致了systick中断唤醒了MCU,所以进入了到while(1)里。当我们把systick中断关掉: 这时就进入了低功耗。因为HAL_Delay 函数也使用了systcik,所以这里也注释掉,或者也可以换成其他的延时函数。HAL库在时钟初始化前就开启了systick,原因是后面的延时函数用的就是systcik实现的。这时我们全速运行,可以看到debug连接没有断掉,也没有再进入while(1)里,此时进入了低功耗函数,可以通过调试窗口的stop来验证,可以看到一直停在下面WFI里。需要注意的是,stop之后再单步或者全速运行,就会从WFI跳出继续向下运行。所以执行_WFI()函数时,必须是全速执行,不可以单步执行。 重新复位全速运行后,在while(1)里加断点,可以看到没有进入到断点,这时按一下按键唤醒MCU,就跳入到断点里了。这样现象就正确了。最后总结一下:1) 通过将DBG_STOP置1,可以支持在低功耗模式下debug MCU。2) HAL库里使用systick中断,使用WFI进入低功耗前,需要注意将中断关掉。如果使用WFE进入低功耗,需要将systick使能计数标志位置0。



使用特权

评论回复
沙发
Pretext| | 2022-12-12 14:16 | 只看该作者
一般进入低功耗,调试也没什么用了,只要不退出调试就行。

使用特权

评论回复
板凳
朝生| | 2022-12-12 14:16 | 只看该作者
学到了,之前低功耗调试一直出问题,原来可以这么解决。

使用特权

评论回复
地板
天天向善| | 2022-12-12 14:17 | 只看该作者
ST的全系列芯片都可以这么配置吗?

使用特权

评论回复
5
童雨竹| | 2024-10-11 08:10 | 只看该作者

只要内存占用量不超过 256.0 就可以用 small 模式编译

使用特权

评论回复
6
Wordsworth| | 2024-10-11 09:13 | 只看该作者

专门的滤波器来阻止交流噪声进入周围的电路

使用特权

评论回复
7
Clyde011| | 2024-10-11 10:16 | 只看该作者

电流型变换器电流检测电阻的公共接点和输出端电阻分压器的下端

使用特权

评论回复
8
公羊子丹| | 2024-10-11 11:09 | 只看该作者

超过变量128后必须使用compact模式编译

使用特权

评论回复
9
万图| | 2024-10-11 12:12 | 只看该作者

引线长度就决定了其响应信号的波长

使用特权

评论回复
10
Uriah| | 2024-10-11 13:15 | 只看该作者

数字电压表(DVM)或仪器来测量效率

使用特权

评论回复
11
帛灿灿| | 2024-10-11 15:11 | 只看该作者

任何一条PCB引线都可能成为天线

使用特权

评论回复
12
Bblythe| | 2024-10-11 16:14 | 只看该作者

滤波电容、功率开关管或整流器、电感或变压器

使用特权

评论回复
13
周半梅| | 2024-10-11 18:10 | 只看该作者

128以上的某些地址为特殊寄存器使用,不能给程序用

使用特权

评论回复
14
Pulitzer| | 2024-10-11 19:13 | 只看该作者

交流能量就会从输入或输出滤波电容上流进流出

使用特权

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

本版积分规则

508

主题

1938

帖子

5

粉丝