迪文科技论坛

 找回密码
 立即注册
搜索
查看: 1629|回复: 6

DGUS II系列基于DWIN C Compiler有没有准确的时钟计算方式?

[复制链接]

6

主题

27

回帖

109

积分

注册会员

Rank: 2

积分
109
发表于 2019-7-30 11:04:54 | 显示全部楼层 |阅读模式
DGUS II系列基于DWIN C Compiler,可以精确到毫秒级别的就行。
回复

使用道具 举报

26

主题

76

回帖

1112

积分

版主

Rank: 7Rank: 7Rank: 7

积分
1112
发表于 2019-7-30 13:42:06 | 显示全部楼层
有,用这个:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

6

主题

27

回帖

109

积分

注册会员

Rank: 2

积分
109
 楼主| 发表于 2019-7-30 15:01:14 | 显示全部楼层

现在就是用这个当计时器,不过不停地访问寄存器会不会有问题?

void sleep(unsigned int second)
{
        char data;
       
        timer_config(2,1);
       
        while(second > 0){       
                data = 0;
                write_register(37,&data);
               
                while(1){
                        read_register(37,&data);
                        if (data > 0)
                                break;
                }
                second--;
        }
}
回复

使用道具 举报

26

主题

76

回帖

1112

积分

版主

Rank: 7Rank: 7Rank: 7

积分
1112
发表于 2019-7-30 15:15:02 | 显示全部楼层
过期的健康证 发表于 2019-7-30 15:01
现在就是用这个当计时器,不过不停地访问寄存器会不会有问题?

void sleep(unsigned int second)

大哥,我在另外一个帖子里面已经回复过你噢,要加个100us的延时,不加延时的话,屏会卡顿的。
回复

使用道具 举报

6

主题

27

回帖

109

积分

注册会员

Rank: 2

积分
109
 楼主| 发表于 2019-7-30 15:49:34 | 显示全部楼层
Mona 发表于 2019-7-30 15:15
大哥,我在另外一个帖子里面已经回复过你噢,要加个100us的延时,不加延时的话,屏会卡顿的。 ...

我尝试过使用一下函数增加延迟,不过结果就是时间会出现误差。不过你说的问题我这里到时没出现,我再研究研究。

                void delayus(unsigned char t)
        {        char i;
                while(t)
        {        for(i=0;i<50;i++)
                {i=i;}
                t--;}}
回复

使用道具 举报

0

主题

7

回帖

342

积分

中级会员

Rank: 3Rank: 3

积分
342
发表于 2019-7-30 15:55:50 | 显示全部楼层
需要比较准确的计时的话,建议可以这么做。
先声明1个全局变量用于计数unsigned int TIM_SYS;

然后比如在main里初始化定时器2启动,周期为1ms
timer_config(2,1);

那么延时n毫秒的子程序定义如下,同时要在Time2中断函数里对全局变量TIM_SYS,每1毫秒进行一次递减。
void delay_ms(unsigned int n)
{
    TIM_SYS=n;
    while(TIM_SYS);   
}

void Time2_IRQHandler(void)
{
        TIM_SYS--;
}
回复

使用道具 举报

6

主题

27

回帖

109

积分

注册会员

Rank: 2

积分
109
 楼主| 发表于 2019-7-30 16:07:13 | 显示全部楼层
本帖最后由 过期的健康证 于 2019-7-30 16:21 编辑
01524213 发表于 2019-7-30 15:55
需要比较准确的计时的话,建议可以这么做。
先声明1个全局变量用于计数unsigned int TIM_SYS;

我以前跟你的想法是一样的。使用计数器作为判断,再定时器中断里面读取计数器数值。理论上是可行的,实际试下来的结果,时间并不准。可能一些读写操作也会浪费一些时间。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-15 02:50 , Processed in 0.035691 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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