打印

急:请教一个LPC21xx的外中断唤醒CPU,但不产生中断的例子

[复制链接]
1836|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
czj8127|  楼主 | 2008-9-1 11:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我在周立功的例程里调试这个程序有些东西搞不懂,请教高手指点
  1,第10句为什么要用IO0SET而不用IO0PIN呢?IO0SET不是只写吗?好像它读出的数都是0啊。
  2.当p0.16设置位外中断时,对p0.16操作(比如按键按下或抬起)会对IO0SET有什么影响呢?它的位会变化吗?
  3.是不是p0.16按键一抬起,系统又进入掉电模式了?对这个功能不太懂,能否讲一下
  4./* 当系统被唤醒后,取反BEEP控制 */下面的三句10、11、12为什么要那么写呢?尤其if ((IO0SET & BEEP) == 0) 不太理解。
请高手指点啊 调试的结果好像和它书上说的不太一样。书上是2131芯片,我用的是2132芯片调试的,应该区别不大吧?程序如下:

#include "config.h"

#define        BEEP    1 << 7     // P0.7控制蜂鸣器         1
int main (void)
{
 PINSEL1 = 0x00000001;      // P0.16连接EINT0                    2
 IO0DIR  = BEEP;              // 设置BEEP控制口为输出,其余输入    3
    
 EXTWAKE = 0x01;             // 外部中断0唤醒芯片                  4
 EXTINT  = 0x01;             // 清除EINT0中断标志                  5
    
 IO0SET = BEEP;                                           //      6

 while (1)                                         //         7
  {
    PCONP = 0x00;       // 关闭定时器、RTC、UART等功能部件        8
    PCON  = 0x02;         // 系统进入掉电模式                       9
        
    /* 当系统被唤醒后,取反BEEP控制 */
    if ((IO0SET & BEEP) == 0) IO0CLR = BEEP;      //             10
      else IO0SET = BEEP;                       //              11   
      EXTINT  = 0x01;          // 清除EINT0中断标志             12
    }

    return (0); 

相关帖子

沙发
czj8127|  楼主 | 2008-9-2 08:50 | 只看该作者

怎么没人回复呢

大家说说啊。我实在不懂。

使用特权

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

本版积分规则

16

主题

20

帖子

0

粉丝