实时操作系统的滴答Tick设置多少才合适?
关注+星标公众号,不错过精彩内容
作者 | strongerHuang
微信公众号 | 嵌入式专栏
最近有读者问了这么一个问题:为啥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值可以适当配置第一点;
······
------------ END ------------
后台回复『RTOS』『嵌入式软件设计与开发』相关文章。
欢迎关注我的公众号,回复“加群”按规则加入技术交流群,回复“1024”查看更多内容。
欢迎关注我的视频号:
点击“阅读原文”查看更多分享,欢迎点分享、收藏、点赞、在看。
实时操作系统的滴答Tick设置多少才合适?相关推荐
- ttl值设置多少才合适
之前,公司用户的手机app用户出现了手机无法联网,移动.联通.电信.就是因为ttl值设置的问题. 服务器 阿里云 centos 6.5 我们在解析域名时经常出现 TTL 这个字段,里面默认写的是10分 ...
- 如何选择DNS的TTL值,设置多少才合适 ?
知名网络安全专家,东方联盟创始人郭盛华透露:"关于如何为域名选择DNS生存时间(TTL),TTL非常重要,因为它们间接控制解析器缓存记录的时间,直接影响用户体验" . 在东方联盟D ...
- 系统滴答及Systick定时器
1. 概述 操作系统需要有一个系统的滴答来提供任务管理的时间依据,bcos中的任务延时及tasklet的定时都是依据系统滴答.系统滴答需要一个定时器来提供时间基准,几乎所有的CPU都会提供一个滴答定时 ...
- 滴答定时器的计数模式_SysTick(系统滴答定时器)
一.SysTick概述 Systick定时器是一个24 位的倒计数定时器,计到0时,将从RELOAD 寄存器中自动重装载定时初值.只要不把它在SysTick 控制及状态寄存器中的使能位清除,就永不停息 ...
- 【Java 8 新特性】Java Clock tick() 设置时间最小跳动间隔
Clock.tick获得一个时钟,它返回从指定时钟截断到最近出现的指定持续时间的实例. 截断的时刻将小于接近指定持续时间的实际时刻,最小的时间单位是指定的时间单位. 获得的时钟将只按照指定的持续时间进 ...
- stm32零星笔记(一)——sysTick滴答计时器、RTC实时时钟
目录 什么是sysTick.RTC 关于时钟树 功能 延时 阻塞延时 非阻塞延时的一种近似实现 秒中断 日历与时间 RTC(Real Time Clock,实时时钟) 日期掉电保持 什么是sysTic ...
- FreeRTOS实时操作系统(七)时间片调度及RTOS的滴答定时器
系列文章目录 FreeRTOS实时操作系统(一)RTOS的基本概念 FreeRTOS实时操作系统(二)任务创建与任务删除(HAL库) FreeRTOS实时操作系统(三)任务挂起与恢复 FreeRTOS ...
- cube 设置滴答定时器_stm32cubemx生成的代码总是进入滴答定时器中断
最近stm32cubemx生成的代码总是进入滴答定时器中断,调了好长时间才发现,原来有好几个地方都在设置滴答定时器,最后我把 uint32_t HAL_SYSTICK_Config(uint32_t ...
- 滴答顺风车怎么抢90%以上的订单_顺风车这样做才是对的,其他都是扯淡!
作为车主,很早就注册过滴滴.滴答.哈罗平台,自从滴滴顺风车"自工"后,每个月接3-5次滴答顺风车,哈罗价太低,顺路度低基本不接. 作为乘客,偶尔打滴滴专车,出租车,仅打过一次顺风车 ...
最新文章
- 容斥原理学习(Hdu 4135,Hdu 1796)
- ubuntu下磁道坏区的检测与修复
- 淺談Raid Cache Memory上應用的問題和實踐
- Android --- no module 问题
- c语言链表查找的代码与题目,链表的C语言实现之单链表的查找运算_c语言
- shell if else 用法 syntax error near unexpected token `then'
- Java 字符串 String 与整数型 int 之间的转换
- C#基础加强(8)之委托和事件
- CVPR 2019 | 微软亚洲研究院 7 篇精选论文解读
- 【Java】Java中的设计模式的介绍以及代码详解
- Pytorch——用50行代码搭建ResNet
- 2018,扬帆起航!
- android-常用部件
- 配置IDEA运行环境
- python做词云的图片素材_还在为专栏封面发愁?我用Python写了个词云生成器!
- python批量发送不同附件_python批量发送带附件邮件
- Error:403 No valid crumb was included in the request
- mongoose 之Shema
- Android 增量更新
- 自行车不可以上高速,但是为什么有的人可以从北京骑到西藏?