msp430g2553输出独立双路PWM程序及注释

2019-03-24 09:56发布


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
痕丶
1楼-- · 2019-03-24 11:54
< //由P2.1和P2.4分别输出:
#include<msp430.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,由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低功耗模式
}
王项电子
2楼-- · 2019-03-24 12:07
< :TI_MSP430_内容页_SA7 --> 用grace生成,分分钟钟,非常方便,
FLY--小强
3楼-- · 2019-03-24 14:33
 精彩回答 2  元偷偷看……
FLY--小强
4楼-- · 2019-03-24 15:01
FLY--小强 发表于 2015-8-3 16:24
这个算只用了一个定时器么?

我是这样写的
  1. void PWM (void)
  2. {
  3. //关狗和频率设置全部在主函数进行
  4.   //定时器A0的
  5.   TACTL = TASSEL_2 +MC_1; // 设置定时器A控制寄存器,
  6.   CCR0 =10000;   //设置捕获/比较寄存器,初始值为12000,对于12KHz的频率,周期相当于1s  
  7.   CCR1=2000;     //占空比50%
  8.   CCTL1=OUTMOD_3;//置位复位,TAR等于CCR1时置位1,等于CCR0复位0,
  9.   CCR2=3000;       //占空比25%
  10.   CCTL2=OUTMOD_7;  //置位复位,TAR等于CCR1时置位1,等于CCR0复位0,
  11.   P1SEL |=BIT2;
  12.   P1DIR |=BIT2;   //输出 TA0.1
  13.   
  14.   
  15.   
  16.       //定时器A1的
  17.   TA1CTL = TASSEL_2 +TACLR+MC_1; // 设置定时器A控制寄存器,
  18.   TA1CCR0 =10000;                //设置捕获/比较寄存器,初始值为32768,对于32768Hz的频率,周期相当于1s
  19.   TA1CCR1=5000;                  //占空比50%
  20.   TA1CCTL1=OUTMOD_3;             //置位复位,TAR等于CCR1时置位1,等于CCR0复位0,
  21.   TA1CCR2=2500;                  //占空比25%
  22.   TA1CCTL2=OUTMOD_7;             //置位复位,TAR等于CCR1时置位1,等于CCR0复位0,
  23.   P2DIR |=(BIT1+BIT4);             //输出 TA2.1和TA2.2
  24.   P2SEL |=(BIT1+BIT4);
  25. }
复制代码
痕丶
5楼-- · 2019-03-24 15:58
FLY--小强 发表于 2015-8-3 16:25
我是这样写的

一个定时器就可以 输出好几路的啊 你要什么

一周热门 更多>

相关问题

    相关文章