2019-03-24 09:56发布
FLY--小强 发表于 2015-8-3 16:24 这个算只用了一个定时器么?
FLY--小强 发表于 2015-8-3 16:25 我是这样写的
最多设置5个标签!
#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低功耗模式
}
我是这样写的
- void PWM (void)
- {
- //关狗和频率设置全部在主函数进行
- //定时器A0的
- TACTL = TASSEL_2 +MC_1; // 设置定时器A控制寄存器,
- CCR0 =10000; //设置捕获/比较寄存器,初始值为12000,对于12KHz的频率,周期相当于1s
- CCR1=2000; //占空比50%
- CCTL1=OUTMOD_3;//置位复位,TAR等于CCR1时置位1,等于CCR0复位0,
- CCR2=3000; //占空比25%
- CCTL2=OUTMOD_7; //置位复位,TAR等于CCR1时置位1,等于CCR0复位0,
- P1SEL |=BIT2;
- P1DIR |=BIT2; //输出 TA0.1
-
-
-
- //定时器A1的
- TA1CTL = TASSEL_2 +TACLR+MC_1; // 设置定时器A控制寄存器,
- TA1CCR0 =10000; //设置捕获/比较寄存器,初始值为32768,对于32768Hz的频率,周期相当于1s
- TA1CCR1=5000; //占空比50%
- TA1CCTL1=OUTMOD_3; //置位复位,TAR等于CCR1时置位1,等于CCR0复位0,
- TA1CCR2=2500; //占空比25%
- TA1CCTL2=OUTMOD_7; //置位复位,TAR等于CCR1时置位1,等于CCR0复位0,
- P2DIR |=(BIT1+BIT4); //输出 TA2.1和TA2.2
- P2SEL |=(BIT1+BIT4);
- }
复制代码一个定时器就可以 输出好几路的啊 你要什么
一周热门 更多>