如题
我在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以下的精确定时,推荐用硬件做。注意啊,实时操作系统是软件,怎么说它也是软的。
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |