RTT时钟管理篇——软硬定时器理解(一)

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

根据软硬分为2类定时器列表。

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

二是软件定时器列表。用户自定义的软件定时器挂在这里,同时是在定时器线程里来查询是否超时,但是是线程就有优先级,所以定时器线程被唤醒时不一定能立马执行,这就是其精度不高的原因。

2.定时器又分为两类:一类是属于线程内置的定时器,线程本身的属性、集合,属于硬件定时器。另一类是用户自定义的定时器,可设为硬件定时器或软件定时器,比较自由。

一片野火rtt原话:
在RT-Thread中,我们也可以在创建定时器时,把定时器指定成SOFT_TIMER的方式,这样可以使得定时器超时函数完全运行在timer系统线程上下文环境中。如果系统在初始化时需要使用SOFT_TIMER特性,需要在系统配置中打开RT_USING_TIMER_SOFT宏定义,那么调用rt_system_timer_thread_init函数就可以启动timer系统线程。这里值得注意的是,SOFT_TIMER定时器的精度由RT_TIMER_TICK_PER_SECOND定义的值所决定(每秒触发的timer tick次数是多少),这个值必须是OS tick的整数倍。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值