定时器中断(自动定时开关)
今天我就来说说单片机定时器中断,这是难点中的难点。边肖第一次放弃自学单片机是中断,第二次是定时器中断。
首先你要知道什么是中断,可以在前一章读到,或者叫“中断”——嵌入的灵魂直接去。
了解了中断,让我们来看看这个特殊的中断计时器中断。
它有什么特别之处?
1.它的中断请求是“内部”的,我们感觉不到,这也是很多人困惑的地方。
2.它的机制通常是多次自动循环,有时候你会因此崩溃(作为小白自学,它真的崩溃了)
话虽如此,我们应该如何学习?说实话,我不建议小白从51单片机开始,直接去Arduino,然后慢慢了解底层是最好的选择,甚至不知道(真的,没必要)。
Arduino写了很多关于定时器中断的库,我们可以直接使用。这里我将介绍两个:
灵活定时器2.h和定时器2.h
这两个库基本相同,我们可以归入一类。
void set(unsigned long ms, void (*f)()) --这个函数设置定时中断的时间间隔和调用的中断服务程序。 --ms表示的是定时时间的间隔长度,单位是ms, --void(*f)()表示被调用中断服务程序,只写函数名字就可以了。void start()--开启定时中断void stop()--关闭定时中断注:以上三项功能均在MsTimer2范围内执行。使用它们时,应增加范围,如mstimer 2::start();您可以通过以下示例了解更多关于定时中断的信息。
//定时器库的 头文件#include //中断处理函数,改变灯的状态void flash(){ static boolean output = HIGH; digitalWrite(13, output); output = !output;}void setup(){ pinMode(13, OUTPUT); // 中断设置函数,每 500ms 进入一次中断 MsTimer2::set(500, flash); //开始计时 MsTimer2::start();} void loop(){}相对来说,Arduino降低了很多难度,适合速度学习和初学者。当然,要想在这个领域有所提升,就需要学好底层驱动,底层驱动就是噩梦。。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 ZLME@xxxxxxxx@hotmail.com 举报,一经查实,立刻删除。