TI中文支持网
TI专业的中文技术问题搜集分享网站

F28027 中timer中断为什么没有将中断标志为清0?

读实例程序如下:

interrupt void cpu_timer0_isr(void)
{
CpuTimer0.InterruptCount++;

// Acknowledge this interrupt to receive more interrupts from group 1
PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;
}

请问中断标志位TIF为什么没有清空呢?这样不应该是一直进入中断吗?为什么实际情况下会正常运行?

Di Jiao:

网上找到解释说:源码的中断服务程序中没有将中断标志位清0 的指令。当程序开始运行并执行到指令“CpuTimer0Regs.TCR.bit.TSS = 0;”时,定时器中断标志位TIF(TCR[15])即从0 变成1。这意味着一旦启动定时器即触发定时器中断之后,即使通过软件将该位置1,也不能将其清0。

这段话我不理解,为什么TSS重启定时器TIF会置位?后面的软件无法置位又是什么意思?

不懂。。。

求指点!

读实例程序如下:

interrupt void cpu_timer0_isr(void)
{
CpuTimer0.InterruptCount++;

// Acknowledge this interrupt to receive more interrupts from group 1
PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;
}

请问中断标志位TIF为什么没有清空呢?这样不应该是一直进入中断吗?为什么实际情况下会正常运行?

Di Jiao:

网上找到的解释:源码的中断服务程序中没有将中断标志位清0 的指令。当程序开始运行并执行到指令“CpuTimer0Regs.TCR.bit.TSS = 0;”时,定时器中断标志位TIF(TCR[15])即从0 变成1。这意味着一旦启动定时器即触发定时器中断之后,即使通过软件将该位置1,也不能将其清0。

这又是什么意思?复位定时器会置位TIF?为什么后来又无法软件置位TIF?

读实例程序如下:

interrupt void cpu_timer0_isr(void)
{
CpuTimer0.InterruptCount++;

// Acknowledge this interrupt to receive more interrupts from group 1
PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;
}

请问中断标志位TIF为什么没有清空呢?这样不应该是一直进入中断吗?为什么实际情况下会正常运行?

Di Jiao:

回复 Di Jiao:

求指点。。。

读实例程序如下:

interrupt void cpu_timer0_isr(void)
{
CpuTimer0.InterruptCount++;

// Acknowledge this interrupt to receive more interrupts from group 1
PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;
}

请问中断标志位TIF为什么没有清空呢?这样不应该是一直进入中断吗?为什么实际情况下会正常运行?

mangui zhang:

回复 Di Jiao:

我也没看懂  你可以看看datasheet   这个标志是否需要软件清零  

如果需要软件清零  CpuTimer0Regs.TCR.bit.TSS = 1;才应该是清零吧

赞(0)
未经允许不得转载:TI中文支持网 » F28027 中timer中断为什么没有将中断标志为清0?
分享到: 更多 (0)