你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 3414|回复: 11

[STM32L476] 【NUCLEO-L476RG开发】mbed时钟系统2

[复制链接]

76

主题

5715

回帖

4

蝴蝶豆

论坛元老

最后登录
2020-10-15
发表于 2015-11-25 23:38:35 | 显示全部楼层 |阅读模式
本帖最后由 党国特派员 于 2015-11-25 23:38 编辑

接上次,今天学习下mbed下的时钟系统之TimeOut和Ticker,今天要用到4个LED,因为开发板上只有一个,所以需要自己再添加3个LED
mbed Timeout的应用

mbed的Timeout对象主要用来在给定的时间后执行给定的函数,如下面的测试代码,运行后你会发现NUCLEO-L476RG的四个led分别点亮,由于timeout只会被执行一次,所以点亮后会保持不变:
  1. #include "mbed.h"

  2. #define LED2 PA_0
  3. #define LED3 PA_1
  4. #define LED4 PA_4
  5. //定义LED
  6. DigitalOut led1(LED1);
  7. DigitalOut led2(LED2);
  8. DigitalOut led3(LED3);
  9. DigitalOut led4(LED4);

  10. //定义TIMER
  11. Timeout timer_led1;
  12. Timeout timer_led2;
  13. Timeout timer_led3;
  14. Timeout timer_led4;

  15. void led1flip()
  16. {
  17.     led1=!led1;
  18. }

  19. void led2flip()
  20. {
  21.     led2=!led2;
  22. }

  23. void led3flip()
  24. {
  25.     led3=!led3;
  26. }

  27. void led4flip()
  28. {
  29.     led4=!led4;
  30. }

  31. int main() {
  32.    
  33.     timer_led1.attach(&led1flip,0.5);

  34.     timer_led2.attach(&led2flip,0.5*2);

  35.     timer_led3.attach(&led3flip,0.5*3);

  36.     timer_led4.attach(&led4flip,0.5*4);

  37.     while (1);
  38. }
复制代码


mbed Ticker的应用

mbed的Ticker对象主要用来执行各类需要定期执行的函数,它和Timeout的唯一不同就是Timeout相关的函数只会被执行一次,而Ticker相关的则会被定期执行,如下面的测试代码,运行后你会发现xbed LPC1768的四个led将按照不同的频率变换:

  1. #include "mbed.h"

  2. #define LED2 PA_0
  3. #define LED3 PA_1
  4. #define LED4 PA_4
  5. //定义LED
  6. DigitalOut led1(LED1);
  7. DigitalOut led2(LED2);
  8. DigitalOut led3(LED3);
  9. DigitalOut led4(LED4);

  10. //定义TIMER
  11. Ticker timer_led1;
  12. Ticker timer_led2;
  13. Ticker timer_led3;
  14. Ticker timer_led4;

  15. void led1flip()
  16. {
  17.     led1=!led1;
  18. }

  19. void led2flip()
  20. {
  21.     led2=!led2;
  22. }

  23. void led3flip()
  24. {
  25.     led3=!led3;
  26. }

  27. void led4flip()
  28. {
  29.     led4=!led4;
  30. }

  31. int main() {
  32.    
  33.     timer_led1.attach(&led1flip,0.5);

  34.     timer_led2.attach(&led2flip,0.5*2);

  35.     timer_led3.attach(&led3flip,0.5*3);

  36.     timer_led4.attach(&led4flip,0.5*4);

  37.     while (1);
  38. }
复制代码


我们在使用Ticker对象的过程中还可以随时对Ticker设定的间隔进行更改,更改后的时间是即时生效的,如下面的代码,我们发现,用户每按一次按钮,led1的闪烁频率就会加快一倍。

  1. #include "mbed.h"

  2. #define LED2 PA_0
  3. #define LED3 PA_1
  4. #define LED4 PA_4

  5. DigitalOut led1(LED1);
  6. InterruptIn btn(USER_BUTTON);
  7. Ticker timer_led1;
  8. float interval;

  9. void led1flip()
  10. {
  11.     led1=!led1;
  12. }

  13. void changefred()
  14. {
  15.     interval=interval /2.0;
  16.     timer_led1.attach(&led1flip,interval);
  17. }

  18. int main() {

  19.     interval=2;

  20.     btn.fall(&changefred);

  21.     timer_led1.attach(&led1flip,interval);

  22.     while (1);
  23. }
复制代码
TimeOut应用:
timeout.gif
Ticker应用:
ticker.gif

评分

参与人数 1ST金币 +30 收起 理由
沐紫 + 30

查看全部评分

回复

使用道具 举报

50

主题

1057

回帖

67

蝴蝶豆

论坛元老

最后登录
2020-12-2
发表于 2015-11-26 00:23:15 | 显示全部楼层
mbed比arduino强大多了
回复 支持 反对

使用道具 举报

26

主题

1984

回帖

6

蝴蝶豆

论坛元老

最后登录
2020-12-9
发表于 2015-11-26 10:49:27 | 显示全部楼层
很不错,感谢分享。
回复 支持 反对

使用道具 举报

10

主题

379

回帖

0

蝴蝶豆

高级会员

最后登录
1970-1-1
发表于 2015-11-26 11:38:59 | 显示全部楼层
很不错
回复 支持 反对

使用道具 举报

14

主题

1066

回帖

2

蝴蝶豆

金牌会员

最后登录
2019-1-10
发表于 2015-11-26 12:14:24 | 显示全部楼层
比较好奇gif用什么软件做的
回复 支持 反对

使用道具 举报

33

主题

1243

回帖

0

蝴蝶豆

论坛元老

最后登录
2019-3-9
发表于 2015-11-26 12:49:47 | 显示全部楼层
感谢楼主,学到不少东西
回复 支持 反对

使用道具 举报

93

主题

2449

回帖

4

蝴蝶豆

论坛元老

最后登录
2020-6-28
发表于 2015-11-26 15:38:23 | 显示全部楼层
谢谢分享            
回复 支持 反对

使用道具 举报

76

主题

5715

回帖

4

蝴蝶豆

论坛元老

最后登录
2020-10-15
 楼主| 发表于 2015-11-26 18:24:26 | 显示全部楼层
wu1169668869 发表于 2015-11-26 12:14
比较好奇gif用什么软件做的

photoshop 就可以完成。
回复 支持 反对

使用道具 举报

41

主题

2476

回帖

282

蝴蝶豆

论坛元老

最后登录
2020-12-8
发表于 2015-11-26 20:52:02 | 显示全部楼层
顶一下  
回复 支持 反对

使用道具 举报

6

主题

2397

回帖

0

蝴蝶豆

论坛元老

最后登录
2020-12-9
发表于 2015-11-27 09:44:06 | 显示全部楼层
不错不错
回复 支持 反对

使用道具 举报

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版