|
做了个控制器,因为用电池供电,要求低功耗,所以空闲的时候就进入停机模式了。先把停机命令替换成循环等待调试好程序,然后恢复停机命令,结果总是无法唤醒,用LED指示发现有时进入中断了,但还是不能正常工作。折腾了很多天没调好,一气之下拿回家,晚上搞,结果发现工作没问题,一切正常。再拿回单位,又出问题了。这不科学啊,单位和家里用的软件版本都一样。突然发现调试时中断程序里设置了断点,在家的时候是直接全速运行,没设过断点。赶紧试试,把断点都去掉,果然正常运行了。 以前调试的时候主动停止调试后断点不影响程序运行,没想到进停机模式时调试器自动断开后断点居然还有效,运行到断点就停了,导致外面看起来程序工作不正常。 第一次做STM的停机程序,经验不足啊。 ![]() |
微信公众号
手机版
脱离仿真器?是怎么做的?
我是用KEIL+STLINK调试的,没发现还有stop仿真的选项,应该在哪里设置?
调试过程中发现,MCU进入低功耗模式(待机)后,仿真器无法通过SWD接口连接上
不同的芯片都保存的地方都不一样,一般是在dbgmcu.h文件中配置开启或者关闭。
EXTI->PR=0XFFFFF;
SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk; /* 关闭滴答定时器 */
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);//使能PWR时钟
PWR_BackupAccessCmd(ENABLE);//后备区域访问使能
PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFI); //PWR_Regulator_LowPower:电源进去低
发现调试的话 只能走到关闭滴答定时器,后面的打断点就不跑了 板子上的led也灭了,进入前把串口rx初始化成外部中断,发现可以进中断,然后唤醒就接着使能PWR时钟这句开始跑,,,搞的我一头雾水啊
这个是什么情况?你有遇到过吗?