6月2日 周四 晴 MSP430 5438 定时器A TIMER A 新认识
6月2日 周四 晴 定时器A
现在的认识:
MSP430 5438 有3个时钟,分别是 TA0、TA1 和TB
了解了定时器A的用法:
定时器A可以分成几个独立的时间周期。这几个时钟周期共用一个计数器TA1R 或TA0R。
在头文件中可以查到:
TIMER0 含 TA0CCR0- TA0CCR4 五个
TIMER1 含 TA1CCR0- TA1CCR2 三个
TA0CCR0\TA1CCR0 用于控制计数周期,也就是每当TA0R\TA1R 计数到TA0CCR0\TA1CCR0所设定的数值后就会清零。
如:
TA0CCR0 =8000; // CCR0必须最大,因为一计数到CCR0即立刻清0,用于
控制周期 每8000单位时间就触发一次,并TA0R从新
计数
TA0CCR1=4000; //每4000单位时间就触发一次
TA0CCR2=1000; //每1000单位时间就触发一次
/
/ Timer0 A0 interrupt service routine
#pragma vector=TIMER0_A0_VECTOR
__interrupt void Timer_A0 (void)
{
UART3_SendStr_char("count to CCR0"); //计数到CCR0触发
}
// Timer_A3 Interrupt Vector (TAIV) handler
#pragma vector=TIMER0_A1_VECTOR
__interrupt void TIMER0_A1_ISR(void)
{
switch(__even_in_range(TA0IV,14))
{
case 0: break;
case 2: UART3_SendStr_char("count to CCR1"); //计数至CCR1触发
break;
case 4: UART3_SendStr_char("count to CCR2"); //计数至CCR2触发
break;
case 6: break; // CCR3 not used
case 8: break; // CCR4 not used
case 10: break; // CCR5 not used
case 12: break; // Reserved not used
case 14: break; // 溢出触发
default: break;
}
}