毕业论文

当前位置: 毕业论文 > 范文 >

定时器中断是干嘛的?(3)

时间:2022-03-06 14:05来源:优尔论文
参数: interrupt,中断编号,注意,这里的中断编号并不是引脚编号。 function,中断函数名,当中断被触发后即会运行此函数名称所代表的中断函数。 mode,

        参数:

        interrupt,中断编号,注意,这里的中断编号并不是引脚编号。

        function,中断函数名,当中断被触发后即会运行此函数名称所代表的中断函数。

        mode,中断模式。

attachInterrupt(0,counter,RISING);         

如果使用的是 Arduino UNO 或者 MEGA 控制器,则该语句即会开启2号引脚(中断编号0)上的外部中断功能,并指定上升沿时触发该中断。当2号引脚上的电平由低变高后,该中断会被触发,而 Arduino 即会运行 counter()函数中的语句。

        如果不需要使用外部中断了,则可以使用中断分离函数 detachInterrupt() 来关闭中断功能。

在使用 attachInterrupt 函数时要注意以下几点:

在中断函数中 delay 函数不能使用。

使用 millis 函数始终返回进入中断前的值。

读取串口数据的话,可能会丢失。

中断函数中使用的变量需要定义为 volatile 型。

attachInterrupt 函数的函数原型可在文件 WInterrupts。c 中找到,如下所示:

(2)detachInterrupt( interrupt)

        功能:禁用外部中断。

        参数:

        interrupt,需要禁用的中断编号。

(3)interrupts()和nolnterrupts()

        interrupts 和 noInterrupts 函数在 Arduino 中负责打开和关闭总中断,函数无返回值,无参数,可以在文件 wiring。h 中查看函数原型,如下:

#define interrupts() sei()

#define noInterrupts() cli()

3 定时器中断

3。1 定时器的作用

        定时器对于单片机来说就类似我们现实生活中的时钟,记录很多和时间相关的事件。在我们平时经常使用的 delay() millis() ,micros() ,delayMicroseconds() ,PWM 波生成的 analogWrite() 和 tone() 函数都是通过定时器实现的,不过这些都被 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位的寄存器。

[tr]Arduino 型号 参数Timer0 Timer1 Timer2 Timer3 Timer4 Timer5 [/tr]

         UNO              位数                8bit                16bit                8bit                —                —                —   

          对应引脚                5,6                9,10              3,11      定时器中断是干嘛的?(3):http://www.youerw.com/fanwen/lunwen_90686.html

------分隔线----------------------------
推荐内容