MSP430FR2355定时器功能详解
1. 16位定时器溢出问题
1.1 能否用16位定时器溢出实现每秒触发
当系统时钟频率为1 MHz时,我们能否仅依靠16位定时器溢出本身来每秒触发一次呢?答案是否定的。一个16位定时器溢出会每65,536 μs触发一次。要精确达到1秒,要么改变时钟频率,要么使用多次溢出加上额外的计数。
1.2 定时器相关概念总结
定时器是独立于CPU运行的二进制计数器,具有以下特点:
- 能够在溢出或达到比较寄存器中的特定值时触发中断。
- 可以在事件发生时将当前计数值存储到捕获寄存器中。
- 计数器每增加1所需的时间是时钟周期(T = 1/f)。
- 经过的时间可以通过Δt = T∙N计算,其中N是计数值。
- 定时器从最大值回到0时发生溢出,溢出周期为Toverflow = T∙2ⁿ,n是计数器的位数。
2. MSP430FR2355的定时器比较功能
2.1 定时器比较原理
定时器比较是指当定时器的值等于捕获/比较寄存器(CCR)中的值时触发事件。每个CCR都可以产生中断,但每个定时器只有两个中断向量,多个源会共享每个向量地址。MSP430FR2355的TB0、TB1和TB2各有三个CCR,常被称为Timer_B3;TB3有七个CCR,常被称为Timer_B7。
2.2 定时器比较的配置
每个CCR由其自己的Timer B捕获/比较控制寄存器(TBxCCTLn)配置,其中“x”代表定时器(TB0、TB1、TB2和TB3),“n”代表CCR编号(TBxCCTL0、TB