关于6410定时器的中断问题
时间:10-02
整理:3721RD
点击:
unsigned int i=0;
void GPIO_Init()
{
rGPIOMCON |= (0X01<<0)|(0X01<<4)|(0X01<<8)|(0X01<<12);//令控制led的引脚为出模式
rGPIOMDAT = 0X0F;//关闭led灯
rGPIOMPUD = 0;
}
void TIMER_Init()
{
rTCFG0&=(~(0XFF<<8));
rTCFG1&=(~(0X0F<<8));//不对时钟尽心分频
rTCNTB2=6600;//定时器2的技术缓冲所赋值
rTCON =(0X02<<12);//装载计时器2的缓冲寄存器的值
rTINT_CSTAT |=0X04;//定时器2的中断使能
rTCON =(0X09<<12);//设置定时器2为自动重载模式,并开启定时器2
}
void __irq timer2()
{
i++;
if(i==4)
i=0;
rGPIOMDAT=(~(0X01<<i));
rTINT_CSTAT |=0X84;//清楚定时器2的中断标志位
rVIC0ADDRESS=0;//清楚isr程序的地址。
}//每中断一次,led灯移位点亮一个
void INT_init()
{
rVIC0SOFTINTCLEAR =~0;//清除软件中断
rVIC0INTENCLEAR=~0;//清除所有的重大U难使能位
rVIC0INTENABLE |=(0X01<<25);//使能定时器2的中断
rVIC0SOFTINT |=(0X01<<25);//使能定时器2 的软件中断
rVIC0INTSELECT =0;//令定时器2为irq模式
rVIC0VECTADDR25=(unsigned long) timer2;//将中断服务程序的地址赋值给中断响亮地址寄存器
rVIC0PRIORITYDAISY=0x00;//设置中断优先级别为0x00
rVIC0VECTPRIORITY25=0x00;//设置定时器2的中断优先级别为0;
}
void Main()
{
INT_init();//中断初始化
GPIO_Init();//IO口初始化
TIMER_Init();//计数器2初始化
while(1);
}
为什么这样设置进不去中断服务程序,求教,在此谢过
void GPIO_Init()
{
rGPIOMCON |= (0X01<<0)|(0X01<<4)|(0X01<<8)|(0X01<<12);//令控制led的引脚为出模式
rGPIOMDAT = 0X0F;//关闭led灯
rGPIOMPUD = 0;
}
void TIMER_Init()
{
rTCFG0&=(~(0XFF<<8));
rTCFG1&=(~(0X0F<<8));//不对时钟尽心分频
rTCNTB2=6600;//定时器2的技术缓冲所赋值
rTCON =(0X02<<12);//装载计时器2的缓冲寄存器的值
rTINT_CSTAT |=0X04;//定时器2的中断使能
rTCON =(0X09<<12);//设置定时器2为自动重载模式,并开启定时器2
}
void __irq timer2()
{
i++;
if(i==4)
i=0;
rGPIOMDAT=(~(0X01<<i));
rTINT_CSTAT |=0X84;//清楚定时器2的中断标志位
rVIC0ADDRESS=0;//清楚isr程序的地址。
}//每中断一次,led灯移位点亮一个
void INT_init()
{
rVIC0SOFTINTCLEAR =~0;//清除软件中断
rVIC0INTENCLEAR=~0;//清除所有的重大U难使能位
rVIC0INTENABLE |=(0X01<<25);//使能定时器2的中断
rVIC0SOFTINT |=(0X01<<25);//使能定时器2 的软件中断
rVIC0INTSELECT =0;//令定时器2为irq模式
rVIC0VECTADDR25=(unsigned long) timer2;//将中断服务程序的地址赋值给中断响亮地址寄存器
rVIC0PRIORITYDAISY=0x00;//设置中断优先级别为0x00
rVIC0VECTPRIORITY25=0x00;//设置定时器2的中断优先级别为0;
}
void Main()
{
INT_init();//中断初始化
GPIO_Init();//IO口初始化
TIMER_Init();//计数器2初始化
while(1);
}
为什么这样设置进不去中断服务程序,求教,在此谢过