初学MSP430F5529定时器

之前一直感觉定时器有点难,但其实后来发现更多的是中断那块没太懂,中断以后会说的。先简单看下定时器吧。
一、基本
1.在user’s guide上看到的5529其实有3种定时器,A\B\D,这三种好像确实有些区别的,但是目前就只看A感觉就够了。
2.Timer_A是具有四种操作模式的16位定时器,7个比较器/捕获器
3.能够输出PWM波,具有8中PWM波形,但是要注意的是,这种输出只能在外围功能模块里使用,即之前说过的SEL。比如P1.2能够输出Timer_A0的比较器/捕获器1的波形,而在其他管脚上,就没有办法直接输出这种PWM波形。所以如果这个管脚被占用的话,或是不想用这个来整,其实用中断做PWM波也挺好用的。
4.能实现串行通信(其实我不太懂这块说的什么意思,也好像没用到,之后见到再补上吧)
5.捕获模式和比较模式的区别?
捕获模式是捕获上升沿和下降沿触发中断,而比较器是将一个值储存到CCR寄存器里面,将计数器的值和CCR相比较从触发中断。
二、寄存器
话不多说,先看寄存器吧
1、TAxCTL
(1)TASSEL:时钟选择,可以选择TAxCLK,ACLK,SMCLK,INCLK
(2)ID:分频系数
(3)MC:模式选择
一共有四种模式,UP模式:一直加到CCR0,再到0;
Continuous莫斯:一直加到FFFF,再到0
UP/DOWN模式,加到CCR0,再减到0;
Stop模式?
(4)TACLR:清零,需要注意的是TACLR会将TAxR寄存器,分频系数都清零
(5)TAIE:中断使能
(6)TAIFG:中断标志位
2、TAxR
计数寄存器
3、TAxCCTLn
CAP:0比较模式1捕获模式
OUTMOD:
有多种输出模式,可以输出多种类型的PWM波,当然这个是从对应的管脚中输出。 这个可以user’s guide里面看。
CCIE:中断使能
COV:比较溢出?不是很懂。
CCIFG:中断标志位
其他的感觉母亲用不太到。多数会在PUC的时候设置好
4、TAxCCRn
CCR寄存器。以u模式为例,就是当计数到这个值的时候,会触发中断。CCR0优先级最高。有单独的一个中断向量。CCR1以后的都共用一个中断向量。同时在UP模式中,计数到CCR0会 从0开始。
5、TAxIV
中断源标志寄存器。可以认为CCR1和CCR6的中断标志存在这个里面,在写中断函数的时候,这几个CCR需要用TAXIV判断是哪一个中断了。
找了一个例程
#pragma vector=TIMER1_A1_VECTOR
__interrupt void TIMER1_A1_ISR(void)
{
switch(__even_in_range(TA1IV,14))
{
case 0: break; // No interrupt
case 2: break; // CCR1 not used
case 4: break; // CCR2 not used
case 6: break; // reserved
case 8: break; // reserved
case 10: break; // reserved
case 12: break; // reserved
case 14: P1OUT ^= 0x01; // overflow
break;
default: break;
}
}
这一段就是判断TA1IV中的值。然后在相应的值里面做操作。如果不用这个的话是没有办法做出来中断的!
6、TAxEX0
emmm好像没有用到过
三、基本步骤
1、设置时钟
2、TAxCTL选择模式、时钟等等
3、TAxCCRn设置CCR
4、设置中断
5、中断函数

emmmm……太懒了懒得找例程解释一下了。不过无非就是配置下寄存器嘛。

猜你喜欢

转载自blog.csdn.net/PolypolyA/article/details/100737456