jiaowoxiaolu 发表于 2010-12-8 09:41:40

请教一个ucos问题!OS_TICKS_PER_SEC

ucos 中 OS_TICKS_PER_SEC   这个时钟节拍取值有什么讲究吗,如果取值很大会对系统稳定性有什么影响吗?

my_avr 发表于 2010-12-8 10:00:47

OS_TICKS_PER_SEC定义每秒钟系统时钟中断的次数,比如定义为100,则每10ms定时器中断一次。该数值越大,系统的负荷越重。

jiaowoxiaolu 发表于 2010-12-8 10:11:29

系统负荷重会有什么后果?

chenfu 发表于 2010-12-10 15:29:20

效率低了

songtao0728 发表于 2010-12-16 11:28:15

我怎么感觉OS_TICKS_PER_SEC 就是一个1秒的宏定义(字面容易让人理解,如果非要定义成其它时间也是可以的),具体这个值设置成多少才是1秒,那要看你的定时器是多长时间产生一次中断,比如节拍是5ms,那这个值就应该宏定义成200,如果宏定义成100啦,那就与OS_TICKS_PER_SEC本身的意思不相符了,这样不是不可以,也是可以的,但如果你任务中作OSTimeDly(OS_TICKS_PER_SEC)延时,那他就不是1秒啦,而是0.5S,如果设计不注意这个问题的话就会增加你的CPU的负荷量,使你的CPU的效率就下降啦.

MZ_Guo 发表于 2011-5-16 11:04:59

1楼说得很清楚了
其实这个值取适中即可,100,200都行,看你的片子是什么,Cortex-M3的片子取200较合适
这个值太小,系统调度周期较长,各个任务之间切换较慢,适时性降低,
而太大了,中断周期与调试周期接近了,那就不是适时性低了,而是死机,
你想啊,没两下就中断并进行任务切换,这个任务还没运行几句呢,就给换别的了,
调度所用的时间相比运行时间还久,那这就没意义了,毕竟我们的主要目标是运行,切换只是多任务必须的无奈之举

我认为,以你的多任务中其中一个运行一个循环所需要的时间(估算一下)为最短周期来定,其倒数就是你需要确定的调度频率,
当然,如果需要太久了那就要考虑其它任务的情况,适应性也要照顾到

laoma 发表于 2011-5-16 12:02:59

飘过...

用产品证明了,在CM3和CM0内核下,跑17个任务,OS_TICKS_PER_SEC = 1000一切功能正常,不存在楼上说的什么死机

dummy_write 发表于 2011-6-18 10:24:32

【4楼】正确
影响效率的是系统节拍(tick)的大小,1节拍OS中断1次,中断时间/节拍周期=效率。
OS_TICKS_PER_SEC是用来定义OSTimeDlyHMSM()函数中1秒的节拍数。

linfeng5945 发表于 2011-8-6 11:15:09

我用LPC2210,调到1000就出错。但5ms的定时中断感觉有点长啊

路人甲被注册了 发表于 2013-8-6 01:53:16

本帖最后由 路人甲被注册了 于 2013-8-6 01:55 编辑

是的。受教。

qs6361036 发表于 2014-10-10 20:18:33

laoma 发表于 2011-5-16 12:02
飘过...

用产品证明了,在CM3和CM0内核下,跑17个任务,OS_TICKS_PER_SEC = 1000一切功能正常,不存在楼上 ...

不错 ,用1000 没有什么问题 。没有死机
页: [1]
查看完整版本: 请教一个ucos问题!OS_TICKS_PER_SEC