1、 1个活动对象创建多个定时器
QTimeEvt_ctorX(&me->timeEvt1, &me->super, TIMEOUT1_SIG, 0U);
QTimeEvt_ctorX(&me->timeEvt2, &me->super, TIMEOUT2_SIG, 0U);
2、启动定时器
QTimeEvt_armX(&me->timeEvt1, 5000, 5000);
QTimeEvt_armX(&me->timeEvt2, 5000, 5000);
启动定时器的函数的声明如下:
void QTimeEvt_armX(QTimeEvt * const me,
QTimeEvtCtr const nTicks, QTimeEvtCtr const interval);
nticks:定时器第一次发送超时事件所需要的时间。
interval:后续超时事件发送所间隔的时间。当此值为0时,定时器将只产生1次超时事件,间隔时间为nticks设置时间
3、发送消息
bool QACTIVE_POST(QMActive *const me_, QEvtconst*const e_,
void const*constsender_/*活动对象值或者任意标识发送者的数值(比如在ISR中发布的时候,没有活动对象),本参数在不使用QS的时候是无效的,可填入任意值*/)
bool QACTIVE_POST_X(QMActive *const me_, QEvtconst*const e_,
uint_fast16_tconst margin_/*保证留有多少的空闲元素,在QACTIVE_POST()默认为0,即可以填满队列*/,
void const*constsender_/*活动对象值或者任意标识发送者的数值(比如在ISR中发布的时候,没有活动对象),本参数在不使用QS的时候是无效的,可填入任意值*/)
TableEvt *pe = Q_NEW(TableEvt, LED2OFF_SIG);
QACTIVE_POST(AO_Blinky2, &pe->super, 0);