Thread 中讨论的其他器件:Energia
工具与软件:
您好!
当我尝试使用打印功能或任何其他功能时、会得到 PWM 电压的波动。 在该功能完成后、电压会随机变为高电平或低电平、然后继续以设定的占空比运行。 相同的操作在 Energia IDE 中可以轻松运行、但在 CCS 中不起作用。
理想情况下、我希望它在设定的占空比下保持恒定、而不受干扰。
下面是我的代码:
#include
#include
空 initClock()
{
WDTCTL = WDTPW | WDTHOLD;//停止看门狗计时器
PM5CTL0并且=~Ω LOCKLPM5;//禁用 GPIO 高阻抗模式
//将 DCO 配置为1 MHz
CSCTL0_H = CSKEY >> 8;//解锁 CS 寄存器
CSCTL1 = DCOFSEL_0 | DCORSEL;//将 DCO 设置为1 MHz
CSCTL2 = SELA__VLOCLK | SELS__DCOCLK | SELM__DCOCLK;//设置 ACLK = VLO;SMCLK = DCO;MCLK = DCO
CSCTL3 = DIVA__1 | DIVS__1 | DIVM__1;//将所有分频器设置为1
CSCTL0_H = 0;//锁定 CS 寄存器
}
空 initPWM()
{
//将 P1.0配置为 PWM 输出
P1DIR |= BIT0;//将 P1.0设置为输出
P1SEL0 |= BIT0;//为 P1.0选择 Timer_A 函数
//配置 Timer_A
TA0CCR0 = 1000 - 1;// PWM 周期
TA0CCTL1 = OUTMOD_7;// CCR1复位/设置
TA0CCR1 = 0;// CCR1 PWM 占空比
TA0CTL = TASSEL_2 + MC_1 + TACLR;// SMCLK、向上计数模式、清除 TAR
}
void setPWMDutyCycle (unsigned int dutyCycle)
{
TA0CCR1 = dutyCycle;//设置 PWM 占空比
}
void main (void)
{
initClock();
initPWM();
setPWMDutyCycle (100);
while (1)
{
printf ("hello\n");
__delay_cycles (1000000);//调整淡出速度的延迟
}
}