完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
最近有读者问了这么一个问题:为啥RTOS的系统滴答(Tick)默认配置都是1000,我配置为100、10000,或者2000可以不?
相信很多初学者都有这个疑问,包括我初学RTOS也曾困惑滴答配置不同值到底有啥不同和影响。 今天就来简单说下关于RTOS系统滴答的内容! 什么是系统滴答? 系统滴答(SysTick),有些地方也叫时钟节拍、系统心跳等。 操作系统可以多任务间进行切换,就是靠一个系统定时器以**频率中断,为操作系统提供调度(上下文切换)才能实现任务切换。 而这个定时器,就是我们本文说的系统滴答。 早些年的51、430单片机,跑RTOS,都是单独利用一个Timer定时器提供系统滴答。 为了考虑跑RTOS这个问题,Cortex-M内核自带系统滴答这个定时器。 你会发现市面上很多单片机基本都自带有SysTick这个定时器,像Cortex-M0、 M3、 M4这些内核的单片机都有的,而且只要简单调用官方写好的API函数即可使用。 系统配置文件 通常,系统滴答(OS_TICKS)位于系统配置文件中,对系统配置文件进行配置也是重要的一步。(一些系统通过图形化界面进行配置,其实也是对系统配置文件进行配置) 比如FreeRTOSConfig.h 再比如ucos系统的os_cfg.h OS_TICKS一般是配置为1000,从宏定义和注释很容易理解,就是每秒系统滴答的次数。 这里的配置选项很多,初学者可能不理解一些选项的含义,可以使用官方默认配置即可,等熟悉到一定程度,这些配置选项自然就理解了。 系统滴答配置多少才合适? 系统滴答配置1000,代表系统1ms要进行一次轮转调度,检查是否有更高优先级任务要执行(并切换任务)。 1ms是什么概念? 可能你认为1ms时间好短,但对于操作系统而言,1ms的时间却是很长。 100M主频的单片机,执行一次调度(几十条语句),时间在us级别,你说1ms对于系统而言有多长? 为啥配置为1000? 肯定很多人有这个疑问,配置为1000,为啥不是100、10000,或者2000? 1000是一个比较适合的中等值,其他100、10000,或者2000也可以,只是不利于系统以及编程。 a.如果滴答太大,10K,甚至100K,对系统的负担比较大。因为自身调度会占用CPU时间。 b.1ms滴答一次,方便编程时统延时。2k、10k这种值,在用到系统延时时,不方便计算。 vTaskDelay(1000); 如果滴答值为1000,则代表延时1秒; 如果滴答值为2000,则代表延时0.5秒,很明显这种不利于编程; 配置为其他数值有啥影响? 除1000之外,方便计算延时的就是1,或者1M。(很明显1,或者1M都不现实) 配置为1,系统1秒才响应一次,这还叫实时操作系统? 配置为1M,1us调度一次,CPU基本都在做调度的工作,不用干其他事了。 除此之外,100、10000,或者2000,就是延时计算不方便之外,按理说也是可以的。 小结 1.实时操作系统的SysTick,在没有特殊情况下,最好默认配置1000; 2.在系统允许的情况下,SysTick数值越大,系统实时性越高;反之实时性越差; 3.主频相对偏低(比如低于10M)的处理器,SysTick值可以适当配置第一点; |
|
|
|
只有小组成员才能发言,加入小组>>
3284 浏览 9 评论
2960 浏览 16 评论
3464 浏览 1 评论
9008 浏览 16 评论
4054 浏览 18 评论
1124浏览 3评论
579浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
572浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2306浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1863浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-28 10:07 , Processed in 1.225763 second(s), Total 79, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号