arduino 中断 和millis语句

arduino 中断 和millis语句

Arduino中支持如下几种中断: RESET中断、外部中断、定时器中断。
对于单片机来说,中断是指CPU在处理某一事件A时,发生了另一事件B,请求CPU迅速去处理(中断发生);此时CUP暂停当前工作(中断响应),转去处理事件B(中断服务);待CPU将事件B处理完毕后,再回到原来是实践A被中断的地方继续处理事件A(中断返回),这一过程即称之为中断

请添加图片描述

    ① RESET中断:就是当RESET管脚接低电平,则中止当前程序,重启CPU
    
    ② 定时器中断:是指设定CPU内部定时器后,当到达指定时间,将产生中断请求。常用于定时。
    
    ③ 外部中断:就是当CPU的外部中断管脚电平变动时,将产生中断请求。 常用于键盘输入、串口通信等。
    
    ①中断设置函数:MsTimer2::set(unsigned long ms, void (*f)()); 

    此函数用于设定定时每ms毫秒进入中断函数f一次,其中f为我们前面设定的中断服务函数。在本例中MsTimer2::set(300, flash);设定了每经过300ms进入一次中断服务函数flash中。

    ②中断开始函数:MsTimer2::start();

    此函数执行前尽管设定了中断,但是中断依然不会进行,只有执行完此函数,定时器才会开始计时,并按照设定的时间进入中断服务中。本例中在对中断的设置结束后开始中断服务。

    ③中断结束函数:MsTimer2::stop();
    
    此函数执行后,前述中断不再执行。在本例中,进入loop循环后等待10s结束后结束中断。
    下面的程序可以实现通过中断控制led灯300毫秒转换一次亮灭状态的功能。当程序开始loop循环后,经过300ms程序进入flash函数,执行完输出引脚转换电平后再次进入loop循环等待下一次300ms后中断发生或等待超过10s后中断结束。在执行中断服务时,loop函数中的延时函数计时不发生变化,即:延时达到300ms时进入中断函数,中断返回的时延时从300ms开始继续进行。
/*
  MsTimer2 is a small and very easy to use library to interface Timer2 with
  humans. It's called MsTimer2 because it "hardcodes" a resolution of 1
  millisecond on timer2
  For Details see: http://www.arduino.cc/playground/Main/MsTimer2
*/
#include <MsTimer2.h>

// Switch on LED on and off each half second

#if ARDUINO >= 100
const int led_pin = LED_BUILTIN;	// 1.0 built in LED pin var
#else
const int led_pin = 13;			// default to pin 13
#endif


void flash()
{
  static boolean output = HIGH;
  
  digitalWrite(led_pin, output);
  output = !output;
}

void setup()
{
  pinMode(led_pin, OUTPUT);

  MsTimer2::set(500, flash); // 500ms period
  MsTimer2::start();
}

void loop()
{
}
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值