tickGet

tickGet()返回的是从系统启动开始tick计数后的总的tick数目。

tick是啥,是“滴答”,它是一个数值量,本身不能代表时间。

如果说要知道tick增加一个代表多少时间的话,那就要看系统的时钟率了。

在Shell下,sysClkRateGet()可以返回这个始终率的值。比如60。啥意思呢,就是1秒钟产生60个tick。操作系统调度是基于这个tick的,这在硬件上是个优先级很高(除了NMI以外都比它低)的时钟中断。如果你的始终率是60那么一个tick代表的时间就是1000ms/60=16.67ms。也就是tick增加一个所花的时间16.67毫秒。那么你要想你的tick是1ms一下的话,那不就是把时钟率设置成1000就可以了,因为1000ms/1000=1嘛。可以用sysClkRateSet(1000)来达到此目的。

设置成1000好使吗?就看你的需求了。嵌入式系统嘛,啥都你自己整,时钟率高了,操作系统调度频率就很高,软件响应能力增强,但硬件中断的处理就不一定是实时的了。

时钟率不是越大越好。但太小了绝对好不起来。

1ms还是不够用?用辅助时钟吧。它也中断。用起来一样。

不过,值得注意的是,千万别整很多东西挂到一个1秒钟执行1000次以上的中断里面,CPU耗不起啊。所以1ms以下的精确定时,推荐用硬件做。注意啊,实时操作系统是软件,怎么说它也是软的。


  • 4
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
VxWorks中添加任务控制块结构的注册字段可以通过以下步骤完成: 1. 定义一个新的结构体,包含你需要注册的字段。 2. 在任务控制块结构体中添加一个指向该结构体的指针类型成员变量。 3. 在任务创建函数中,初始化该指针成员变量,将其指向你定义的新结构体。 4. 在需要使用该字段的地方,通过任务控制块结构体中的指针成员变量访问该字段。 例如,假设我们需要在任务控制块结构体中添加一个记录任务开始时间的字段,可以按照以下步骤添加: 1. 定义一个新的结构体,包含任务开始时间的字段,例如: ``` typedef struct { UINT32 startTime; // 任务开始时间,单位为 tick } MyTaskInfo; ``` 2. 在任务控制块结构体中添加一个指向该结构体的指针类型成员变量,例如: ``` typedef struct task { ... MyTaskInfo *myInfo; // 指向任务信息的指针 } TASK; ``` 3. 在任务创建函数中,初始化该指针成员变量,将其指向你定义的新结构体,例如: ``` TASK_ID taskId = taskSpawn("MyTask", 50, 0, 10000, (FUNCPTR)myTask, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); MyTaskInfo *info = malloc(sizeof(MyTaskInfo)); // 分配任务信息内存 info->startTime = tickGet(); // 记录任务开始时间 taskId->myInfo = info; // 将任务信息指针指向新分配的内存 ``` 4. 在需要使用该字段的地方,通过任务控制块结构体中的指针成员变量访问该字段,例如: ``` TASK_ID taskId = taskIdSelf(); UINT32 startTime = taskId->myInfo->startTime; // 获取任务开始时间 ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值