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.

关于连续模式下中断中给TACCRx赋值



关于定时器连续模式下中断中给TACCRx赋值,看到许多人这样写?

例如TACCRx+=xxxx;

如果新的TACCRx比当前的定时器计数值TAR小会产生中断标志么?G2系列的指导手册中哪里有说明的?

  • 楼主你好!

    1、TACCRx+=xxxx; 是将当前计数预定值读出,在此基础上增加xxxx作为下次中断的计数值,如果xxxx过小,会导致赋值的时候,TAR的值已经大于前一次TACCRx+xxxx,那么,中断将在TAR溢出归零后,下次达到TACCRx+xxxx时产生中断。


    2、TI的例程中有这样的做法。这种方式是一种比较粗糙的定时方式,实际应用中并没有多大的参考价值,只是例程中用来演示的作用。

  • 嗯,手册中虽然没有明确说明好像,但是那张图也能说明好像没影响

    还有一种情况更多,就是TACCRx+=xxxx后大于FFFF而跑到了低端而比TAR当时值小,不过也如您说的,也不会立刻产生中断吧?主要是我看到一段代码连续模式下好像在TACCRx+=xxxx前后关闭清标志打开中断,所以一时疑惑,所以顺手问了一下

  • 1、0xFFFF + 0x0001 = 0x0000 归零。间隔值设定过小,会导致中断计数值小于当前值,那么,中断将会延迟一个周期。

  • 你可以把timer理解为一个在轨道上(环形:连续模式、单向(递增模式)、往返(增减模式))运行的火车,而TACCRx的值就相当于你到达站点的时间,如果你的时间TACCRx早于Timer到站时间,哪OK,你可以赶上最早来的一趟,如果你的时间TACCRx晚于Timer到达时间,就只有等下一趟。:-)