打印
[ZLG-ARM]

外中断触发掉电模式后,再也进不了掉电模式

[复制链接]
1509|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
huanhuan03|  楼主 | 2007-1-24 14:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用的是LPC2148,手册上说外中断触发唤醒掉电模式时,不必为了唤醒掉电模式而在向量中断控制寄存器中使能
我在试验板上做试验时发现,当不在向量中断控制寄存器中使能时,程序会唤醒后无视我的再次进入掉电模式,即永远也不再进入掉电模式
但在向量中断控制寄存器中使能时就没有这种现象
请问这个如何能够解释得通?我得代码如下,谢谢

主函数部分
while (1)
      {   
          
        for (n = 0x00010000; n <= 0x00800000; n <<= 1) 
        {
          
             
              if (n == 0x00040000)
              {    putc('a');
                  PCON = 0X02;
                   putc('b');
                   delay(); 
              
              }    
              IOSET1 = n;
              delay();   
           IOCLR1 = 0x00FF0000;     
    }    
     } 

中断初始化部分:
PINSEL1 |= 0x00000001; //选择p0.16管角为INT0功能
    EXTMODE &= 0Xfe;//level trigger
    EXTPOLAR &= 0Xfe;//低电平触发
    EXTINT |= 0X01;//设置的改变导致EXTINT,故清0一次
while((IO0PIN & 0x00010000 )== 0);//INT0

相关帖子

沙发
zlgARM| | 2007-1-24 15:31 | 只看该作者

RE

必须清除外部中断标志位。
你不清除中断标志位,相当于始终处于唤醒状态,当然不能进入掉电模式了。
仔细看一下例程,例程在在进入掉电模式前可是有清除外部中断标志位的。

使用特权

评论回复
板凳
huanhuan03|  楼主 | 2007-1-24 15:42 | 只看该作者

找到了,谢谢

找到了,在ISR中记得清,这里反倒忘了
我是在PCON = 0X02添了一句
while((EXTINT & 0x0f)!=0) 
    EXTINT |=0X0F;
如果是单纯的EXTINT |=0X0F则程序会存在隔一个主程序周期才能进入掉电模式的情况,应该是寄存器操作没有完成导致的;但进入掉电之前写该句的话就没有问题
谢谢了

使用特权

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

本版积分规则

12

主题

32

帖子

0

粉丝