我用ta做pwm输出,设置如下:
void init_timer_a(void)
{
TACTL = TASSEL1 +TACLR + MC_1; //选择SMCLK为时钟,定时器清空,选择up模式,中断允许
TACCTL0 = CCIE; //将CCR0设为比较模式,中断允许+ TAIE
TACCR0 = 12000; //PWM的周期为1/12000
TACCTL1 = OUTMOD_7;//将CCRx设为比较模式,中断禁止,选择输出模式7,当TAR计数到0时,CCR1重载数据
TACCR1 = 1000; //将某值加载到CCR1
}
当TACCTL0=CCIE无效时,整个程序运行正常,有效时,程序会在此处跳出,中断运行。
_debugbreak:
00A61c 3041
_exit:
请问时怎么回事啊?
我还使用了bt、 ad、 p1口。
用模式输出时候不需要中断的,删除就可以了。
改为
void init_timer_a(void)
{
TACTL = TASSEL1 +TACLR; //选择SMCLK为时钟,定时器清空
TACCR0 = 12000; //PWM的周期为1/12000
TACCTL1 = OUTMOD_7;//将CCRx设为比较模式,中断禁止,选择输出模式7,当TAR计数到0时,CCR1重载数据
TACCR1 = 1000; //将某值加载到CCR1
TACTL=MC_1;
}
【灌水】
这样不行的,我要在中断中改变TACCR1的值,TACCR1的值是根据SD16中转换的值的来的,如果不中断的话我在哪里改变TACCR1中的值呢?
中断程序对否?中断入口的TA,是写的TA0?TA1?
这个问题解决了,谢谢各位.还要问一个问题,我用PWM输出时,两路输出中的第二路有输出,第一路则没有输出,即P1.2无输出,P1.3有输出,我用TI的测试程序测试时两路都有输出,这是什么原因呢?TI的测试程序中只用了TA,我的程序中使用了,TA,BT,SD16,P1口和液晶驱动。