定时器A输出单元实验:ACLK=TACLK+LFXTI=32768Hz,利用TimerA输出周期为 512/32768=15.625ms,占空比分别为75%和25%的PWM矩形波
#include<msp430x14x.h>
void main(void)
{
WDTCTL = WDTPW + WDTHOLD;
TACTL = TASSEL1 + TACLR;
CCTL0=0X00;
CCTL1=0X00;
CCR0=512-1;
CCTL1=OUTMOD_7;
CCR1=384;
CCTL2=OUTMOD_7;
CCR2=128;
P1DIR |= 0X04;
P1SEL |=0X04;
P2DIR |=0X01;
P2SEL |=0X01;
TACTL |= MC0;
for(; ;)
{
_BIS_SR(LPM_bits);
_NOP();
}
}
初学者看的晕乎乎的,别的还能将就明白,设置PWM周期的语句CCR0=512-1,为什么要减一啊?高手能不能帮忙给讲解下= =,实在弄不懂·····
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
问题可能有些白痴多见谅= =,我想了还是有些疑问···输出模式里会产生中断么?
这个程序里也没有开中断的语句,我自己理解的就是当TAR中的计数值等于CCR0时,EQU0就置1了,从而导致PWM波高电平,所以从0记到512是513个时钟周期,随意要减一····但看过程序后投这个时序图我就混乱了···有三个问题:
1、为什么EQUx在n-1的时候就置位了?
2,、为什么EQU0不在变化为CCR0的地方置位反而跑到变化为0 的时候?
3,最后那个延迟是怎么回事······
一周热门 更多>