工具/软件:Code Composer Studio
您好!
我正在进行脉 宽调制、以实现 RGB LED 中的衰减效果。 我将使用 MSP430f5419A 的计时器 B。 LED 在褪色时有时闪烁。 我将在红色、绿色和蓝色之间交替显示颜色、我将以1kHz 的频率执行 PWM。 RGB 灯的工作电压为12伏、我 将使用自己的电源电路 。 问题可能出在哪呢? 以下是代码:
#include <msp430f5419a.h>
void main (void)
{
WDTCTL = WDTPW + WDTHOLD;//为方便起见,禁用看门狗计时器。
P4DIR |=(BIT2 + BIT3 + BIT6);//将引脚4.2、4.3和4.6设置为输出方向。
/*** Timer B 设置***/
TBCCR0 = 1000;//在 Timer B 捕获/比较0寄存器中将周期设置为1000us。
TBCCTL2 = OUTMOD_7;
TBCCTL3 = OUTMOD_7;
TBCCTL6 = OUTMOD_7;
TBCTL = TBSSEL_2 + MC_1;//TBSSEL_2选择 SMCLK 作为时钟源、MC_1告诉它向上计数到 TBCCR0中的值。
while (1)
{
int x、z、y;
//红光下的褪色效应
对于(z = 0;z < 1000;z = z + 5)
{
TBCCR6 = z;
P4SEL = BIT6;
_DELAY_CYCLES (50000);
}
对于(z = 1000;z > 0;z = z - 5)
{
TBCCR6 = z;
P4SEL = BIT6;
_DELAY_CYCLES (50000);
}
//绿色光中的褪色效应
对于(y = 0;y < 1000;y = y + 5)
{
TBCCR3 = y;
P4SEL = BIT3;
_DELAY_CYCLES (50000);
}
对于(y = 1000;y > 0;y = y - 5)
{
TBCCR3 = y;
P4SEL = BIT3;
_DELAY_CYCLES (50000);
}
//淡蓝色光中的 eefect
对于(x = 0;x < 1000;x = x + 5)
{
TBCCR6 = x;
P4SEL = BIT2;
_DELAY_CYCLES (50000);
}
对于(x = 1000;x > 0;x = x - 5)
{
TBCCR6 = x;
P4SEL = BIT2;
_DELAY_CYCLES (50000);
}
}
}