野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 14285|回复: 2

ucosiii系统节拍时钟

[复制链接]
发表于 2016-4-27 17:45:00 | 显示全部楼层 |阅读模式
火哥,我找着《ucosiii开发应用》做实验系统节拍时钟实验时,延时1000毫秒显示的不是0999ms,而是2861 ms, 我用点亮led灯亮灭
用间隔10秒钟,用手机记时是延时的10秒钟,代码如下:
        while(DEF_TRUE)
        {
                        LED3_TOGGLE
                        OSTimeDly ( 10000, OS_OPT_TIME_DLY, & err );
        }

我移植的ucosiii执行下面代码:
    while(DEF_TRUE)
   {
              ts_start = OS_TS_GET();
             OSTimeDly ( 1000, OS_OPT_TIME_DLY, & err );
             ts_end        =        ts_start  - OS_TS_GET();
             OS_CRITICAL_ENTER();
             printf("\r\n延时1000个时钟节拍(1s)通过时间戳测延时 %7dus,即%04d ms。系统时钟频率为%d",
                       ts_end / (cpu_clk_freq / 1000000),
                       ts_end / (cpu_clk_freq / 1000)                                        ,
                       cpu_clk_freq);
             OS_CRITICAL_EXIT();
     }

显示结果是:
延时1000个时钟节拍(1s)通过时间敛庋邮22861503us,即22861 ms。系统时钟频率为180000000
延时1000个时钟节拍(1s)通过时间戳测延时 22861502us,即22861 ms。系统时钟频率为180000000
延时1000个时钟节拍(1s)通过时间戳测延时 22861500us,即22861 ms。系统时钟频率为180000000
延时1000个时钟节拍(1s)通过时间戳测延时 22861508us,即22861 ms。系统时钟频率为180000000
延时1000个时钟节拍(1s)通过时间戳测延时 22861507us,即22861 ms。系统时钟频率为180000000
延时1000个时钟节拍(1s)通过时间戳测延时 22861505us,即22861 ms。系统时钟频率为180000000
延时1000个时钟谂1s)通过时间戳测延时 22861504us,即22861 ms。系统时钟频率为180000000

回复

使用道具 举报

发表于 2016-4-27 19:12:42 | 显示全部楼层
OSTimeDly 是使用任务调度器的,本身就是不准,不过你这个差得有点大。。检查下系统配置
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-4-27 22:35:49 | 显示全部楼层
找到原因了,把   ts_end    =    ts_start  - OS_TS_GET();  改成  :  ts_end   =   OS_TS_GET() - ts_start;
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2025-1-12 02:45 , Processed in 0.047015 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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