打印

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

[复制链接]
13747|54
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ripny|  楼主 | 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); 这句代码

应该不会有错吧...
沙发
IJK| | 2010-5-17 10:46 | 只看该作者
查一下是不是复位脚或者PA0容易受台灯干扰。
PA0:可以试着直接接地。
复位脚:可以试着直接接电源。
然后看看是否还受台灯干扰

使用特权

评论回复
板凳
ripny|  楼主 | 2010-5-17 14:37 | 只看该作者
之前都试过了....硬件上平时PA0接地的;
复位应该没问题,因为我试过一些没有进入待机模式的程序,无论外界怎么干扰,都不会自动复位.

然后PA0我直接断开,让他浮空,都不行...还是一开灯,程序就复位..

使用特权

评论回复
地板
IJK| | 2010-5-17 14:57 | 只看该作者
对于ARM芯片(包括STM32),从STANDBY模式唤醒,代码就从复位入口开始运行,基本上等同于复位。

如果有示波器(最好是数字示波器),建议看一下:Vdd、复位脚以及PA0,当开灯时这些引脚是什么状态。

使用特权

评论回复
5
香水城| | 2010-5-17 17:00 | 只看该作者
请在复位后,通过复位标志寄存器察看复位原因,也许会有所发现。

使用特权

评论回复
6
ripny|  楼主 | 2010-5-30 10:31 | 只看该作者
香主你好!
无论是WAKE-UP复位,还是NRST复位,或者是外部一个小小的干扰引起的复位,复位后,RCC->CSR始终是0X0C000000
现在问题是比较明显,如果没有进入待机模式,外部无论怎么干扰,都不会复位
但是如果进入待机模式,外部只要一个很微弱的干扰,例如万用表任意一个档位接STM32的任意一个管教,都会引起WAKE UP事件....

使用特权

评论回复
7
ripny|  楼主 | 2010-5-30 10:38 | 只看该作者
晕,在待机模式下......甚至是随便用一根导电的轻轻一碰任意一个无关的管脚,都会触发复位事件(或者是WAKE UP事件)

使用特权

评论回复
8
香水城| | 2010-5-30 12:07 | 只看该作者
请问,在进入待机模式之前,那些无关的管脚都是处于什么配置模式?

使用特权

评论回复
9
ripny|  楼主 | 2010-5-30 18:01 | 只看该作者
无关的管脚是应该是复位之后的状态,我没有对它们进行配置.

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

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

所以我觉得有可能是像按键抖动那样的问题?但是要对WAKE UP脚消抖,好像不太可能....奔溃了...

使用特权

评论回复
10
香水城| | 2010-5-30 18:04 | 只看该作者
请把所有无用的管脚配置为模拟输入,或配置为推挽输出同时接地并输出'0'。

复位之后所有管脚为浮空输入状态,如果没有接任何外部电路,极易受到干扰。

使用特权

评论回复
11
ripny|  楼主 | 2010-5-30 22:36 | 只看该作者
香主...再次麻烦你....

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

有个问题我不太明白....
STM32的用户手册上写着:待机模式可实现系统的最低功耗。该模式是在Cortex-M3深睡眠模式时关闭电压调节器。整个1.8V供电区域被断电。PLL、HSI和HSE振荡器也被断电。SRAM和寄存器内容丢失。只有备份的寄存器和待机电路维持供电(见图4)。
(见STM32 RM_CH的 4.3.5节)
那就算之前配置了IO, 进入待机模式了这些配置也将是无效的啊?对吗?

使用特权

评论回复
12
香水城| | 2010-5-31 21:24 | 只看该作者
你的理解是正确的,但是如果你的系统并没有真正地进入待机模式,则情形就不一样了;你可以检查一下,看看系统是否正地进入了待机模式。

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

使用特权

评论回复
13
mxh0506| | 2012-6-30 11:01 | 只看该作者
没有下文了? 如果有结论的话, 这是个很有借鉴意义的贴子. 先做个记号.

使用特权

评论回复
14
我要学stMCU| | 2013-11-12 11:35 | 只看该作者
楼主问题提出来了,问什么不结贴??我也遇到和楼主相似的问题,是在没进入待机模式的时候,随便碰一个IO口,就会复位,但是一旦插上JLINK就没有影响 ,所以我连调试都没有办法.

使用特权

评论回复
15
戈卫东| | 2013-11-12 11:47 | 只看该作者
EMI干扰.
你的板子EMC做的不够或根本就没有

使用特权

评论回复
16
我要学stMCU| | 2013-11-12 13:05 | 只看该作者
嗯,可能吧,开发板,应该没有EMC吧,我的问题解决了,因为我是在中断里进入待机模式的,所以中断了加了一个判断,就可以了。

使用特权

评论回复
17
Marco-Marco| | 2017-9-16 22:24 | 只看该作者
尴尬。7年之后我也遇到了。用的STM32L0. 关键是不稳定,时有时无,所以很难判断

使用特权

评论回复
18
lattice1| | 2019-2-27 14:27 | 只看该作者
牛X了,9年后,遇到同样问题,STM32L053R8,进入stop睡眠模式,有时因为外部的连接电线,螺丝刀碰到金属产品外壳,人的触摸,不小心都可能唤醒。2年了,各种方法,软件,硬件,都想了办法,如故。 不知道我牛了逼,还是ST牛X。

使用特权

评论回复
19
adgfadrga| | 2020-12-2 14:31 | 只看该作者
lattice1 发表于 2019-2-27 14:27
牛X了,9年后,遇到同样问题,STM32L053R8,进入stop睡眠模式,有时因为外部的连接电线,螺丝刀碰到金属产 ...

你这个像esd事件了

使用特权

评论回复
20
Youngmanzs| | 2021-1-2 11:08 | 只看该作者
遇到同样的问题,能不能说说,后面你怎么解决的

使用特权

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

本版积分规则

0

主题

10

帖子

1

粉丝