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

timer0打开之后,就关不掉了。dsp重复进入定时器中断,但我想关掉定时器啊。

 void delay(unsigned int x)
{
    count=x;
    CpuTimer0Regs.TCR.bit.TSS=0;                这是延时程序,用定时器中断做延时,调用delay的时候打开timer0,然后while一直在判断count是否为0,为0的时候说
    while(count);                                                   明定时时间到了,关闭定时器
    CpuTimer0Regs.TCR.bit.TSS=1;
 interrupt void timer0(void)
{

times++;
count–;
CpuTimer1Regs.TCR.bit.TIF = 1;                                              这是中断程序,count–,其中times是我用来统计进入中断次数用的
PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;                      本例中count=100,count减到0的时候定时器并没有停止,times的值也一直再加,已经
EINT;                                                                                              超过100了。我这样想个应该没问题吧,请问定时器关不上的原因是什么呢?

jamin:

中断中的count应该这样写

if(count > 0)

{

count–;

}

 void delay(unsigned int x)
{
    count=x;
    CpuTimer0Regs.TCR.bit.TSS=0;                这是延时程序,用定时器中断做延时,调用delay的时候打开timer0,然后while一直在判断count是否为0,为0的时候说
    while(count);                                                   明定时时间到了,关闭定时器
    CpuTimer0Regs.TCR.bit.TSS=1;
 interrupt void timer0(void)
{

times++;
count–;
CpuTimer1Regs.TCR.bit.TIF = 1;                                              这是中断程序,count–,其中times是我用来统计进入中断次数用的
PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;                      本例中count=100,count减到0的时候定时器并没有停止,times的值也一直再加,已经
EINT;                                                                                              超过100了。我这样想个应该没问题吧,请问定时器关不上的原因是什么呢?

Eric Ma:

 你设个断点在CpuTimer0Regs.TCR.bit.TSS=1处,看是否能跳到这里执行。

如果不可以,看count的值变成什么,再分析一下。

Eric

赞(0)
未经允许不得转载:TI中文支持网 » timer0打开之后,就关不掉了。dsp重复进入定时器中断,但我想关掉定时器啊。
分享到: 更多 (0)