34、实时框架中的时间事件与原生事件队列解析

实时框架时间事件与原生事件队列解析

实时框架中的时间事件与原生事件队列解析

1. 时间事件的内部表示与管理

时间事件在系统中有着重要的作用,其内部表示与管理机制是理解系统运行的关键。QF 使用双向链表来管理所有已激活的时间事件。在这个链表中,新激活的时间事件总是被插入到链表头部。系统时钟每次滴答时,都会从链表头部开始扫描。

当一个时间事件被解除激活时,比如一次性定时器到期自动解除,或者应用程序调用 QTimeEvt_disarm() 函数显式解除,该时间事件会从链表中移除。从双向链表中移除一个对象是一个快速且确定的操作,不需要从链表头部重新扫描。解除激活的时间事件会留在链表外,不会消耗 CPU 周期。

2. 系统时钟滴答与 QF_tick() 函数

为了管理时间事件,需要从一个被称为系统时钟滴答的周期性时间源调用 QF_tick() 函数。系统时钟滴答的频率通常在 10Hz 到 100Hz 之间。

QF_tick() 函数的实现如下:

void QF_tick(void) {
    /* see NOTE01 */
    QTimeEvt *t;
    QF_INT_LOCK_KEY_
    (1)
    QF_INT_LOCK_();
    (2)
    t = QF_timeEvtListHead_;
    /* start scanning the list from the head */
    (3)
    while (t != (QTimeEvt *)0) {
        (
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值