如何在低功耗模式下debug MCU?

简介: 如何在低功耗模式下debug MCU?

正常情况下,通过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。


相关文章
|
2天前
|
物联网
STC51单片机-中断控制LED-物联网应用系统设计项目开发
STC51单片机-中断控制LED-物联网应用系统设计项目开发
55 0
|
2天前
|
传感器 监控 芯片
嵌入式系统中MCU与SoC通信方式的选择与应用
嵌入式系统中MCU与SoC通信方式的选择与应用
86 3
|
5月前
|
芯片
一款LED段码显示屏驱动芯片方案
一、基本概述 TM1620是一种LED(发光二极管显示器)驱动控制专用IC,内部集成有MCU数字接口、数据锁存器、LED驱动等电路。本产品质量可靠、稳定性好、抗干扰能力强。 二、基本特性 采用CMOS工艺 显示模式(8段×6位~10段×4位) 辉度调节电路(8 级占空比可调) 串行接口(CLK,STB,DIN) 振荡方式:内置RC振荡 内置上电复位电路 内置数据锁存电路 内置针对LED反偏漏电导致暗亮问题优化电路 抗干扰能力强 封装形式:SOP20 三、主要应用 主要适用于家电设备(智能热水器、微波炉、洗衣机、空调、电磁炉)、机顶盒、电子称、智能电表等数码管或LED
59 0
|
10月前
|
传感器 存储 芯片
STM32F407硬件I2C实现MPU6050通讯(CUBEIDE)
STM32F407硬件I2C实现MPU6050通讯(CUBEIDE)
191 0
|
11月前
|
传感器 5G 数据处理
ZYNQ(FPGA)与DSP之间GPIO通信
基于 TI KeyStone 架构 C6000 系列 TMS320C6657双核C66x 定点/浮点 DSP以及 Xilinx Zynq-7000 系列 XC7Z035/045 SoC 处理器设计的高端异构多核评估板,由核心板与评估底板组成。 DSP采用 TMS320C6657 双核C66x 定点/浮点,每核主频1GHz/1.25GHz。 Xilinx Zynq SoC处理器采用的XC7Z035/045集成PL端Kintex-7架构+PS 端双核ARM Cortex-A9 ,28nm可编程逻辑资源。
ZYNQ(FPGA)与DSP之间GPIO通信
|
XML 传感器 芯片
可编程 USB 转串口适配器开发板可编程的含义
可编程USB转UART/I2C/SMBusS/SPI/CAN/1-Wire适配器USB2S(USB To Serial ports)是多种数字接口物理层协议转发器,广泛应用于电子设备开发测试、工业数字接口转换、数字接口学习验证等领域。
|
XML 传感器 数据格式
可编程 USB 转串口适配器开发板主要开发测试作用
上面写的东西不少,其实这个模块用法特别简单,拿到套件和专门的工具软件后一分钟都不需要就完全明白了,如果想编写自己的xml驱动,随便打开一个照葫芦画瓢,然后另存就行。
|
算法 网络协议 定位技术
【BC20开发板的NB和GPS的硬件调试】
【BC20开发板的NB和GPS的硬件调试】
370 0
|
智能硬件
STM32智能家居7天小项目(2)串口的使用
STM32智能家居7天小项目(2)串口的使用
116 0
高通平台开发系列讲解(UART篇)高速UART IPC调试方法
高通平台开发系列讲解(UART篇)高速UART IPC调试方法
313 0
高通平台开发系列讲解(UART篇)高速UART IPC调试方法