打印
[STM8]

STM8L151有时不能唤醒。

[复制链接]
5186|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xiaoshenke2013|  楼主 | 2013-12-4 11:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 xiaoshenke2013 于 2013-12-6 12:23 编辑

用STM8L做一个遥控器,矩阵按键,MCU平时是休眠(HALT),功耗1uA。
有按键按下则唤醒。现在遇到一个问题:做按键老化测试时,最少140次,最多26000次,MCU就不能被唤醒了,测量电流还是1uA。
重启之后,又能正常工作。
将HALT()前面的中断使能enableInterrupt()屏蔽仍然有这样的问题。
沙发
xiaoshenke2013|  楼主 | 2013-12-4 11:25 | 只看该作者
补充一点:
1.按键矩阵:使用的是内部上拉,改用外部上拉10K电阻,一样会卡在那里不能唤醒。
贴上代码:
void McuHalt(void)
{
  DISABLE_INT(); //先关闭中断避免在进入休眠前有端口中断发生  
  CLK_Peripheral_Disable();
  EnableKeyIsr(ENABLE);//使能端口下降沿中断并将行扫描的端口设置为低
  TIM4_Cmd(DISABLE);
  nop();
  __halt();
  nop();
  KeyPressEvent(); //真正唤醒后才关闭中断   
  TIM4_Cmd(ENABLE);
  CLK_Peripheral_Enable();  
}



//按键接收中断 下降沿中断

#pragma vector=10
__interrupt void EXTI0_IRQHandler(void)
{
  OSSetEvent(KEY_TASK,KEY_INT_EVENT);
  EXTI_ClearITPendingBit(EXTI_IT_Pin0);
}

#pragma vector=11
__interrupt void EXTI1_IRQHandler(void)
{   
  EXTI_ClearITPendingBit(EXTI_IT_Pin1);
}

使用特权

评论回复
板凳
xiaoshenke2013|  楼主 | 2013-12-6 10:03 | 只看该作者
本帖最后由 xiaoshenke2013 于 2013-12-6 10:04 编辑

做了一个串口调试程序,发现问题在按键测试到27812次时,程序有进入休眠,休眠按键按下有中断,但是没有被唤醒,然后再按按键就没有中断了(按键中断关闭了端口中断)。
现在修改成加入标志sleepflag,休眠前置位,休眠后清零,只有sleepflag为0后,才关闭中断。
试试效果。

使用特权

评论回复
地板
xiaoshenke2013|  楼主 | 2013-12-6 12:22 | 只看该作者
本帖最后由 xiaoshenke2013 于 2013-12-6 12:49 编辑

问题解决,  如下处理:
      1.删除休眠前的全局中断使能,简化按键中断初始化和休眠之间的处理,缩短时间,降低按键在这段时间按下的概率;
      2.调整中断的处理方式:确保MCU唤醒之后再关闭中断,这样确保即便当次没有唤醒,再按一次,仍可以唤醒MCU来正常工作。

使用特权

评论回复
5
GERALD_WONG| | 2014-1-1 20:05 | 只看该作者
楼主你好,我正在学习STM8的唤醒,能看看你修改后的代码吗???

使用特权

评论回复
6
shcdz| | 2014-5-17 18:01 | 只看该作者
STM8L151C6T6  我司现货35K 低价出售1371432-7748   QQ7927-65998

使用特权

评论回复
7
FAQ| | 2014-5-18 15:44 | 只看该作者
xiaoshenke2013 发表于 2013-12-6 12:22
问题解决,  如下处理:
      1.删除休眠前的全局中断使能,简化按键中断初始化和休眠之间的处理,缩短时 ...

关注下

使用特权

评论回复
8
zhouchenxing| | 2015-2-9 10:27 | 只看该作者
楼主,怎么联系您???

使用特权

评论回复
9
sun1238898| | 2015-2-9 11:31 | 只看该作者
不错,恭喜顺利解决。

使用特权

评论回复
10
threetigher| | 2016-10-20 16:19 | 只看该作者
1uA很不错哦

使用特权

评论回复
11
Rooney30| | 2016-10-20 17:43 | 只看该作者
用的是中断模式唤醒吗

使用特权

评论回复
12
zhuomuniao110| | 2016-10-20 18:32 | 只看该作者
xiaoshenke2013 发表于 2013-12-6 12:22
问题解决,  如下处理:
      1.删除休眠前的全局中断使能,简化按键中断初始化和休眠之间的处理,缩短时 ...

原因是什么,之前怎么经过一定次数后,就失效了

使用特权

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

本版积分规则

1

主题

4

帖子

0

粉丝