全部学习汇总: https://github.com/GreyZhang/arduino_uno
其实,这是通用的Arduino例程,只是我正好用的UNO这个版本进行的调试以及分析。暂且,这部分的学习笔记归档放在这个分类中。
其实,Arduino的很多例程本身的复杂度都是很低的,甚至说里面的信息量是不大的。但是,但凡有一点与众不同的地方都值得我们去学习小结一下。
在Arduino的例程当中,有一个不需要delay的LED闪烁例程。其实,这个例程是巧妙使用了计时器来实现了一个间隔的判断。
开篇的注释其实也说的明白,这个不同于使用delay的最大一点是不会引发其他节点的运行阻塞。也是这个因素,其实这个是我在其他的软件设计的时候应该考虑的主要的实现方式。
因为刚好做了一个其他的测试,我自己使用的管脚切换成了数字管脚3。简单的编译烧录之后,也已经看到了LED的闪烁效果。
不同于delay的最大点,这里触发LED闪烁的因素是一个时间差得判断。而这个判断,如果在这个loop循环中的代码执行时间短的时候,应该精确度会更高一点。至于实现的关键自然是一个时间获取函数,millis。从这里的含义以及实际的运行情况,这个应该可以获取一个ms的时间信息。关于这个计时器的设计,其实我还是想看看的。我印象中这个MCU中应该是没有32bit的定时器,正好通过这个基础功能的实现来看看这个32bit的定时器是如何封装出来的。
至于这个定时器可以计时的数值是32bit,可以从这个基础的文档中找到说明。