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

查看: 3439|回复: 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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版