Arduino定时中断

对于Arduino新手来说,刚开始使用实例的Blink亮灯代码,其实就开始进入了定时器的世界,因为其中的delay()函数就是通过定时定时器实现的,不过这些都被Arduino的封装库隐藏起来了,为了让使用者更快更便捷地开发项目,除了delay()函数,millis() ,micros() ,delayMicroseconds() ,PWM波生成的analogWrite()和tone() ,同时Servo库里面也使用了定时器。

接下来就进入Arduino定时器的世界,我同为新手,整理一下我的一些认识。

定时器的作用

定时器对于单片机来说就类似我们现实生活中的时钟,记录很多和时间相关的事件。

Arduino中的定时器

我主要使用的Arduino单片机为UNO,NANO和MEGA 2560。

UNO和NANO都使用的是ATmega328芯片,这款芯片有3个定时器,Timer0,Timer1,
Timer2,其中Timer0和Timer2都是8位寄存器(256),Timer1是16位寄存器(65536),意味着更高的分辨率。

mege2560使用的是ATmege2560芯片,这款芯片有6个定时器,在328的基础上,增加了Timer3,Timer4,Timer5。这三个定时器都是16位的寄存器。

用表格整理如下

定时器 位数 封装函数 mega2560引脚对应
Timer0 8bit delay() , millis() 和 micros()等 4,13
Timer1 16bit UNO的servo库 11,12
Timer2 8bit tone()等 9,10
Timer3 16bit 2,3,5
Timer4 16bit 6,7,8
Timer5 16bit mega2560的servo库 46,45,44

具体使用

可以到网上下载TimerOne, TimerThree等库文件,TimerOne.h就对应为timer1定时器。

TimerOne.h的下载链接:
https://www.arduinolibraries.info/libraries/timer-one

附上代码

#include<TimerOne.h>
#define state digitalRead(13)  //读出引脚13的状态
int i=1; //记录次数
void setup() 
{
   
	Timer1.initialize(100000);  //设置中断速度 1s
	Timer1.attachInterrupt(tongxun);  //关联中断函数
	Serial.begin(115200); //设置串口波特率
	
	interrupts(); //开启中断
}

void tongxun(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值