RT-Thread学习笔记 -- 时钟管理

RT-Thread学习笔记 – 时钟管理

软件硬件定时器区别

1.定时器分为硬件定时器和软件定时器。区别:硬件定时器的超时函数是在定时器中断中管理的(也就是时基中断systick中断)。而软件定时器的超时函数是在线程中管理的。
进中断的就是“硬的”,在线程里或任务里的是“软的”。

2.软件定时器比硬件定时器使用起来更简单,但是硬件定时器能提供更高精度的定时效果。一般来说软件定时器提供的 ms 级别的。精确定时,请使用硬件定时器,比如 us 级。

3.一般而言,芯片内部的硬件定时器数量有限,可能无法满足用户需求。软件定时器的数量几乎不受限制,但其精度必须是芯片系统tick的整数倍。

硬件定时器

线程内置的定时器,线程本身的属性、集合,属于硬件定时器。系统定时器列表,即硬件定时器列表,线程内置定时器或者用户自定义的硬件定时器就挂在这个列表中,以供每次滴答中断时基更新是查询有没有超时的定时器,有的话就执行定时器的超时函数——对于是线程的定时器执行的是固定的超时函数——恢复阻塞延时线程、执行调度,而对于是用户自定义的硬件定时器,则执行用户自定义的超时函数。

软件定时器

用户自定义的定时器,可设为硬件定时器或软件定时器,比较自由。软件定时器是由操作系统提供的一:类系统接口,它构建在硬件定时器基础之上(系统滴答定时器)。软件定时器使系统能够提供不受数目限制的定时器服务。
RT-Thread操作系统提供的软件定时器,以系统节拍(OS Tick)的时间长度为定时单位,提供了基于系统节拍整数倍的定时能力,即定时数值是OSTick的整数倍。例如一个OS Tick是10ms,那么上层软件定时器只能提供10ms,20ms,, 100ms等时间精度的定时服务,而不能定时为15ms、25ms、35ms等。
当软件定时器所设定的定时时间到了后,会调用用户设置的定时器timeout回调函数,用户需要定时运行的程序会在回调函数中得到处理。

2.定时模式

HARDTIMER模式

HARD_TIMER 模式的定时器超时函数在中断上下文环境中执行,此模式在定时器初始化时指定。在中断上下文环境中执行时,对于超时函数的要求与中断服务例程的要求相同:执行时间应该尽量短,执行时不应导致当前上下文挂起。HARD_TIMER 模式是RT_Thread 软件定时器的默认方式。

SOFTTIMER模式

SOFTTIMER 模式的定时器超时函数在系统的timer 线程上下文中执行(即RT-Thread 启动后会创建一个timer 线程)。通过宏定义RT_USING_TIMER_SOFT 来决定是否启用该模式。当启用SOFTTIMER 模式后,我们可以在定时器初始化时指定定时器工作在SOFTTIMER 模式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值