拿MSP430F149来说,如果我想用TA的CCR2做捕获,由DATASHEET上可知,捕获输入引脚为P1.3,所以程序设计如下:
void TACCR2_Init(void)
{
P1SEL |= BIT3;
P1DIR &= ~BIT3; //TACCR2捕获引脚P1.3
TACCTL2 = CCIE + CM_1+ SCS + CAP; //对应CCR2使能,上升沿同步捕获
TACTL |= TASSEL_1 + MC_2 + TACLR + TAIE;//时钟源选择ACLK,连续数模式,清计数器
}
中断服务程序为:
#pragma vector = TIMERA1_VECTOR
__interrupt void TIMERA1_ISR(void)
{
switch(TAIV) //TA中断向量查询
{
case 4: //TCCR2捕获中断
if (TACCTL2 & CM0) //上升沿捕获
{
}
if (TACCTL2 & CM1) //下降沿捕获
{
}
break;
case 10: //是溢出中断
break;
default:
break;
}
} |