| 本帖最后由 党国特派员 于 2015-11-25 23:38 编辑 
 接上次,今天学习下mbed下的时钟系统之TimeOut和Ticker,今天要用到4个LED,因为开发板上只有一个,所以需要自己再添加3个LED
 mbed Timeout的应用
 
 mbed的Timeout对象主要用来在给定的时间后执行给定的函数,如下面的测试代码,运行后你会发现NUCLEO-L476RG的四个led分别点亮,由于timeout只会被执行一次,所以点亮后会保持不变:
 
 复制代码#include "mbed.h"
#define LED2 PA_0
#define LED3 PA_1
#define LED4 PA_4
//定义LED
DigitalOut led1(LED1);
DigitalOut led2(LED2);
DigitalOut led3(LED3);
DigitalOut led4(LED4);
//定义TIMER
Timeout timer_led1;
Timeout timer_led2;
Timeout timer_led3;
Timeout timer_led4;
void led1flip()
{
    led1=!led1;
}
void led2flip()
{
    led2=!led2;
}
void led3flip()
{
    led3=!led3;
}
void led4flip()
{
    led4=!led4;
}
int main() {
    
    timer_led1.attach(&led1flip,0.5);
    timer_led2.attach(&led2flip,0.5*2);
    timer_led3.attach(&led3flip,0.5*3);
    timer_led4.attach(&led4flip,0.5*4);
    while (1);
}
 mbed Ticker的应用
 
 mbed的Ticker对象主要用来执行各类需要定期执行的函数,它和Timeout的唯一不同就是Timeout相关的函数只会被执行一次,而Ticker相关的则会被定期执行,如下面的测试代码,运行后你会发现xbed LPC1768的四个led将按照不同的频率变换:
 
 
 复制代码#include "mbed.h"
#define LED2 PA_0
#define LED3 PA_1
#define LED4 PA_4
//定义LED
DigitalOut led1(LED1);
DigitalOut led2(LED2);
DigitalOut led3(LED3);
DigitalOut led4(LED4);
//定义TIMER
Ticker timer_led1;
Ticker timer_led2;
Ticker timer_led3;
Ticker timer_led4;
void led1flip()
{
    led1=!led1;
}
void led2flip()
{
    led2=!led2;
}
void led3flip()
{
    led3=!led3;
}
void led4flip()
{
    led4=!led4;
}
int main() {
    
    timer_led1.attach(&led1flip,0.5);
    timer_led2.attach(&led2flip,0.5*2);
    timer_led3.attach(&led3flip,0.5*3);
    timer_led4.attach(&led4flip,0.5*4);
    while (1);
}
 我们在使用Ticker对象的过程中还可以随时对Ticker设定的间隔进行更改,更改后的时间是即时生效的,如下面的代码,我们发现,用户每按一次按钮,led1的闪烁频率就会加快一倍。
 
 
 TimeOut应用:复制代码#include "mbed.h"
#define LED2 PA_0
#define LED3 PA_1
#define LED4 PA_4
DigitalOut led1(LED1);
InterruptIn btn(USER_BUTTON);
Ticker timer_led1;
float interval;
void led1flip()
{
    led1=!led1;
}
void changefred()
{
    interval=interval /2.0;
    timer_led1.attach(&led1flip,interval);
}
int main() {
    interval=2;
    btn.fall(&changefred);
    timer_led1.attach(&led1flip,interval);
    while (1);
}
   Ticker应用:
 
   
 
 | 
photoshop 就可以完成。
视频不方便。。。