lizexi486 发表于 2010-11-16 22:27:43

这样设置定时中断有问题吗?

刚学ARM,就按着网上的例子写了一个简单的LED点亮的程序,程序下载到TQ2440开发板运行后,没有按照预期的目标点亮啊,郁闷,还请各位指教了。
voidTimer0_ISR(void)//中断程序
{
        rSRCPND =rSRCPND|( 1 << 10);
        rINTPND = rINTPND;
        IntCnt++;       
        if(IntCnt==4) //led亮2秒灭2秒
                {
                  a=~a;;
                  IntCnt=0;
                }
        if(a) rGPBDAT =0x1e0;
        elserGPBDAT =0x0000;
}

void Timer0Init(void)
{
        // 定时器0初始化设置

       
        rTCON = rTCON & (~0xf) ;                        // clear manual update bit, stop Timer0
       
       
        rTCFG0         &= 0xffffff00;                                // set Timer 0&1 prescaler 0
        rTCFG0 |= 249;                                                //prescaler =249+1

        rTCFG1         &= 0xfffffff0;                                // set Timer 0 MUX 1/8
        rTCFG1|= 0x00000010;                                // set Timer 0 MUX 1/8
    rTCNTB0 =12500;                     //定时器0每隔0.5秒中断一次,时钟50M

   
    rTCON = rTCON & (~0xf) |0x02;   // updata                
        rTCON = rTCON & (~0xf) |0x09;         // 自动重载、启动定时器0
}

/*********************************************************************************************************
system IsrInit
********************************************************************************************************/
void ISRInit(void)
{
        // 设置中断控制器
        rPRIORITY = 0x00000000;                // 使用默认的固定的优先级
        rINTMOD = 0x00000000;                // 所有中断均为IRQ中断
        pISR_TIMER0=(uint32)Timer0_ISR;
        rINTMSK &= ~(1<<10);                        // 打开TIMER0中断允许
        IntCnt=0;
}
页: [1]
查看完整版本: 这样设置定时中断有问题吗?