OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 18620|回复: 8

用一个外部中断使stm32进入停止模式,但不能被同一个外部中断唤醒?

[复制链接]

4

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2013-6-16
在线时间
1 小时
发表于 2013-8-6 21:50:59 | 显示全部楼层 |阅读模式

如题,要设计一个电路,按一个按键超过3秒进入停止模式,按1秒左右唤醒。
这是我中断服务程序,实验了,可以进入停止模式,但不能唤醒,为什么?

void EXTI0_IRQHandler(void)
{
u16 ict=0;
                             
if(EXTI_GetITStatus(EXTI_Line0) != RESET)
 {    
  ict=Check_Button();                     //获取按键时间
 if(ict <30)                                       //小于3秒时唤醒
   {
    SystemInit ();
     RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB,ENABLE);  
     RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOC,ENABLE);       
   }
 else                                            //大于于3秒时进入停止模式
   {
     RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE); 
     WR_EnterSTOPMode(PWR_Regulator_LowPower,PWR_STOPEntry_WFI); 
      while(1);
   }
 }
   EXTI_ClearITPendingBit(EXTI_Line0);  
}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-8-6 23:09:39 | 显示全部楼层
貌似停止模式唤醒后,还是从进入停止模式时的地方开始运行,那么你可以加入一些点灯什么的来辅助判断下,是没有唤醒还是唤醒了,没有成功运行?
据说停止模式唤醒后时钟得重新配置,否则跑的是8Mhz...你测试下吧.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

4

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2013-6-16
在线时间
1 小时
 楼主| 发表于 2013-8-7 16:19:34 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
我试了下,进入停止模式后,程序就停在那里了,唤醒后接着执行。
所以当按键进入停止模式后,中断服务程序一直没有结束,就不能被唤醒。
我现在做的是在中断服务程序中设置一个标志,让中断服务程序能执行完成,再在主函数里判断该标志,是否要进入停止模式。
但功耗还是有3.6mA,IO口都设为模拟输入了。
回复 支持 反对

使用道具 举报

160

主题

967

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2097
金钱
2097
注册时间
2014-3-7
在线时间
491 小时
发表于 2015-11-4 15:33:13 | 显示全部楼层
回复【3楼】zhangqian:
---------------------------------
楼主的停止模式外部中断程序能不能分享一下
回复 支持 反对

使用道具 举报

160

主题

967

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2097
金钱
2097
注册时间
2014-3-7
在线时间
491 小时
发表于 2015-11-4 15:34:11 | 显示全部楼层
我的程序不能唤醒

停止模式不能用b1唤醒.rar

450.7 KB, 下载次数: 668

回复 支持 反对

使用道具 举报

1

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
165
金钱
165
注册时间
2018-1-18
在线时间
22 小时
发表于 2019-8-7 13:08:54 | 显示全部楼层
谢谢分享,学习3楼做法,进一步探究为啥我的程序在中断里进入中断唤醒不了的问题。
回复 支持 反对

使用道具 举报

0

主题

131

帖子

0

精华

初级会员

Rank: 2

积分
175
金钱
175
注册时间
2019-7-1
在线时间
6 小时
发表于 2019-8-7 13:29:51 | 显示全部楼层
感谢楼主分享
IIS7站长  http://www.iis7.com/
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
3
金钱
3
注册时间
2020-4-2
在线时间
0 小时
发表于 2020-4-2 16:04:16 | 显示全部楼层
好像是因为外部用来唤醒的中断的优先级需要设置成最高优先级,才可以唤醒,不然它打断不了还在停机状态的中断,然后就唤不醒
回复 支持 反对

使用道具 举报

0

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
101
金钱
101
注册时间
2019-5-9
在线时间
22 小时
发表于 2020-11-26 08:54:15 | 显示全部楼层
寻蒙迷 发表于 2020-4-2 16:04
好像是因为外部用来唤醒的中断的优先级需要设置成最高优先级,才可以唤醒,不然它打断不了还在停机状态的中 ...

我用的STM32L152的片子, 将外部中断的优先级设置成最高, 都不能被唤醒的
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-23 04:30

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表