打印

LPC2368中断问题求助

[复制链接]
1635|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lishong|  楼主 | 2011-3-18 18:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 lishong 于 2011-3-18 18:09 编辑

测试程序结构如下:
extern  void Timer1_Handler(void);
volatile uint32 timCntB;
void Timer1Init (void)
{
    T1TCR = 0x00;
    T1IR = 0xffffffff;
    T1CTCR= 0x00;
    T1TC = 0;
    T1PR = 0;
    T1MCR = 0x03;
    T1MR0 = Fpclk;//每秒中断一次
   
    VICIntSelect = 0;
    VICVectAddr0 = (uint32)Timer1_Handler;
    VICVectCntl0 = 0x05;
    VICIntEnable |= 1 << 5;

    T1TCR = 0x03;
    T1TCR = 0x01;
}
void Timer1_Exception(void)
{

   VICIntEnClr = 1 << 5;
    VICVectAddr = 0;            //interrupt close 通知中断控制器中断结束
   
  if(timCntB == 0)
  {
     timCntB = 1;
     led1On();//led1亮
  }
  else
  {
     timCntB = 0;
     led1Off();//led1灭
  }
  T1IR = 0x01;
  VICIntEnable = 1 << 5;
     
}
void main()
{
  timCntB = 0;
  Timer1Init ();
  while(1)
  {
      if(timCntB == 0)
     {
       led2On();//led2亮
      }
     else if(timCntB == 1)
     {
        led2Off();//led2灭
     }
  }

}

现在出现的现象是:led2能正常亮/灭;而led1不能.
根据这个现象可以肯定的是每秒一次中断是正常的,但在中断处理程序里面,变量timCntB 的标志修改了,但led1没有正常工作.请问是什么原因导致这个问题的呢?
另:
ledxOn()和ledxOff()如下结构定义
#define         ledXOn()    {FIO1MASK = 0xffffffff & (~P1X);FIO1CLR |= P1X;}      
#define         ledXOff()    {FIO1MASK = 0xffffffff & (~P1X);FIO1SET |=
P1X;}
我试过把两个灯在程序里互换了位置,结果也是在中断中的灯不能正常亮/灭.所以,不是灯和等的控制问题.

相关帖子

沙发
lishong|  楼主 | 2011-3-19 08:36 | 只看该作者
没有人遇到这个问题么?

使用特权

评论回复
板凳
6019赵文| | 2011-3-20 21:16 | 只看该作者
没有进入中断是不是就?  你弄个断点调试一下!

使用特权

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

本版积分规则

49

主题

137

帖子

3

粉丝