sysClkRateGet();返回系统时钟每秒的tick数量, tick详解!

       操作系统总是基于某个时钟节拍来跑的。。。这个节拍的得到往往是通过硬件时钟中断得到,一般来说这个中断的优先级就比NMI低一点点,比其他的都高。。这个中断是共给操作系统用的,操作系统用他来进行调度啊什么的各种处理。而在vxWorks中的一个重要参数就是SYS_CLK_RATE这个参数,也就是系统时钟率。。。。它的含义是:系统时钟滴嗒在一秒钟之内发生多少次。比如说,你定义为60,那么系统时钟在1s中将发生60次中断,两次之间的时间差就是1/60s。发生中断后,操作系统可以进行任务切换啊什么的。也就是说,如果你有一个任务被挂起,则至少要过1/60s后被激活---其它中断除外啊。又假如你设置为1000,那么系统时钟1秒发生1000次中断,两个时间差就是1ms。。。而函数sysClkRateGet就是用来获取系统时钟率的,如果你没有调用sysClkRateSet()函数对系统时钟率进行重新设置的话,其返回值应该是你在config.h中定义的SYS_CLK_RATE宏的值。而函数taskDelay()是以tick数目为单位的,比如taskDelay(1)是指将调用该函数的任务延迟1个tick。。那么时间是多少呢,根据你的SYS_CLK_RATE的值,其实际时间不同,但具体时间是1/SYS_CLK_RATE。。。假如SYS_CLK_RATE是1000,那么就是1ms。。如果是60那么就大约是16.67ms。。。通常来讲,vxWorks手册建议不要将时钟率设得太高,否则它就由硬实时变得趋向于软实时了。。因为过高的时钟率使得内核调度频繁进入,可能导致一些低优先级的硬件中断不能得到及时响应。当然,也不要太担心,在x86系统中完全可以设置为1000,这样比较好使,1个tick就是1ms,跟Windows一样。呵呵。。。。。说得不对欢迎PK.
 
  • 7
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值