msp430g2553一个很奇怪的定时器问题!

2019-07-15 16:47发布

刚刚开始学习msp430g2553,板子是launchpad,今天尝试着写了一个定时器的程序,程序的功能是利
  1. timer_A定时一秒使LED灯闪烁,程序如下#include <msp430g2553.h>
  2. void main(void)
  3. {
  4.   WDTCTL=WDTPW+WDTHOLD;                   //关闭看门狗
  5.   BCSCTL1|=DIVA_0;
  6.   BCSCTL3|=LFXT1S_0;
  7.   P1DIR|=BIT0;                           //设置P1.0为输出管脚。
  8.   P1OUT&=~BIT0;
  9.   TACTL|=TASSEL_1+ID_0+MC_1;          //选择ACLK为时钟源,0分频,计数器清零,增计数器模式。
  10.   TACTL&=~TAIFG;                           //清中断标志位
  11.   TACCTL0|=CCIE;
  12.   TACCR0=32768-1;  //定时器计数寄存器初值,定时时间为1秒,初值是32767而不是32768切记
  13.   //TACTL|=TAIE;                          //运行TA溢出中断
  14.   _EINT();                               //允许总中断
  15.   while(1);

  16. }
  17. #pragma vector=TIMER0_A0_VECTOR
  18.    __interrupt void TA_ISR(void)
  19.    {
  20.      P1OUT^=BIT0;

  21.    }
复制代码这个程序工作是正常的,但是在调试过程中发现了几个问题,问题一:如果不加 TACCTL0|=CCIE;只有TACTL|=TAIE;  则进不去中断,难道定时器的溢出不能产生中断吗?问题二:如果TACCTL0|=CCIE;TACTL|=TAIE; 同时存在则LED灯很暗,不知道什么原因。希望各位多多指教,解答小弟心中的疑惑。

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。