P4DIR|= BIT1+BIT2+BIT3+BIT4; // P1.2 P1.3输出
P4SEL|= BIT1+BIT2+BIT3+BIT4; // P1.2 TA1模式P1.3 TA2模式
TBCTL = TBSSEL_2+MC_1+ID_3; // SMCLK, 清零Tar,增模式启动Timer_B,1/8分频
TBCCR0=PWM_T; // PWM 周期 10MS(100HZ)CCR0初值10000-50MS(20HZ)CCR0初值50000
TBCCTL1=OUTMOD_7; // CCR1 reset/set模式
TBCCR1=(PWM_T/2); // CCR1 PWM 任务周期
为什么 TBSSEL-2时P4.1P4.2为1.64v不变的电压;TBSSEL-1时就产生跳变电压0.2-3v
此帖出自
小平头技术问答
#include <msp430x14x.h>
void main(void)
{
WDTCTL =WDTPW+ WDTHOLD; //停止看门狗定时器
P1DIR |= 0x0C; //设P1.2 和P1.3 为输出
P1SEL |= 0x0C; //设P1.2 和P1.3 TA1/2 为模块功能
CCR0 = 512-1; //装入PWM 周期值
CCTL1 = OUTMOD_7; //设CCR1输出单元为复位/置位输出模式
CCR1 = 384; //装入CCR1 PWM的占空值
CCTL2 = OUTMOD_7; //设CCR2输出单元为复位/置位输出模式
CCR2 = 128; //装入CCR2 PWM 的占空值
TACTL = TASSEL_1 + MC_1; //时钟源选择ACLK, 定时器A 增计数模式
_BIS_SR(LPM3_bits); //进入LPM3 低功耗模式
}
这个程序是没有问题的,我试过了,希望对你有用。
频率=时钟频率/(CCR0-1);
占空比1=CCR1/CCR0; 这是 一个PWM信号
占空比2=CCR1/CCR0;这是 第二个PWM信号。
TIMEA 能产生 两个可调频率和占空比的PWM。当然有复用的脚。
TIMEB 能产生 7个可调频率和占空比的PWM。 也有复用的脚。
一周热门 更多>