休眠模式的推出问题!

2019-03-24 15:09发布

小弟在做一个项目,按键长按5s以后,我给LEDOnOff一个SWITCHOFF的值,SWITCHOFF是定义的枚举类型,然后执行下面的程序进入休眠模式,可是再通过按键无法唤醒系统,请问下是为什么呢?(最下面是port的中断程序) void Task_LEDonoff(void)
{
  switch(LEDOnOff)
  {
  default: break;
  case HOLD:
    break;
  case SWITCHON:
    P1SEL |= 0x0c;
    P1DIR |= 0x1c;
    P1OUT |= 0x10;
    LEDOnOff = HOLD;
    break;
  case SWITCHOFF:
    P1SEL &=~ 0x0c;
    P1DIR &=~ 0x1c;
    P1OUT &=~ 0x10;
    _BIS_SR(LPM1_bits);
    break;
  }
}  #pragma vector=PORT1_VECTOR
__interrupt void Port1(void)
{
  _BIC_SR_IRQ(LPM1_bits);
 
  Task_Delay(10);
  if(!(0x01&P1IN))                  // Debouncing
  {
    if((ToggleValue != CHANGEMODE))
    {
      TBCTL |= TBCLR;
      TBCTL = TBSSEL0 + MC0;        // ACLK=32768Hz,
      TBCCTL0 = CCIE;
      TBCCR0 = 3277;                // Fixed time = 0.1s
      SwitchAction = ACTION;
    }
  }
 
  P1IFG &=~ 0x01;
} 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
13条回答
零晨
1楼-- · 2019-03-24 16:45
< 另外请问有没有某个管脚动作是可以直接退出低耗电模式的?
wstt
2楼-- · 2019-03-24 19:27
 精彩回答 2  元偷偷看……
零晨
3楼-- · 2019-03-24 19:53
我已经有I/O口中断__interrupt void Port1(void),而且在中断中也设置了退出低功耗模式的指令,但是程序运行不行,停下来看程序也是一直都在_BIS_SR(LPM1_bits);下一条,请教大神了!
wstt
4楼-- · 2019-03-25 01:30
原帖由 零晨 于 2011-12-9 11:35 发表
我已经有I/O口中断__interrupt void Port1(void),而且在中断中也设置了退出低功耗模式的指令,但是程序运行不行,停下来看程序也是一直都在_BIS_SR(LPM1_bits);下一条,请教大神了!

有没有试下把断点设置在中断服务函数中?比较中断服务函数的执行时间是很短的,看能不能进到ISR中去
lcofjp
5楼-- · 2019-03-25 05:39
 精彩回答 2  元偷偷看……
鸵鸟蝈蝈
6楼-- · 2019-03-25 11:15
只要有中断,就能唤醒CPU。
一般是在While(1)中设置CPU的LPM模式

一周热门 更多>

相关问题

    相关文章