UCOS OS_CPU.H笔记

#define OS_TICKS_PER_SEC        200    /* Set the number of ticks in one second  */

上面宏定义表示的意思是在一秒时间内系统产生了多少次时钟中断,也即为定时中断频率。

注意:它的大小必须与所设置的定时中断时间一一对应,比如说你的周期定时中断时间间隔为10ms,那么这里的值就应该设为100.,如果为5ms,就设为200。

这个值在OSTimeDlyHMSM()函数中用到,直接关系到该函数延时的准确性。

OS_TICKS_PER_SEC这个东西表示CPU一秒钟进行多少次时钟中断,也就决定了最小的延时间隔,比如OS_TICKS_PER_SEC设置成200,则表示1s里面会发生200次时钟中断,也就是5ms来一次中断,则最小的延时单位就是5ms。

最小延时时间与你选取的时钟源有关。以51单片机举个例子,使用12M晶振的话,其最小的指令周期为1us,你不可能获得运行时间小于这个最小指令周期的指令。操作系统的时钟节拍也是一样,如果你设置的定时源为100us中断一次,也就是你的系统节拍单位为100us。那么你不可能获得小于100us的操作延时。当然,这个情况不包括抢占调度的情况。如果你的系统节拍的参考时钟设置为10us中断一次,那么倒是可以获得50us的任务延时的。具体讲就是OSTimeDly(5),这样就可以获得50us了。这个问题的关键不在于你赋给OSTimeDly()的形参值为多少。而在于OSTimeDly()中的Tick值改变一个需要多久的时间间隔。这个时间间隔的产生与操作系统是没有关系的。去查一下定时器中断代码,看看是怎么设置的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值