迪文科技论坛

 找回密码
 立即注册
搜索
查看: 210|回复: 5

【提问】屏幕型号是EKT043_EDU,使用定时器0精确延时us,这样写

[复制链接]

49

主题

193

回帖

1781

积分

金牌会员

Rank: 6Rank: 6

积分
1781
发表于 2025-12-23 14:39:17 | 显示全部楼层 |阅读模式
这样写不知道能不能实现,使用的模块是iic通信,延时有时候需要1us和4us,模版给的函数void sys_delay_about_us(u8 us);好像实现不了1us和4us,所以自己做了下面的代码:
#define T0_PERIOD_1US                0xFFEF                //定时器0的1us周期
static idata u16 delay_tick_us = 0; //用来实现精确延时的


//定时器0初始化,定时时间隔为1us
void sys_timer0_init()
{
        //16位定时器工作模式
        TMOD &= 0xFC;
        TMOD |= 0x01;
        //定时周期为1us
        TH0 = (u8)(T0_PERIOD_1US>>8);
        TL0 = (u8)T0_PERIOD_1US;
        ET0 = 1;//使能定时器0中断
        EA = 1;//使能总中断
        TR0 = 1;//启动定时器0
}


//利用定时器0进行精确延时,单位us
void sys_delay_us(u8 us)
{
        delay_tick_us = us;
        while(delay_tick_us);
}



//定时器0中断服务程序
void sys_timer0_isr()        interrupt 1
{
        
        //重新装载周期值
        TH0 = (u8)(T0_PERIOD_1US>>8);
        TL0 = (u8)T0_PERIOD_1US;
        //精准延时处理
        if(delay_tick_us)
                delay_tick_us--;
}


求助大佬,这样能精确延时1us吗???
还有个问题就是,我看的视频并且结合模版,发现为什么定时0需要重新装载周期值,而定时器2不需要重新装载呢?

Github搬运工
回复

使用道具 举报

0

主题

481

回帖

2895

积分

金牌会员

Rank: 6Rank: 6

积分
2895
发表于 2025-12-23 20:49:58 | 显示全部楼层
1us这个设置是可以的,定时器2是增强型定时器,而定时器0/1是基础型定时器,定时0需要重新装载周期值,而定时器2不需要重新装载这是硬件决定的,定时器2能实现自动重装。
回复

使用道具 举报

49

主题

193

回帖

1781

积分

金牌会员

Rank: 6Rank: 6

积分
1781
 楼主| 发表于 2025-12-24 08:46:17 | 显示全部楼层
紫狐 发表于 2025-12-23 20:49
1us这个设置是可以的,定时器2是增强型定时器,而定时器0/1是基础型定时器,定时0需要重新装载周期值,而定 ...

好的,谢谢,还有个问题请教一下,模板给出的这个函数给他赋值1us的话真实的时间是多少呢?
void delay_about_us(u8 us)
{
        u8 i,j;
        for(i=0;i<us;i++)
                        for(j=0;j<5;j++);   
}
Github搬运工
回复

使用道具 举报

0

主题

481

回帖

2895

积分

金牌会员

Rank: 6Rank: 6

积分
2895
发表于 2025-12-24 08:58:13 | 显示全部楼层
跟keil的优化等级等配置有关,不精确
回复

使用道具 举报

49

主题

193

回帖

1781

积分

金牌会员

Rank: 6Rank: 6

积分
1781
 楼主| 发表于 2025-12-24 09:27:45 | 显示全部楼层
紫狐 发表于 2025-12-24 08:58
跟keil的优化等级等配置有关,不精确

默认的话给1是多少us呢?
Github搬运工
回复

使用道具 举报

0

主题

481

回帖

2895

积分

金牌会员

Rank: 6Rank: 6

积分
2895
发表于 2025-12-24 13:49:53 | 显示全部楼层
约60-100ns.
回复

使用道具 举报

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

本版积分规则

QQ|Archiver|手机版|小黑屋|迪文科技论坛 ( 京ICP备05033781号-1 )

GMT+8, 2026-4-15 01:07 , Processed in 0.034299 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表