求大神|我关闭不了定时器

2019-03-24 08:53发布

#include<msp430f149.h>
#define uint unsigned int
#define uchar unsigned char
void PWM_init(uint zkb1,uint zkb2);
void init_clk();
uint count_PWM = 0;
uchar flag = 0;

void main()
{
  WDTCTL = WDTPW + WDTHOLD;
  init_clk();
  PWM_init(200,100);

  P1DIR |= BIT4;
  P1OUT |= BIT4;

  TACCTL0 |= CCIE;
  _EINT();
  while(1)
  {
    if(flag == 1)
     {
      P2OUT  |=  BIT2;
      P2OUT  |=  BIT3;
      flag=0;
      TACCTL0 &= ~CCIE;
      TACTL |= MC_0 ;
      P1OUT |= BIT3;
     }
  }

}
void init_clk()
{
  uint i;
  BCSCTL1 &= ~XT2OFF;         //打开XT振荡器
  BCSCTL2 |= SELM_2+SELS;     
  do
  {
    IFG1 &= ~OFIFG;               //Reset OFIFG
    for(i = 0xff; i > 0; i--);
  }
  while((IFG1 & OFIFG));

}
void PWM_init(uint zkb1,uint zkb2)
{
  P1SEL |= BIT2 + BIT3;
  P1DIR |= BIT2 +BIT3;
  CCR0 = 1200;
  CCTL1 = OUTMOD_7;                         // CCR1 reset/set
  CCR1 = zkb1;                               // CCR1 PWM duty cycle
  CCTL2 = OUTMOD_7;                         // CCR2 reset/set
  CCR2 = zkb2;
  TACTL |= TASSEL_2 + ID_0+ MC_1 ;

  P2DIR |= BIT2 +BIT3;
}


#pragma vector = TIMERA0_VECTOR
__interrupt void TIMER0 (void)
{
count_PWM = count_PWM + 1;
  P2OUT  &= ~ BIT3;
  P2OUT  &= ~ BIT2;
if(count_PWM >= 8000)
{
   count_PWM = 0;
   flag=1;
}

}


此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
huaiqiao
1楼-- · 2019-03-24 16:04
我公办的电脑上,没有f149的手册。不过我可以告诉你解决的办法:
1、打开user's guide即就是我们说的用户手册,然后在debug状态下,在iar中(我想你用的是iar),查看定时器相关寄存器的值是不是和你写入的值一致。如果不一致请仔细检查程序;
2、ti好像有相关例程,参考人家的例程,不过前提是你要看得懂人家的程序才行哦。
ab1046492147
2楼-- · 2019-03-24 20:06
 精彩回答 2  元偷偷看……
ab1046492147
3楼-- · 2019-03-25 01:27
解决了,关闭定时器操作TACTL |= MC_0 +TACLR

一周热门 更多>

相关问题

    相关文章