这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » 关于定时器的中断问题(附程序)

共2条 1/1 1 跳转至

关于定时器的中断问题(附程序)

院士
2006-09-17 18:14:16     打赏
关于定时器的中断问题(附程序)



关键词: 关于     定时器     中断     问题     程序    

院士
2006-12-22 22:43:00     打赏
2楼
问 我用LPC2119设计的电路,想使用Timer0作为定时器使用。但是没有办法进入中断。请各位指教!感谢!以下是源程序的部分。


/*定时器中断处理*/
void   __irq IRQ_Timer0(void)
{
    
   LCM_DataSend("Timer0 IRQ"); //使用液晶屏显示中断进入。

   T0IR = 0x01;                // 清除中断标志
   VICVectAddr = 0x00;      // 通知VIC中断处理结束

}


/*定时器配置*/
void Timer_Config_Exception(void)
{

//   Fcclk = Fosc*4 = 11.0592MHz*4 = 44.2368MHz
//   Fpclk = Fcclk/4 = 44.2368MHz/4 = 11.0592MHz

//Timer0 Config

    T0PR = 99;      // 设置定时器0分频为100分频,得110592Hz
    T0MCR = 0x03;      // 匹配通道0匹配中断并复位T0TC
    T0MR0 = 110592;      // 比较值(1S定时值)
    T0TCR = 0x03;       // 启动并复位T0TC
    T0TCR = 0x01;

    VICIntEnable = 0x00000010;      //使能Timer0中断
}

/*中断配置*/

void IRQ_Config_Exception(void)
{

//选择中断FIQ和IRQ方式,将所有中断配置成为IRQ。
    VICIntSelect=0x00000000;                

//IRQ slot 0
    VICVectCntl0  =    0x24; //Timer0定时器分配
    VICVectAddr0  =    (uint32)IRQ_Timer0;
}

int  main(void)
{
    IRQ_Config_Exception();
    Timer_Config_Exception();
}


     1: 我也碰到了同样的问题,中断不起效果。也排队等候。 2: 解决了吗? 3: 我查询VICIRQStatus也没有中断标志。 4: 我查询了VICRawIntr和VICIRQStatus现在又表示了。 5: 定时中断行了?? 6: 中断的标志有了。但是无法进入中断向量地址。 7: cpsr中i标志要设。如果用的是周老板的代码
方法1:改startup.s中 InitStack函数倒数第3行
#0xdf 改为5f。
方法2:使用
IRQEnableA
       MSR   R0, SPSR
       BIC   R0, R0, #0X80
       MSR   SPSR_c, R0
       MOVS  PC, LR 8: 知道为什么的前辈们,说说好吗?谢拉!!! 9: 非常感谢high的帮助,已经可以了原来是初始化堆栈中I位本来就是禁止的,以后得多注意了。 10: 现在可以了,谢谢high。 11: 太感谢high哥哥了

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]