打印

新手程序求教 = =

[复制链接]
642|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
定时器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,为什么要减一啊?高手能不能帮忙给讲解下= =,实在弄不懂·····

9140B8788532D13AA6507EAA71AE6470.png (80.74 KB )

9140B8788532D13AA6507EAA71AE6470.png

相关帖子

沙发
myqq12| | 2015-1-22 11:14 | 只看该作者
图中的中断产生是CCR0记到0的时候产生的

时序图.bmp (897.05 KB )

时序图.bmp

使用特权

评论回复
板凳
chijiemole|  楼主 | 2015-1-22 22:19 | 只看该作者
myqq12 发表于 2015-1-22 11:14
图中的中断产生是CCR0记到0的时候产生的

问题可能有些白痴多见谅= =,我想了还是有些疑问···输出模式里会产生中断么?
这个程序里也没有开中断的语句,我自己理解的就是当TAR中的计数值等于CCR0时,EQU0就置1了,从而导致PWM波高电平,所以从0记到512是513个时钟周期,随意要减一····但看过程序后投这个时序图我就混乱了···有三个问题:
1、为什么EQUx在n-1的时候就置位了?
2,、为什么EQU0不在变化为CCR0的地方置位反而跑到变化为0 的时候?
3,最后那个延迟是怎么回事······



5CD85A5E8ED82AC0E223CE2EB5F76B19.png (67.74 KB )

5CD85A5E8ED82AC0E223CE2EB5F76B19.png

使用特权

评论回复
地板
51xlf| | 2015-1-22 23:41 | 只看该作者
从0开始计数。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

0

粉丝