哪位大佬帮帮忙!!

2019-03-24 09:40发布

/时钟设置/
void init_MCLK()
{
   uchar i;
   WDTCTL = WDTPW + WDTHOLD;//关闭看门狗
   BCSCTL1&=~ XT2OFF;    //msp430f149 选择XT2频率
    do//
    {
      IFG1 &= ~OFIFG;          // 清除晶振失败标志
      for (i =0xFF;i>0;i--);   //等待8MHz晶体起振
    }
    while ((IFG1 & OFIFG));
    BCSCTL2 |= (SELM_2 + DIVM_0 + SELS+DIVS_0); // SMCK=MCLK=8MHz
   
}


/捕获方式设置/
void cap_init()
{
   P1SEL|=BIT2;                             // 设置 P1.2为第二功能引脚TA1
   P1DIR&=~BIT2;                             // 设置P1.2为输入引脚
   TACTL = TASSEL_2 + MC_2+ID_0+TAIE;   //ACLK辅助时钟,计数时钟为8MHz,计数方式为连续计数 ,TAIE允许定时器溢出标志   
   CCTL1 |= CAP+CM_1 + SCS + CCIS_0+ CCIE; //上升沿捕获,同步,CCI0A(P1.2信号源),捕获功能,中断允许
   TACCR1 = 0;

}

#pragma vector=TIMERA1_VECTOR//捕获中断子程序
__interrupt void TimerA1(void)
{
   switch(TAIV)
   {
     case 2://比较/捕获模块1中断
          period=TA_ov_num*65536+TACCR1-old_cap;
           old_cap=TACCR1;
           TA_ov_num=0;
            break;
      case 4:break;//比较/捕获模块2中断未用
      case 10:TA_ov_num++;
              break;
   }
}

麻烦帮看看我上面几个模块,我的设计是通过定时器A模块捕获P1.2输入的信号,达到测频率的目的,可是上面的程序,period一直为0,感觉像是没有捕获到信号,是不是我设置上的问题?????
0条回答

一周热门 更多>

相关问题

    相关文章