查看: 916|回复: 5

Timer0 通道做延时程序的问题

[复制链接]

1

主题

2

帖子

48

积分

新手上路

Rank: 1

积分
48
发表于 2023-8-23 10:36:57 | 显示全部楼层 |阅读模式
如下程序,如果再配置中打开了Timer 0  1 通道的中断, 用下面的程序延时 1MS, 发现实际时间是 3MS。 如果不打开这个中断,延时1MS正常。



static void __near r_tau0_channel1_interrupt(void)
{
    /* Start user code. Do not edit comment generated here */
    Timer1_Flag_1ms = 1;
    /* End user code. Do not edit comment generated here */
}

/* Start user code for adding. Do not edit comment generated here */
void delay_ms(uint16_t timeCounter)
{
        //TDR01 = 0;
        R_TAU0_Channel1_Start();
        while(timeCounter > 0)
        {
                if(TMIF01 == 1)
                {
                        TMIF01 = 0;
                        timeCounter--;
                }       
        }
       
        R_TAU0_Channel1_Stop();
}

在开中断的情况下,如果用下面这个程序,延时1MS 就正常了。 所以配置打开中断对TMIF01 这个中断标志有什么影响?
void delay_ms(uint16_t timeCounter)
{
        //TDR01 = 0;
        R_TAU0_Channel1_Start();
        while(timeCounter > 0)
        {
                if(Timer1_Flag_1ms == 1)
                {
                        Timer1_Flag_1ms = 0;
                        timeCounter--;
                }       
        }
       
        R_TAU0_Channel1_Stop();
}

回复

使用道具 举报

1

主题

2

帖子

48

积分

新手上路

Rank: 1

积分
48
 楼主| 发表于 2023-8-23 14:17:36 | 显示全部楼层

没有人知道吗?
回复

使用道具 举报

18

主题

86

帖子

3668

积分

论坛元老

Rank: 8Rank: 8

积分
3668
发表于 2023-10-6 11:10:44 | 显示全部楼层

很好的学习材料~~~~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

用户排行榜

RA助手

主题: 116帖子:134精华:0

RA_Lance

主题: 93帖子:136精华:9

lugl

主题: 52帖子:150精华:1

xujiwei263

主题: 18帖子:86精华:0

Juggernaut

主题: 12帖子:118精华:0

books咦

主题: 11帖子:11精华:2
快速回复 返回顶部 返回列表