定时器不计数,有高手可以帮我看下程序嘛

2019-03-24 14:24发布

void Init_Port(void){  WDTCTL=WDTPW+WDTHOLD;    //关闭看门狗  P1DIR=0;                 //P1端口,0,1,2,3输入,4,5,6,7输出  P1SEL=0;                 //P1端口管脚设置为一般I/O口  P1DIR |=BIT4+BIT5+BIT6+BIT7;  P1OUT=0;  //------------------------------------------------------------  //                         时钟频率设置  //------------------------------------------------------------  BCSCTL1 = CALBC1_8MHZ;           //CPU工作在8MHz  BCSCTL1 |=DIVA_3;                //ACLK进行8分频  DCOCTL = CALDCO_8MHZ;            //    TACTL|=TASSEL_1+TACLR;    //ACKL为时钟源(32.768K)  TACCR0=24575;             //定时6s  TACTL |=MC_1;             //增计数  TACCTL0 |= CCIE;  _EINT();  //------------------------------------------------------------  //                         数码管  //------------------------------------------------------------  P2DIR=0xff;    //P2口为输出方式  P2SEL = 0;     //p2口所有管脚设置为一般I/0口  P2OUT=0;
  //------------------------------------------------------------  //                         键盘中断响应设置  //------------------------------------------------------------  P1IE=0;        //中断寄存器清零  P1IES=0;    P1IE |=BIT0+BIT1+BIT2+BIT3;   //打开管脚中断           P1IES |=BIT0+BIT1+BIT2+BIT3;  //下降沿中断  P1IFG=0; 
  return;}以上是初始化程序,定时器的程序没有写错吧?为什么运行后TAR始终是0呢?(晶振工作正常,同一开发板在其他程序下可以用ACLK完成6S定时,唯独这段代码不对)小白跪求指点 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
wstt
1楼-- · 2019-03-24 17:07
< 这是哪个型号呢?
wstt
2楼-- · 2019-03-24 18:55
< :TI_MSP430_内容页_SA7 --> 注意一定要写中断服务函数
wstt
3楼-- · 2019-03-24 22:05
 精彩回答 2  元偷偷看……
Joyin
4楼-- · 2019-03-24 22:24
把这一句TACTL|=TASSEL_1+TACLR; 写在定时器配置最后

按这个顺序
  TACCR0=24575;             //定时6s
  TACTL |=MC_1;             //增计数
TACCTL0 |= CCIE;
TACTL|=TASSEL_1+TACLR;    //ACKL为时钟源(32.768K)
kimi_lee
5楼-- · 2019-03-25 02:58
谢谢大家哈,我发现是把P2口全设置为输出出错了,好像晶振的端口也被认为是P2口的最高脚

一周热门 更多>

相关问题

    相关文章