3493|2

420

帖子

0

TA的资源

纯净的硅(初级)

楼主
 

raw-os 中高精度时间的测量以及延时的实现 [复制链接]

有些人可能会埋怨raw-os中没有us级别的延时以及us精度的时间测量,其实这个机制早就是有了,只需要打开一个宏定义开关就好了。
把下面的开关定义为1就好了。
#define RAW_CONFIG_CPU_TIME                                         1
然后使用RAW_CPU_TIME_GET() 得到目前的一个cpu内部时间的点,然后做延时还是做什么事情都行,然后再调用RAW_CPU_TIME_GET(),得到第二个时间点,前后相减结合cpu频率换算一下就出来了。具体的示意如下:

t1 = RAW_CPU_TIME_GET();
do something
t2 = RAW_CPU_TIME_GET();
测量时间 = 1000000*(t1  - t2) / frequency

至于延时也是一样的,不再表述。


最新回复

不错,国产RTOS活力无限 非常好的功能,raw-os有很多非常棒的特性  详情 回复 发表于 2015-12-14 12:54
点赞 关注

回复
举报

5

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
在trochili rtos里是这么实现的
/*************************************************************************************************
*  功能:获得系统已运行时钟节拍数                                                               *
*  参数:(1) pStamp 返回系统已运行时钟节拍数                                                    *
*  返回:无                                                                                     *
*  说明:                                                                                       *
*************************************************************************************************/
void xKernelGetJiffies(TTimeTick* pJiffies)
{
    TReg32 imask;

    CpuEnterCritical(&imask);
    *pJiffies = uKernelVariable.Jiffies;
    CpuLeaveCritical(imask);
}
/*************************************************************************************************
*  功能:获得系统已运行时钟节拍数                                                               *
*  参数:(1) pJiffies 保存系统已运行的时钟节拍数                                                *
*  返回:无                                                                                     *
*  说明:                                                                                       *
*************************************************************************************************/
void TclGetTimeJiffies(TTimeTick* pJiffies)
{
    KNL_ASSERT((pJiffies != (TTimeTick*)0), "");       
    xKernelGetJiffies(pJiffies);
}


/*************************************************************************************************
*  功能:获得系统已运行时间戳                                                                   *
*  参数:(1) pStamp 以微秒为单位的时间戳数值                                                    *
*  返回:无                                                                                     *
*  说明:                                                                                       *
*************************************************************************************************/
void TclGetTimeStamp(TTimeStamp* pStamp)
{
    TTimeTick jiffies;       
    KNL_ASSERT((pStamp != (TTimeStamp*)0), "");
       
    xKernelGetJiffies(&jiffies);
    *pStamp = (jiffies * 1000U * 1000U) / TCL_TIME_TICK_RATE;
}
 
 

回复

2144

帖子

3

TA的资源

五彩晶圆(中级)

板凳
 
不错,国产RTOS活力无限
非常好的功能,raw-os有很多非常棒的特性
 
个人签名电工
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表