除了wait相关的等待函数以外,mbed还提供了三个对象用来完成和时间相关的功能,分别是Timeout,用来在给定的时间执行特定函数;Ticker,用来定时执行特定函数;Timer,用来给系统计时,它们可用的方法描述如下: 类名 | | | | | | | | | | | 重新计时,即把时间计数恢复从0,如果原来处于start状态,那么计时继续 | | | | | | | | | | | | void attach(void (*fptr)(void), float t) | | void attach_us(void (*fptr)(void), unsigned int t) | | | | | | | void attach(void (*fptr)(void), float t) | | void attach_us(void (*fptr)(void), unsigned int t) | | | |
以下的程序是用来检测按键按下的时间:
原理很简单当按键按下时记一下时间,当抬起时记一下时间,相减就是按下的时间。
程序如下:
#include "mbed.h"
Serial pc(USBTX,USBRX);
InterruptIn btn(PA28);
Timer mytimer;
int falltime;
int risetime;
void fallfunc()
{
falltime=mytimer.read_us();
}
void risefunc()
{
risetime=mytimer.read_us();
pc.printf("You press button for %d us \n",risetime-falltime);
}
int main() {
mytimer.start();
btn.fall(&fallfunc);
btn.rise(&risefunc);
while (1);
}
以下是程序下载时的截图:
以下是运行时的截图:
|