arduino中断函数的学习——定时中断(MsTimer2)

arduino定时器(MsTimer2)学习

学习之前,先认识一下定时器的中断函数吧

void set(unsigned long ms, void (*f)())
这个函数设置定时中断的时间间隔和调用的中断服务程序。ms表示的是定时时间的间隔长度,单位是ms,void(*f)()表示被调用中断服务程序,只写函数名字就可以了。

void start()
开启定时中断

void stop()
关闭定时中断

这三个函数都是在MsTimer2的作用于中进行的,在使用时都要加上作用域。

下面通过一段代码讲解来学习吧
我使用的是arduino nano(用哪一个控制板都没有关系)来验证定时函数,下面的代码想要实现的功能是,每隔两秒进入一次中断,改变a的值,从而控制3号引脚的发光二极管的熄灭和亮。总共会闪烁5次,之后是保留最后一次的a值,并退出中断。加入串口的目的在于,我们能很好的在串口显示器上观察键值的变化,什么时候中断结束。

#include<MsTimer2.h>    //MsTimer2库
int a;            //定义一个全局变量,将在被调用的中断函数中使用
void fals(){      //中断函数
 static int i=0;    //定义的一个静态变量,每次进入中断时,i保留上一次的值
 if(i%2==0){    //通过i来改变a的值,用a来改变pin 3 的电平
 a=0;
  }
  else{
    a=1;
    }
 if(i==9){     //通过串口查看i的值,并在i=9时关闭中断
  MsTimer2::stop();   //关闭定时中断的函数
  Serial.println("9中断已结束");   
  }
   Serial.println(i);      //当i=9时,执行完上面的if语句后还会在串口监视器上显示9
   i++;
  }
void setup() {      //初始化
 Serial.begin(9600);    //设置波特率
 pinMode(3,OUTPUT);    //3号引脚,输出模式
 digitalWrite(3,1);     
 MsTimer2::set(2000,fals);   //每2秒进入一次中断,中断函数是fals()
 MsTimer2::start();     //开启定时中断函数
}

void loop() {    //依据中断改变的a值来变换3号引脚的高低电平
  if(a==0){
   digitalWrite(3,0);
  }
  else{
    digitalWrite(3,1);
    }
  }

运行效果,发光二极管会闪烁5次,串口输出是单号的时候是亮的,双号的时候的熄灭的。
在这里插入图片描述

心得总结

说说在学习MsTimer2中遇到的问题吧,因为我设置的是每两秒进入一次中断,控制板的运行速度非常快,就不会存在中断函数还没执行完毕,下一次中断就又到来了的情况,两秒一次的中断时间足够执行很多行代码了。

起初我是想把loop函数中的程序放在中断函数fals中去执行的,但并不像我想像的那样运行——在中断中改变电平后会持续整个中断的时间,这个问题的原因就是控制板的运行速度太快了,很快就执行完中断回到loop函数,于是我又想在中断中添加个延时函数,但是这并不行,通过查找资料,我才知道在中断函数中,delay()和millis()函数将不起作用。然后我又让loop函数执行一个空循环,arduino的串口监视器有数据输出,但是3号引脚连接的二极管依然不亮。

要运用中断,最好的方式还是只有通过中断来改变变量的值(代码中a的值)来实现控制,灯闪烁的时间由进入中断的间隔来决定。

  • 16
    点赞
  • 60
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: mstimer2.h是一个用于Arduino开发板的库文件,用于控制定时器2的功能。该库文件的下载方式可以通过公开的开源代码资源库或者互联网上的编程论坛进行下载。 在下载mstimer2.h库文件之前,我们首先需要确定自己所使用的Arduino开发板型号。因为不同的Arduino开发板可能对应不同的库文件版本和固件。 在开始下载之前,我们需要打开Arduino IDE(集成开发环境),并连接到互联网。在IDE的"工具"选项卡中,选择"板子",然后选择自己所使用的Arduino开发板型号。 然后,在IDE的"工具"选项卡中,选择"库管理器"。在库管理器中,我们可以搜索到大量的库文件。在搜索框中输入"mstimer2.h",然后点击搜索。 搜索结果中可能会出现多个版本的mstimer2.h库文件。我们需要根据自己的需求选择一个合适的版本。通常,我们应该选择下载量较多、评价较好且更新时间较近的版本。 找到了合适的版本后,点击"安装"按钮进行下载和安装。安装完成后,我们就可以在我们的Arduino项目中使用mstimer2.h库文件了。 为了使用mstimer2.h库文件,我们可以在Arduino项目的代码中引入该库文件。引入库文件的方式是在代码开头添加一行代码:`#include <mstimer2.h>`。这样,我们就可以使用mstimer2.h库文件中提供的函数和功能来控制定时器2了。 总之,下载mstimer2.h库文件可以通过Arduino IDE的库管理器进行。只需要搜索、选择、安装合适的版本即可。下载完成后,在Arduino项目的代码中引入该库文件即可使用其中的功能。 ### 回答2: mstimer2.h 是一个头文件,用于实现定时器功能。使用这个头文件可以在程序中方便地使用定时器。 要下载 mstimer2.h 头文件,可以按照以下步骤进行操作: 1. 打开互联网浏览器,进入搜索引擎的主页(如百度、谷歌等)。 2. 在搜索引擎的搜索栏中输入 "mstimer2.h 下载",然后点击搜索按钮。 3. 在搜索结果中,找到可靠的网站或代码分享平台,其中提供了可以下载 mstimer2.h 的链接。 4. 点击合适的下载链接,进入文件下载页面。 5. 在文件下载页面中,选择下载 mstimer2.h 文件的选项(可能是直接点击“下载”按钮或选择一个保存位置等)。 6. 等待下载完成。根据网速和文件大小,下载时间可能会有所不同。 7. 下载完成后,定位到保存位置,找到下载的 mstimer2.h 文件。 现在,您已经成功下载了 mstimer2.h 头文件。您可以将其添加到您的项目中,并根据需要在代码中引用这个头文件,以开始使用定时器功能。请注意,在使用 mstimer2.h 之前,您可能还需要安装相应的开发环境和工具链,并进行一些配置工作,以确保头文件的正常使用。希望以上回答对您有所帮助! ### 回答3: mstimer2.h是一个头文件,可以由网上下载。这个头文件是为了在C或C++程序中方便地使用定时器功能而设计的。 通过包含这个头文件,我们可以在程序中使用定时器功能,从而实现一些需要按照一定时间间隔执行的操作。 使用mstimer2.h,我们可以创建一个计时器对象,并设置定时器的时间间隔。然后,我们可以通过定时器的回调函数来执行我们想要的操作。当定时器到达设定的时间间隔时,回调函数将会被自动调用。 mstimer2.h提供了几个常用的函数,例如初始化定时器、启动定时器、停止定时器等。我们可以根据程序的需要来使用这些函数。 需要注意的是,mstimer2.h可能需要搭配相应的库文件一起使用,以便保证定时器功能的正常运行。因此,在使用mstimer2.h之前,我们需要确保相关的库文件已经正确地安装并配置好。 总之,mstimer2.h是一个方便使用的定时器头文件,通过下载和引入这个头文件,我们可以在C或C++程序中轻松地使用定时器功能,实现按照一定时间间隔执行特定操作的需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值