计时器
计时器是一个使用内核的系统时钟来测量时间流逝的内核对象。当达到计时器的指定的时间限制时,它可以执行应用程序定义的操作,或者它可以简单地记录过期并等待应用程序读取其状态。
概念
- 可以定义任意数量的计时器(仅受可用RAM的限制)。每个计时器都由其内存地址引用。
- 计时器具有以下键属性:
- 指定计时器第一次到期之前的时间间隔的持续时间。这是一个可以通过不同的单元进行初始化的k_timeout_t值。
- 指定第一个计时器之后所有计时器到期之间的时间间隔的周期,也是k_timeout_t。它必须是非负的。周期K_NO_WAIT(即零)或K_FOREVER意味着计时器是一个一次性计时器,在一次过期后停止。(例如,如果一个计时器启动的持续时间为200,周期为75,那么它将首先在200 ms之后过期,然后在那之后每75 ms过期一次。)
- 每次定时器过期时执行的过期函数。该函数由系统时钟中断处理程序执行。如果不需要过期函数,则可以指定NULL函数。
- 当计时器在运行时过早停止时所执行的一种停止函数。该函数由停止计时器的线程执行。如果不需要停止函数,则可以指定空函数。
- 状态值,指示自上次读取状态值以来计时器过期的次数。
计时器必须初始化才能使用。这将指定其到期函数和停止函数值,将计时器的状态设置为零,并将计时器置于停止状态。
系统是通过指定持续时间和周期来启动计时器的。计时器的状态被重置为零,然后计时器进入运行状态,并开始倒数到到期。
请注意,计时器的持续时间和周期参数指定了将经过
本文详细介绍了Zephyr内核中的计时器服务,包括计时器的概念、如何定义和使用计时器、读取计时器状态及同步。计时器用于测量时间流逝,可在到达设定时间时执行特定操作或记录过期。内容涵盖了计时器的初始化、启动、停止、重新启动以及状态读取等操作。
订阅专栏 解锁全文
726

被折叠的 条评论
为什么被折叠?



