你好,我采用你们官网给的把中断的入口打开放在asm文件的例程,我的中断就正常,但是不用这个asm文件,我调用你们的intcInit,然后再初始化中断,这个时候我的定时器中断每次跑个30多次就不跑了,另外就是我用的下面这个例程,不适用 IER = IER|(1<<14);这句话我就不进中断,但是我看别的公司的代码是可以的,他们就是不带asm文件,也没有 IER = IER|(1<<14);
IER = IER|(1<<13);这两句话
intcInit();
RegisterInterrupt(CSL_GEM_TINTLN, CSL_INTC_VECTID_14 , (CSL_IntcEventHandler)Timer_ISR);
RegisterInterrupt(CSL_GEM_TINT3L, CSL_INTC_VECTID_13 , (CSL_IntcEventHandler)Timer_ISR2);
IER = IER|(1<<14);
IER = IER|(1<<13);
TM6657_TIMERIRQ_ENABLE(500);
while(1)
{
if(timer_flag1)
{
timer_flag1= 0;
TM6657_TIMERIRQ_ENABLE(500);
}
}
Shine:
IER = IER|(1<<14);IER = IER|(1<<13);
这两句是使能INT14, INT13,看您要把timer中断映射到INT14还是INT13.如果工程是基于sys/bios的话,可以不用再写vectors.asm中断向量表文件。
如果跑了30多次就不跑了,看一下中断处理子函数前是否用interrupt关键字定义了,如void interrupt Timer_ISR(void)
wind small:
回复 Shine:
不适用sys/bios的话,必须适用中断向量表文件吗?我看有不使用sys/bios但是没有中断向量表文件的,我的这个中断处理子函数void interrupt Timer_ISR(void)用了这个interrupt这个子函数
Shine:
回复 wind small:
sys/bios是自带vecctors.asm。如果是裸机程序,需要用vectors.asm,要不然中断怎么与vectors.asm挂钩。
wind small:
回复 Shine:
没用sys/bios,我看就是RegisterInterrupt(CSL_GEM_TINT3L, CSL_INTC_VECTID_13 , (CSL_IntcEventHandler)Timer_ISR2);这个东西绑定的中断,我现在自己这么写了一下(没用vectors.asm),就只能进30几次中断,但是我用vectors.asm的时候我程序是正常的,所以我想问一下,你们有没有试过,但是确实别人的程序是没用vectors.asm这个的
user5315971:
回复 Shine:
自带的vecctors.asm路径在哪里