你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

停机程序调试遇到的坑

[复制链接]
yyq006 发布时间:2018-1-11 17:09
做了个控制器,因为用电池供电,要求低功耗,所以空闲的时候就进入停机模式了。先把停机命令替换成循环等待调试好程序,然后恢复停机命令,结果总是无法唤醒,用LED指示发现有时进入中断了,但还是不能正常工作。折腾了很多天没调好,一气之下拿回家,晚上搞,结果发现工作没问题,一切正常。再拿回单位,又出问题了。这不科学啊,单位和家里用的软件版本都一样。突然发现调试时中断程序里设置了断点,在家的时候是直接全速运行,没设过断点。赶紧试试,把断点都去掉,果然正常运行了。+ v, u/ B8 q1 T2 M4 U# v$ z
以前调试的时候主动停止调试后断点不影响程序运行,没想到进停机模式时调试器自动断开后断点居然还有效,运行到断点就停了,导致外面看起来程序工作不正常。
( g# E& B& E8 F' L第一次做STM的停机程序,经验不足啊。
赞 收藏 评论14 发布时间:2018-1-11 17:09

举报

14个回答
Inc_brza 回答时间:2018-1-11 17:23:15
我做低功耗都会脱离仿真器仿真
废鱼 回答时间:2018-1-12 09:27:24
楼主怎么会说是坑呢?如果在STOP模式下是需要开启STOP仿真才会执行,默认都是关闭的。STOP以后,仿真器就失效了,不会发生类似的问题。
yyq006 回答时间:2018-1-12 09:40:23
Inc_brza 发表于 2018-1-11 17:23
& v) ~! t& S- a& L& u9 H我做低功耗都会脱离仿真器仿真

- d# [9 a, K9 _" d" e6 n4 s脱离仿真器?是怎么做的?
yyq006 回答时间:2018-1-12 15:16:47
安 发表于 2018-1-12 09:27
. W, l1 Y  c) t+ G. H5 s& |楼主怎么会说是坑呢?如果在STOP模式下是需要开启STOP仿真才会执行,默认都是关闭的。STOP以后,仿真器就失 ...
% j# j4 |6 z9 T
我是用KEIL+STLINK调试的,没发现还有stop仿真的选项,应该在哪里设置?
zhoupxa 回答时间:2018-1-12 15:37:49
安 发表于 2018-1-12 09:277 b2 f" D/ a% {" Y0 g) X* G
楼主怎么会说是坑呢?如果在STOP模式下是需要开启STOP仿真才会执行,默认都是关闭的。STOP以后,仿真器就失 ...

0 U4 `- r) `( w/ D8 a5 J- I, F调试过程中发现,MCU进入低功耗模式(待机)后,仿真器无法通过SWD接口连接上
废鱼 回答时间:2018-1-12 16:19:49
zhoupxa 发表于 2018-1-12 15:37) b: }, ~; k* B
调试过程中发现,MCU进入低功耗模式(待机)后,仿真器无法通过SWD接口连接上 ...
( Y* h7 f  `* l5 `  A, i* v& \8 [: M
不同的芯片都保存的地方都不一样,一般是在dbgmcu.h文件中配置开启或者关闭。
yyq006 回答时间:2018-1-12 16:36:23
新手,直接用cubemx生成的程序。刚才找了一下,没发现类似的文件,不知道在哪里。
废鱼 回答时间:2018-1-13 08:57:55
楼主应该说一下芯片型号,不同的芯片存放的地方可能不一样
yyq006 回答时间:2018-1-15 11:49:38
STM32F103C8T6
废鱼 回答时间:2018-1-15 13:54:40
楼主看一下stm32f1xx_hal.h
yyq006 回答时间:2018-1-22 14:10:35
果然有相关的设置,非常感谢。
罹凝寒冰 回答时间:2019-6-25 16:18:22
你好 我也在做ucos ii  stop模式,进stop前执行下面的操作
& f! ?/ p7 U9 M6 U1 ~        EXTI->PR=0XFFFFF;        5 H1 o; u$ m9 s
        SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;  /* 关闭滴答定时器 */. }4 l  t! O9 N7 t% x; ^
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);//使能PWR时钟                 
+ M0 Z8 o  i$ c; `! o4 m0 ?        PWR_BackupAccessCmd(ENABLE);//后备区域访问使能       
4 f! C" Y/ ^: _        PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFI);        //PWR_Regulator_LowPower:电源进去低
3 N/ p7 ^. B2 I  X. A: l% C
$ c, h, {) \4 S- e( P5 h发现调试的话 只能走到关闭滴答定时器,后面的打断点就不跑了  板子上的led也灭了,进入前把串口rx初始化成外部中断,发现可以进中断,然后唤醒就接着使能PWR时钟这句开始跑,,,搞的我一头雾水啊
# X5 B& ^+ ^1 E: T( Z3 u0 E8 J' P5 V5 A' A
这个是什么情况?你有遇到过吗?
大陶 回答时间:2019-8-5 10:41:27
停止模式后 唤醒需要重新配置系统频率 如果不配置采用的是 内部的HSI 8MHZ工作
ikxlf 回答时间:2019-8-5 10:55:28
STOP模式后,仿真器模块你确定还在工作吗,我想对应的时钟都休眠了吧
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版