打印
[Atmel]

mbed环境下SAMR21开发板8:定时器1

[复制链接]
806|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主

除了wait相关的等待函数以外,mbed还提供了三个对象用来完成和时间相关的功能,分别是Timeout,用来在给定的时间执行特定函数;Ticker,用来定时执行特定函数;Timer,用来给系统计时,它们可用的方法描述如下:

类名
方法
用途
Timer
Timer();
构造函数,实例化Timer对象
void start();
开始计时
void stop();
停止计时
void reset();
重新计时,即把时间计数恢复从0,如果原来处于start状态,那么计时继续
float read();
读取计时开始后过去的时间,单位是秒
int read_ms();
读取计时开始后过去的时间,单位是毫秒
int read_us();
读取计时开始后过去的时间,单位是微秒
operator float();
操作符重载,相当于read
Ticker
Ticker();
构造函数,实例化Ticker对象
void attach(void (*fptr)(void), float t)
设定每t秒需要执行的函数
void attach_us(void (*fptr)(void), unsigned int t)
设定每t微秒需要执行的函数
void detach();
取消本对象需要定时执行的函数
Timeout
Timeout();
构造函数,实例化Timeout对象
void attach(void (*fptr)(void), float t)
设定t秒后需要执行的函数
void attach_us(void (*fptr)(void), unsigned int t)
设定t微秒后需要执行的函数
void detach();
取消本对象需要执行的函数





以下的程序是用来检测按键按下的时间:

原理很简单当按键按下时记一下时间,当抬起时记一下时间,相减就是按下的时间。


程序如下:

#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);



}



以下是程序下载时的截图:




以下是运行时的截图:



相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:http://shop34182318.taobao.com/ http://shop562064536.taobao.com

2398

主题

6950

帖子

67

粉丝