关于STM32进入待机模式后很容易自动复位

Jnfnet   2010-5-15 19:32 楼主
把STM32按照正确的时序进入待机模式之后, 一开始都还正常..外部中断是不能唤醒的, 除非在PA0(WAKE UP PIN)上加一个上升沿.
但是很奇怪的是, 我发现我开一下台灯, 系统居然自己复位了, 就好像我按了复位键或者按了PA0一样....随后发现,貌似外界有一点小小的干扰都会导致系统自己跑出待机模式...
请问大家有没有碰过这些问题啊?
PS:台灯放在开发板旁边,但是和开发板的电源是独立的. 另外有时候碰几下VDD那根线, 也会出现同样的问题.

以下是我进入待机模式的代码:

RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);
PWR_WakeUpPinCmd(ENABLE); //使能WAKE-UP管脚
PWR_EnterSTANDBYMode();   //主机进入待机模式(最低功耗)

系统复位之后,也会执行 PWR_WakeUpPinCmd(DISABLE); 这句代码

应该不会有错吧...

回复评论 (13)

查一下是不是复位脚或者PA0容易受台灯干扰。
PA0:可以试着直接接地。
复位脚:可以试着直接接电源。
然后看看是否还受台灯干扰
点赞  2010-5-17 10:46
之前都试过了....硬件上平时PA0接地的;
复位应该没问题,因为我试过一些没有进入待机模式的程序,无论外界怎么干扰,都不会自动复位.

然后PA0我直接断开,让他浮空,都不行...还是一开灯,程序就复位..
点赞  2010-5-17 14:37
对于ARM芯片(包括STM32),从STANDBY模式唤醒,代码就从复位入口开始运行,基本上等同于复位。

如果有示波器(最好是数字示波器),建议看一下:Vdd、复位脚以及PA0,当开灯时这些引脚是什么状态。
点赞  2010-5-17 14:57
                                 请在复位后,通过复位标志寄存器察看复位原因,也许会有所发现。
点赞  2010-5-17 17:00
版主你好!
无论是WAKE-UP复位,还是NRST复位,或者是外部一个小小的干扰引起的复位,复位后,RCC->CSR始终是0X0C000000
现在问题是比较明显,如果没有进入待机模式,外部无论怎么干扰,都不会复位
但是如果进入待机模式,外部只要一个很微弱的干扰,例如万用表任意一个档位接STM32的任意一个管教,都会引起WAKE UP事件....
点赞  2010-5-30 10:31
                                 晕,在待机模式下......甚至是随便用一根导电的轻轻一碰任意一个无关的管脚,都会触发复位事件(或者是WAKE UP事件)
点赞  2010-5-30 10:38
                                 请问,在进入待机模式之前,那些无关的管脚都是处于什么配置模式?
点赞  2010-5-30 12:07
无关的管脚是应该是复位之后的状态,我没有对它们进行配置.

很奇怪,找了很久,发现主要用一根杜邦线把PA0(也就是WAKE UP脚) 引出来(无论引线是悬空,或者接地) 之后, 就会发生这种问题, 比如随便拿一根导线去碰一下无关的管脚,就会唤醒系统.

但是如果不用杜邦线引出来, 一切都正常, 系统很稳定.

所以我觉得有可能是像按键抖动那样的问题?但是要对WAKE UP脚消抖,好像不太可能....奔溃了...
点赞  2010-5-30 18:01
请把所有无用的管脚配置为模拟输入,或配置为推挽输出同时接地并输出'0'。

复位之后所有管脚为浮空输入状态,如果没有接任何外部电路,极易受到干扰。
点赞  2010-5-30 18:04
版主...再次麻烦你....

按照你的指示,我把所有IO都配置为模拟输入或者推挽输出0, 在系统初始化前或者 在进入待机模式前 都设置一次. 结果还是原来那样子

有个问题我不太明白....
STM32的用户手册上写着:待机模式可实现系统的最低功耗。该模式是在Cortex-M3深睡眠模式时关闭电压调节器。整个1.8V供电区域被断电。PLL、HSI和HSE振荡器也被断电。SRAM和寄存器内容丢失。只有备份的寄存器和待机电路维持供电(见图4)。
(见STM32 RM_CH的 4.3.5节)
那就算之前配置了IO, 进入待机模式了这些配置也将是无效的啊?对吗?
点赞  2010-5-30 22:36
你的理解是正确的,但是如果你的系统并没有真正地进入待机模式,则情形就不一样了;你可以检查一下,看看系统是否正地进入了待机模式。

还有一点就是系统中不要有悬空的管脚,不用的管脚都要把它们接到地或接到VCC,这样可以有效地避免各种干扰。
点赞  2010-5-31 21:24

引用: 原帖由 niantianxia 于 2010-5-17 10:46 发表 查一下是不是复位脚或者PA0容易受台灯干扰。 PA0:可以试着直接接地。 复位脚:可以试着直接接电源。 然后看看是否还受台灯干扰
请问后来怎么解决的呀?

我也遇到了 很晕倒 不过不是台灯 我一上电就自动不停的复位。

点赞  2011-7-25 14:30

回复 12楼 fish1983 的帖子

我的是stm32 64封装的 那么多空脚,不可能不用的就接地和上拉啊,因为很多是io脚,会影响芯片的。
点赞  2011-7-25 14:33
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复