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