打印

定时器0为什么进不了中断,请教!!!

[复制链接]
1606|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
march2011|  楼主 | 2011-11-20 13:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <LPC213x.h>
#define   LED_CON   (0x01<<7)
#define   LED_OFF()   IO0SET=LED_CON
#define   LED_ON()    IO0CLR=LED_CON
#define uint32 unsigned int
/**********************************************************/
/* 函数名称:IRQ_Timer0() */         
/* 函数功能:定时器0中断服务程序,取反LED控制口。*/     
/* 入口参数:无 */            
/* 出口参数:无  */           
/**********************************************************/
__irq void IRQ_Timr0(void)
{
if(   (IO0SET&LED_CON)==0  )
  LED_OFF();
else
  LED_ON();
T0IR = 0x01;     /*清除中断标志位 */
VICVectAddr = 0x00;    /*通知VIC中断处理结束  */
}

/**********************************************************/
/* 函数名称:Timer0Init()*/           
/* 函数功能:定时器0初始化,定时时间为1秒,并使能中断*/   
/* 入口参数:无 */            
/* 出口参数:无 */            
/************************************************************/
void Timer0Init(void)
{
T0TC   = 0;   /* 定时器设置为0          */
T0PR   = 0;   /* 时钟不分频           */
T0MCR  = 0x03;  /* 设置T0MR0匹配后复位T0TC,并产生中断标志    */
T0MR0  = 15520; /* 0.5秒钟定时           */
T0TCR  = 0x01;  /* 启动定时器           */

/* 设置定时器0中断IRQ */
VICIntSelect = 0x00;    /* 所有中断通道设置为IRQ中断   */
VICVectCntl0 = 0x20 | 0x04;   /* 设置定时器0中断通道分配最高优先级 */
VICVectAddr0 = (uint32)IRQ_Timr0; /* 设置中断服务程序地址     */
VICIntEnable = 1 << 0x04;   /* 使能定时器0中断      */
}
/*********************************************************** */
/* 函数名称:mian() */           
/* 函数功能:初始化IO,和定时器,然后等待中断*/      
/* 入口参数:无 */            
/* 出口参数:无*/            
/************************************************************/
int main(void)
{
IO0DIR = LED_CON;  /*LED引脚为输出*/
Timer0Init();
while(1){}
//LED_OFF();
//LED_ON();

}

相关帖子

沙发
leadai0042| | 2011-11-21 14:54 | 只看该作者
没看到芯片中断使能。

使用特权

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

本版积分规则

0

主题

6

帖子

1

粉丝