社区导航

 

搜索
查看: 3066|回复: 5

[求助] msp430g2553输出独立双路PWM程序及注释

[复制链接]

26

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2015-8-2 16:15 | 显示全部楼层 |阅读模式
1芯积分

最佳答案

查看完整内容

//由P2.1和P2.4分别输出: #include 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; //周期为 ...

回复

使用道具 举报

7

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2015-8-2 16:15 | 显示全部楼层
//由P2.1和P2.4分别输出:
#include
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低功耗模式
}

回复

使用道具 举报

125

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2015-8-2 18:13 | 显示全部楼层
用grace生成,分分钟钟,非常方便,

回复

使用道具 举报

26

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

 楼主| 发表于 2015-8-3 16:24 | 显示全部楼层
痕丶 发表于 2015-8-3 15:05
//由P2.1和P2.4分别输出:
#include
void main( void )
{
  // Stop watchdog timer to prevent time o ...

这个算只用了一个定时器么?

回复

使用道具 举报

26

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

 楼主| 发表于 2015-8-3 16:25 | 显示全部楼层
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. }
复制代码

回复

使用道具 举报

7

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2015-8-4 11:10 | 显示全部楼层

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

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

关闭

站长推荐上一条 1/4 下一条

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2020-6-4 07:56 , Processed in 0.229468 second(s), 25 queries , Gzip On, MemCache On.

快速回复 返回顶部 返回列表