This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

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为什么没有清空呢?这样不应该是一直进入中断吗?为什么实际情况下会正常运行?

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

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

    不懂。。。

    求指点!

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

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

  • 求指点。。。

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

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