G2553 TA0能输出两路PWM波形么??

2019-03-24 11:52发布

用的是MSP430G2553  管脚上没有TA0.2,不像TA1那样。但是貌似论坛上有人说每路TA都能产生两路PWM波,好奇之余试试···结果没成功。以下是程序:
#include <msp430g2553.h>

void main( void )
{
  // Stop watchdog timer to prevent time out reset
  WDTCTL = WDTPW + WDTHOLD;

  //时钟设置为1MHz mclk=smclk=dco
BCSCTL1 = CALBC1_1MHZ;
DCOCTL = CALDCO_1MHZ;
BCSCTL3 |= LFXT1S_2;
BCSCTL2 |=SELM_1 + DIVM_0;

  //初始化TA0为两通道pwm,smclk
  P1DIR |= (BIT1+BIT2);
  P1SEL |= (BIT1+BIT2);
  TA0CCR2 = 2000;
  TA0CCTL0 = OUTMOD_7;
  TA0CCTL1 = OUTMOD_7;
  TA0CCR0 = 200;
  TA0CCR1 = 1000;
  TA0CTL = TASSEL_2 + MC_1;

_BIS_SR(LPM0_bits);    //进入LPM0低功耗模式
}

额··没出波形···是不是PWM波周期设置只认CCR0??对哦 没看到哪里可以设置说周期可以设置为CCR1或者CCR2·····那怎么过TA0输出两路PWM呢??膜拜高手解答·······阿弥陀佛···· 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
wzw134
1楼-- · 2019-03-24 15:17
G2553只能产生一路PWM波  这句是错的,应该说G2553通过TA0只能产生一路PWM波,但是通过TA1可以产生两路,当然,用TA0和TA1一共同时可以产生三路PWM波····下面这个程序是一个用TA1产生两路PWM的简单例子,由P2.1和P2.4分别输出:
void main( void )
{
  // Stop watchdog timer to prevent time out reset
  WDTCTL = WDTPW + WDTHOLD;

//时钟设置为1MHz mclk=smclk=dco
BCSCTL1 = CALBC1_1MHZ;
DCOCTL = CALDCO_1MHZ;
BCSCTL3 |= LFXT1S_2;
BCSCTL2 |=SELM_1 + DIVM_0;

  //初始化TA0为两通道pwm,smclk,由P2.1和P2.4输出
  P2DIR |= (BIT1+BIT4);
  P2SEL |= (BIT1+BIT4);
  TA1CCR0 = 2000;  //周期为2000个时钟周期
  TA1CCTL1 = OUTMOD_7;
  TA1CCTL2 = OUTMOD_7;
  TA1CCR1 = 500;   //占空比500/2000=0.25
  TA1CCR2 = 1000; //占空比1000/2000=0.5
  TA1CTL = TASSEL_2 + MC_1;
  _BIS_SR(LPM0_bits);    //进入LPM3低功耗模式
}
常见泽1
2楼-- · 2019-03-24 19:15
 精彩回答 2  元偷偷看……
wuqingyou
3楼-- · 2019-03-24 20:18
CCR1和CCR2都可以产生PWM波,遗憾的是,CCR2的PWM中没有GPIO口引出来,所以只能当做定时器定时间用了。而CCR0是用来产生周期的。所以G2553只能产生一路PWM波,我之前用G2553写SPWM波,发现了这个问题。
常见泽1
4楼-- · 2019-03-25 01:29
我觉得是 但是之前有网友说可以产生 我问过他 他也没回我 只是说肯定可以
jiantaozzr
5楼-- · 2019-03-25 01:53
 精彩回答 2  元偷偷看……
zenghao616
6楼-- · 2019-03-25 04:41
我不明白怎么周期是由CCR0决定的。。。明显系统频率确定后,定时器TA计数到0XFFFF,这才是PWM周期的一半,,,求解释

一周热门 更多>

相关问题

    相关文章