[STM8]

STM8有时不能唤醒

[复制链接]
923|16
手机看帖
扫描二维码
随时随地手机跟帖
happy_10|  楼主 | 2019-5-6 23:41 | 显示全部楼层 |阅读模式
STM8有时不能唤醒

使用特权

评论回复
supernan| | 2019-5-6 23:46 | 显示全部楼层
还有什么现象?能再详细描述下吗?

使用特权

评论回复
happy_10|  楼主 | 2019-5-6 23:48 | 显示全部楼层
用STM8L做一个遥控器,矩阵按键,MCU平时是休眠(HALT),功耗1uA。
有按键按下则唤醒。现在遇到一个问题:做按键老化测试时,最少140次,最多26000次,MCU就不能被唤醒了,测量电流还是1uA。
重启之后,又能正常工作。
将HALT()前面的中断使能enableInterrupt()屏蔽仍然有这样的问题。

使用特权

评论回复
houcs| | 2019-5-6 23:52 | 显示全部楼层

还有什么现象?能再详细描述下吗?

使用特权

评论回复
happy_10|  楼主 | 2019-5-6 23:55 | 显示全部楼层
按键矩阵:使用的是内部上拉,改用外部上拉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);
}

使用特权

评论回复
happy_10|  楼主 | 2019-5-6 23:55 | 显示全部楼层
做了一个串口调试程序,发现问题在按键测试到27812次时,程序有进入休眠,休眠按键按下有中断,但是没有被唤醒,然后再按按键就没有中断了(按键中断关闭了端口中断)。

使用特权

评论回复
happy_10|  楼主 | 2019-5-6 23:58 | 显示全部楼层

现在修改成加入标志sleepflag,休眠前置位,休眠后清零,只有sleepflag为0后,才关闭中断。
试试效果。

使用特权

评论回复
ayb_ice| | 2019-5-7 09:19 | 显示全部楼层
多怀疑程序吧

使用特权

评论回复
gongche| | 2019-5-7 21:44 | 显示全部楼层
删除休眠前的全局中断使能,简化按键中断初始化和休眠之间的处理,缩短时间,降低按键在这段时间按下的概率

使用特权

评论回复
huwr| | 2019-5-7 21:48 | 显示全部楼层
调整中断的处理方式:确保MCU唤醒之后再关闭中断,这样确保即便当次没有唤醒,再按一次,仍可以唤醒MCU来正常工作

使用特权

评论回复
huanghuac| | 2019-5-7 21:51 | 显示全部楼层
楼主你好,我正在学习STM8的唤醒,能看看你修改后的代码吗???

使用特权

评论回复
heweibig| | 2019-5-7 21:54 | 显示全部楼层

1uA很不错哦

使用特权

评论回复
jiahy| | 2019-5-7 21:57 | 显示全部楼层
用的是中断模式唤醒吗

使用特权

评论回复
bqyj| | 2019-5-7 22:26 | 显示全部楼层
原因是什么,之前怎么经过一定次数后,就失效了

使用特权

评论回复
zhuhuis| | 2019-5-7 22:29 | 显示全部楼层
确保MCU唤醒之后再关闭中断

使用特权

评论回复
tian111| | 2019-5-7 22:33 | 显示全部楼层

是偶尔的问题,还是很频繁的。

使用特权

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

本版积分规则

744

主题

7973

帖子

6

粉丝