内部时间中断问题-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11071|回复: 4

[已解决] 内部时间中断问题

[复制链接]
发表于 2013-5-12 15:52 | 显示全部楼层 |阅读模式
如何利用内部时间中断如何实现多次不同间隔时间的中断啊?
[mw_shl_code=c,true]// led灯接UNO的13管脚
#include <MsTimer2.h> //定时器库的 头文件
int i=500; //定义初始值,500MS执行中断
int flag=1; //记录中断的次数

void flash() //中断处理函数,13#LED灯亮500MS后灭
{
digitalWrite(13, HIGH);
delay(500); //这里用delay函数是否影响其他程序
digitalWrite(13, LOW);
switch (flag) {
case 1: //第一次中断后设置下一次中断的时间
{i=i+1000; //下次中断的时间设置1.5秒
flag+=1;
break;}
case 2 : //第二次中断后设置下一次中断的时间
{ i=i+2500; //下次中断的时间设置4秒
flag+=1;
break;}
case 3: //第三次中断后设置下一次中断的时间
{ i=i+ 4500; //下次中断的时间设置8.5秒
flag+=1;
break;}
}
}
void setup()
{
pinMode(13, OUTPUT);
MsTimer2::set(i, flash); // 中断设置函数,
MsTimer2::start(); //开始计时
}

void loop()
{

}[/mw_shl_code]
发表于 2013-7-11 16:23 | 显示全部楼层
使用中断时注意:
中断函数是没有返回值的;
在中断函数中delay函数不能使用;
读取串口数据的话,可能会丢失;
中断函数中使用的变量需要定义为volatile型。
发表于 2013-5-18 21:53 | 显示全部楼层
是不是用的mega2560的板子?
发表于 2013-6-20 09:30 | 显示全部楼层
好像没有完全看懂,其中delay中断使用??
发表于 2013-12-16 00:20 | 显示全部楼层
你这是一个定时器程序,MsTimer2::set(i, flash); ,在主程序中改变 i 值,即可改变每次进入void flash() 的时间,但不能小于void flash() 函数的运行时间。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-12-4 03:52 , Processed in 0.074145 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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