arduino定时器函数如何使用_【求教】arduino支持定时器吗?

  • Post author:
  • Post category:其他


该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

查了一晚上资料,总算大概了解了arduino定时器的大概用法了,总结一下(请指正):

1. mega2560好像有6个定时器(但应该都是统一的16MHz晶振作为时钟)。其中,第0号,默认用于delay();第1~5号,默认用于PWM。(上面那位兄弟提醒delaymicroseconds不使用定时器,谢谢)。开发者可以根据自己的需要,调整或改变定时器的默认用法,但可能会造成一些影响。比如:改变了定时器0,delay()可能就不能像预期的那样延时了。

2. 所有的定时器,都是通过相应的一组寄存器来控制的。包括:

TCCRx:Timer/Counter x – Control Register

TCNTx:Timer Counter x – Counter

OCRx:Timer/Counter x – Output Compare Register

ICRx:Timer/Counter x – Input Capture Register

其中x为0~5的数字。第0号是8位定时器,第1~5号是16位定时器。所以它们的寄存器数量也不同,通过后缀来区分。比如:T/C0只有OCR0A、OCR0B两个8-bit输出比较寄存器;而T/C1有OCR1AH、OCR1AL、OCR1BH、OCR1BL、OCR1CH、OCR1CL,共6个8-bit输出比较进村器。

3. 定时器设置步骤:

a. 通过SREG寄存器,暂时屏蔽中断机制,避免干扰。

b. 通过TCCRx寄存器,设置定时器的时间源分频模式、工作模式、中断



版权声明:本文为weixin_39708737原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。