-
楼主,为什么P1.2的设置还要扯上BIT0|BIT1|BIT2呢,所以把以下三句:
P1DIR |= (BIT0|BIT1|BIT2); // P1.2 output
P1SEL |= BIT2;
P1SEL |= (BIT0|BIT1|BIT2); // P1.2 TA1 otions
改成了
P1DIR |= BIT2; // P1.2 output
P1SEL |= BIT2;
得不出效果。让后又改TACTL = MC_1; // up mode
为TACTL =TASSEL_1 + MC_1; // up mode
竟然可以了。想不通,楼主你干嘛要那样设置P1.2,还有我改了时钟源后怎么又可以了?
补充,我的是msp430g2553.我想应该都一样的吧。
-
谢了,就是这个问题。:kiss: 我又精简了一下程序
#include
void main()
{
WDTCTL = WDT_MDLY_32; //WDT is clocked by SMCLK (assumed 1MHz),
BCSCTL2 |= DIVS_3; //子系统时钟8分频。
P1DIR |= BIT0;
IE1 |= WDTIE;
_BIS_SR(LPM1_bits + GIE); //不能进入2或3,因为2或3模式子系统时钟是关闭的。
}
#pragma vector=WDT_VECTOR
__interrupt void watchdog_timer ()
{
P1OUT ^= BIT0;
}
-
大神们。。。:Sad:
-
首先感谢楼主的分享。
有几个问题想请教楼主。
应用二中,使用比较中断,就是当计数器的值(TAR中的值)等于设定的CCR0值时产生中断。对吗?
定时器选择的时钟源为SMCLK,这个时钟源同时也是它的计数源吗?(就是说SMCLK既是定时器A的电源,同时也是它要计数的的来源,要是这样的话,电源和计数源可以分开吗,比如选SMCLK为时钟源,外部脉冲为计数源)
CCTLx中的CCISx是选择比较器/捕获的输入信号,其中CCIxA,CCIxB指的是外部信号。默认是CCIxA,您的程序中是默认的,就是说比较器的计数源是外部的,但实际上程序里没有外部输入。(可能是我理解错了)
以上是个人的理解,看了网上的资料,和的有差别,请楼主指点一二。
:victory:
-
太感谢楼主了:)
-
太感谢楼主了,这个纠结了好久啊:Cry: ,强烈支持楼主!!!!!!!!
-
楼主,我也纠结这个问题很久了。。。求正确的程序!!!!!