#include"2440addr.h"
void delay(int n)
{
while(n)
n--;
}
void led_init()
{
rGPBCON &=~((3<<10)|(3<<12)|(3<<14)|(3<<16));
rGPBCON |=(1<<10)|(1<<12)|(1<<14)|(1<<16); //配置为输出口
rGPBDAT |=(1<<5)|(1<<6)|(1<<7)|(1<<8); //全灭
}
void clk_init()
{
rMPLLCON = (0x92<<12)|(0x01<<4)|(0x01); //FCLK=400MHz
rCLKDIVN = 0x03; //预分频为1:2:4,PCLK=100MHz
}
void timer0_init()
{
rTCFG0 = 99; //(100MHz/99+1)=1MHz
rTCFG1 = 0x03; //16分频,1MHz/16=62500Hz
rTCNTB0= 62500/2; //0.5s产生一次中断
rTCMPB0=0; //将比较寄存器的初值设为0,即不产生翻转
rTCON |= 1<<1; //第一次手动启动
rTCON |= 0x09;
}
void int_init()
{
rINTMOD =0;
rSRCPND |=(1<<10);
rINTMSK &=(~(1<<10)); //中断初始化
rINTPND |=(1<<10);
}
static void __irq Handle_TIMER0_int(void) //中断服务函数
{
if(rINTPND&(0x1<<10))
rGPBDAT &=(~((1<<6)|(1<<7))); //亮灯
delay(100000);
rSRCPND |=(1<<10);
rINTPND |=(1<<10); //清中断
}
void chuli()
{
pISR_TIMER0 = (U32)Handle_TIMER0_int; //中断处理入口
}
int Main()
{
led_init();
clk_init();
timer0_init();
int_init();
chuli();
while(1);
return 0;
}
思来想去找不到问题,不知道哪位大侠能帮我找出错误