如题
我在shell下运行tickGet()函数,其返回值是284
我想请问它的单位是什么啊?
我自己认为单位应该是ms,不知道对不对
如果我想精确到微妙或者纳秒,应该怎么办呢?
请好心人帮帮我吧
谢谢
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以下的精确定时,推荐用硬件做。注意啊,实时操作系统是软件,怎么说它也是软的。
我要赚赏金打赏帖 |
|
|---|---|
| OK1126B-S开发板下以导航按键控制云台/机械臂姿态调整被打赏¥29元 | |
| 【树莓派5】便携热成像仪被打赏¥36元 | |
| 【树莓派5】环境监测仪被打赏¥35元 | |
| OK1126B-S开发板下多时段语音提示型电子时钟被打赏¥27元 | |
| OK1126B-S开发板下函数构建及步进电机驱动控制被打赏¥25元 | |
| 【S32K3XX】LPI2C 参数配置说明被打赏¥20元 | |
| OK1126B-S开发板的脚本编程及应用设计被打赏¥27元 | |
| 5v升压8.4v两节锂电池充电芯片,针对同步和异步的IC测试被打赏¥35元 | |
| 【S32K3XX】S32DS LPI2C 配置失败问题解决被打赏¥22元 | |
| 【S32K3XX】FLASH 的 DID 保护机制被打赏¥19元 | |