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

[复制链接]
 楼主| ddllxxrr 发表于 2016-2-15 20:25 | 显示全部楼层 |阅读模式

除了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();
取消本对象需要执行的函数





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

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


程序如下:

  1. #include "mbed.h"
  2. Serial pc(USBTX,USBRX);

  3. InterruptIn btn(PA28);

  4. Timer mytimer;

  5. int falltime;

  6. int risetime;

  7. void fallfunc()

  8. {

  9.     falltime=mytimer.read_us();

  10. }

  11. void risefunc()

  12. {

  13.     risetime=mytimer.read_us();

  14.     pc.printf("You press button for %d us \n",risetime-falltime);

  15. }

  16. int main() {

  17.     mytimer.start();

  18.     btn.fall(&fallfunc);

  19.     btn.rise(&risefunc);

  20.     while (1);



  21. }



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




以下是运行时的截图:



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

2403

主题

6994

帖子

68

粉丝
快速回复 在线客服 返回列表 返回顶部