|
![](static/image/common/ico_lz.png)
楼主 |
发表于 2011-5-15 19:03:43
|
显示全部楼层
还是没有懂。这是我写的,大家帮忙分析一下,谢谢了
void TimerInit(void) //定时器初始化
{
IRQEnable(); //IRQ中断使能
T0TCR=0x02;
T0PR = 0; // 设置定时器0,不分频
T0MCR = 0x03; // 匹配通道0匹配中断并复位T0TC
T0MR0 = 11059200; // 比较值(1S定时一次)
T0TCR = 0x01; //定时器计数器和预分频计数器使能
VICIntSelect = VICIntSelect&(~(1<<4); // 所有中断通道设置为IRQ中断
VICVectCntl0 = 0x20|4 ; // 向量IRQ slot 使能 | 中断号
VICVectAddr0 = (unsigned int)IRQTimer0; // 设置中断服务程序地址
VICIntEnable = 1<<4; // 使能定时器0中断
}
然后是中断函数
__irq __arm void IRQTimer0()
{
if((IOSET&(1<<18))==0) IOSET=1<<18; //取反操作
else IOCLR=1<<18;
T0IR = 0x01; // 清除中断标志
VICVectAddr = 0x00; // 通知VIC中断处理结束
}
我单步调试,无法进入中断函数,分析一下 |
|