在线时间384 小时
UID3066878
ST金币0
蝴蝶豆4
注册时间2014-10-27
论坛元老
- 最后登录
- 2020-10-15
|
a0a.1 32b0c
本帖最后由 党国特派员 于 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的闪烁频率就会加快一倍。
- #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);
- }
复制代码 TimeOut应用:
Ticker应用:
|
评分
-
查看全部评分
|