注意:学习和写作过程中,部分资料搜集于互联网,如有侵权请联系删除。
前言:学习定时器的功能。
1.定时器介绍
定时器也是一种中断,属于软件中断。 它就像一个时钟,可以测量事件的时间间隔。
比如早晨闹钟可以准时在7点半叫你,醒不醒就是你自己的事了。
2.Arduino UNO R3的定时器
Arduino Uno 采用的是 16Mhz 的晶振。单次计数需要 1/16000000 秒或 62 纳秒。这意味着 Arduino 62 纳秒从一条指令移动到另一条指令。当然时钟频率越高,处理速度就越快。
每个定时器都有一个计数器,在计时器的每个时钟周期递增。因此,你需要定的时间,单片机自己通过数数来实现。
在 Arduino Uno 中有三个定时器,他们分别被使用到以下官方函数和库中:
- Timer0(8 位定时器)
- delay()
- delayMicroseconds()
- millis()
- micros()
- Timer1(16 位定时器)
- 伺服电机库 Servo.h
- Timer2(8 位定时器)
- tone()函数
各个定时器与引脚功能、软件库功能对应关系:
Timer0:D5/D6的PWM输出、delay()、millis()、delayMicroseconds()。
Timer1:D9/D10的PWM输出、舵机库Servo.h、TimerOne库。
Timer2:D3/D11的PWM输出、无源蜂鸣器的tone()、 MsTimer2库(三方库)。
3.今日知识点讲解
MsTimer2库(三方库)的使用:
#include <MsTimer2.h> //调用三方库
MsTimer2::set(time, Task_Time); //初始化库函数,在setup函数里。
参数一:time,是指定时多久,单位毫秒。
参数二:定时的时间到了需要去执行的任务函数。
MsTimer2::start(); //开启定时器,无参数。在setup函数里三方库的初始化后面。
4.应用及电路连接图
实验内容: LED 闪烁运行。
电路接线图:
5.实现代码
#include <MsTimer2.h> //调用三方库定时器库
#define led 13
boolean LEDStatus;
void Task_Time() //时间到了的执行函数
{
LEDStatus = !LEDStatus; //灯状态翻转
if (LEDStatus)digitalWrite(led, HIGH);
else digitalWrite(led, LOW);
}
void setup()
{
pinMode(led, OUTPUT); //13引脚设置为输出
MsTimer2::set(1000, Task_Time); //初始化定时器库,设置一秒执行一次Task_Time
MsTimer2::start(); //开启定时器
}
void loop()
{
//不用写内容,自动调用。
}
5.仿真视频
定时器仿真视频
上一篇:Arduino UNO R3自学笔记15 之 Arduino如何驱动数码管?
下一篇:Arduino UNO R3自学笔记17 之 Arduino为啥要用中断?