搜索
查看: 1999|回复: 2

[原创] Mbed写的简单的定时器

[复制链接]

该用户从未签到

29

主题

322

帖子

15

蝴蝶豆

论坛元老

最后登录
2021-4-23
发表于 2017-9-29 18:53:47 | 显示全部楼层 |阅读模式
本帖最后由 pythonworld 于 2017-9-30 21:05 编辑

Mbed写的简单的定时器,分别定时10s, 300s, 600s, 900s.四个按键选择。
按键使用专用的模块,好处是不用做复杂的按键处理。
#include "mbed.h"

int status = 0;
int second =5;
const float interval1 = 0.2;
const float interval0 = 0.5;
DigitalOut  my_led(D13);
DigitalOut  my_buzzer(D8);

InterruptIn my_button1(D6);
InterruptIn my_button2(D5);
InterruptIn my_button3(D4);
InterruptIn my_button4(D3);

Timeout my_timer;

void key1_pressed()
{
   
    my_timer.detach();
    status = 1;
    second = 10;

}

void key2_pressed()
{
   
    my_timer.detach();
    status = 1;

    second = 300;
}

void key3_pressed()
{
  
    my_timer.detach();
    status = 1;

    second = 600;
}

void key4_pressed()
{
   
    my_timer.detach();
    status = 1;

    second = 900;
}

void buzzer()
{
    my_buzzer = !my_buzzer;
    my_led = !my_led;
    wait(interval1);
    my_buzzer = !my_buzzer;
    wait(interval0);
   
    my_buzzer = !my_buzzer;
    my_led = !my_led;
    wait(interval1);
    my_buzzer = !my_buzzer;
    wait(interval0);
   
    my_buzzer = !my_buzzer;
    my_led = !my_led;
    wait(interval1);
    my_buzzer = !my_buzzer;
    wait(interval0);
   
    my_buzzer = !my_buzzer;
    my_led = !my_led;
    wait(interval1);
    my_buzzer = !my_buzzer;
    wait(interval0);
   
    my_buzzer = !my_buzzer;
    my_led = !my_led;
    wait(interval1);
    my_buzzer = !my_buzzer;
    wait(interval0);
    status = 0;

}


int main()
{
    my_buzzer.write(1);
    // Set button
    my_button1.fall(&key1_pressed);
//    my_button1.rise(&key1_pressed);

    my_button2.fall(&key2_pressed);
//    my_button2.rise(&key2_pressed);

    my_button3.fall(&key3_pressed);
//    my_button3.rise(&key3_pressed);

    my_button4.fall(&key4_pressed);
//    my_button4.rise(&key4_pressed);


    while (1) {
        if(status == 1) {
            my_timer.attach(&buzzer,second);
            status = 2;
        }
        if(status == 2)
       { wait(0.5);
         my_led = !my_led;
        }
    }

}
timer photo.JPG
回复

使用道具 举报

  • TA的每日心情
    开心
    2018-2-6 09:20
  • 签到天数: 1 天

    [LV.1]初来乍到

    1182

    主题

    4967

    帖子

    1

    蝴蝶豆

    论坛元老

    最后登录
    2020-3-17
    发表于 2017-9-30 13:05:38 | 显示全部楼层
    谢谢分享
    回复

    使用道具 举报

    该用户从未签到

    19

    主题

    1734

    帖子

    7

    蝴蝶豆

    论坛元老

    最后登录
    2021-5-10
    发表于 2017-9-30 13:25:28 | 显示全部楼层
    四个按键太多,能否减去2个,用两个按键来设置。
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|论坛-意法半导体STM32/STM8技术社区

    GMT+8, 2024-4-27 13:02 , Processed in 0.182579 second(s), 39 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表