[求助] 430g2为什么仿真时和脱机时现象不一样

QQstone   2014-4-8 15:55 楼主
同学送我块emulation msp430g2 launchpad
我想了解下定时器中断的原理 是这样写的
void main(void)
{
        WDTCTL=WDTPW+WDTHOLD;
        P1DIR|=BIT0+BIT6;//P1.0 led
        TACTL|=TASSEL_1+ID_2+MC_1;//32.768kHz,0分频,增计数
        TACCR0=16384;
        TACCTL0 = CCIE;//使能CCIFG
        _EINT();//开总中断
        while(1)
        {
                P1DIR^=BIT6;
                _delay_cycles(500000);
        }
}
#pragma vector=TIMER0_A0_VECTOR
__interrupt void TimerA(void)
                {
        P1DIR^=BIT0;
}
在CCS中debug 看到两个灯以不同频率闪烁,以为是写对了
关掉调试后却只有P1.6处的led闪烁

回复评论 (5)

默默关注   表示看不懂~~~~~~~
点赞  2014-4-8 15:59
  P1DIR^=BIT6;   改变输出口方向干嘛呢?是不是 P1OUT^=BIT6 和 P1OUT^=BIT0  ???另外你的1.6处的灯怎么亮的表示奇怪....
人有的时候真是奇怪,选择了会后悔,放弃了会遗憾,完美只能是一种理想,不是一种存在。
点赞  2014-4-8 16:33
引用: huixianfxt 发表于 2014-4-8 16:33
P1DIR^=BIT6;   改变输出口方向干嘛呢?是不是 P1OUT^=BIT6 和 P1OUT^=BIT0  ???另外你的1.6处的灯怎 ...

你是对的 关于输出应该是那样写的
点赞  2014-4-8 17:51
我继续换参数来测试 发现用“辅助主时钟”(TASSEL_2)不会出现上述情况
至于为什么ACLK不行
书上提到其参与在低功耗状态下唤醒CPU,不知是不是这方面的原因
期待大牛给解释
点赞  2014-4-8 18:29
        while(1)
        {
                P1DIR^=BIT6;//P1OUT
                _delay_cycles(500000);
        }
}
#pragma vector=TIMER0_A0_VECTOR
__interrupt void TimerA(void)
                {
        P1DIR^=BIT0;//P1OUT
}
点赞  2014-4-14 12:36
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复