RtosTimer
弃用: EventQueue 取代了 RtosTimer。RtosTimer 和 EventQueue 复制了中断上下文之外的定时事件的功能;但是,EventQueue 具有其他功能来处理将其他事件推迟到多个上下文。
RtosTimer 类层次结构
使用 RtosTimer 类在系统中创建和控制计时器功能。当时间段到期时调用定时器功能,因此单触发和定时定时器都是可能的。您可以启动,重新启动或停止计时器。
线程 osTimerThread 处理定时器。回调函数在此线程的控制下运行,并可能使用基础 RTOS API 调用。
RtosTimer 类参考
公共成员函数 | |
RtosTimer (void(*func)(void const *argument), os_timer_type type=osTimerPeriodic, void *argument=NULL) | |
RtosTimer (mbed::Callback< void()> func, os_timer_type type=osTimerPeriodic) | |
template<typename T , typename M > | |
RtosTimer (T *obj, M method, os_timer_type type=osTimerPeriodic) | |
osStatus | stop (void) |
osStatus | start (uint32_t millisec) |
~RtosTimer () |
RtosTimer 示例
控制四个 LED 的时序。
#include "mbed.h"
#include "rtos.h"
DigitalOut LEDs[4] = {
DigitalOut(LED1), DigitalOut(LED2), DigitalOut(LED3), DigitalOut(LED4)
};
void blink(void const *n) {
LEDs[(int)n] = !LEDs[(int)n];
}
int main(void) {
RtosTimer led_1_timer(blink, osTimerPeriodic, (void *)0);
RtosTimer led_2_timer(blink, osTimerPeriodic, (void *)1);
RtosTimer led_3_timer(blink, osTimerPeriodic, (void *)2);
RtosTimer led_4_timer(blink, osTimerPeriodic, (void *)3);
led_1_timer.start(2000);
led_2_timer.start(1000);
led_3_timer.start(500);
led_4_timer.start(250);
Thread::wait(osWaitForever);
}