Embedded 使用定时器A0以1 kHz的频率和0.25和0.75的占空比分别闪烁连接至引脚1.0和4.7的车载LED

Embedded 使用定时器A0以1 kHz的频率和0.25和0.75的占空比分别闪烁连接至引脚1.0和4.7的车载LED,embedded,code-composer,Embedded,Code Composer,我正在使用MSP430F5529板和CCS为这个问题编程。我的代码如下: #include <msp430.h> int main(void) { WDTCTL = WDTPW | WDTHOLD; //stop watchdog timer P1SEL |= BIT0; //configure P1.0 as TA0.1 P1DIR |= BIT0; //P1.0 is

我正在使用MSP430F5529板和CCS为这个问题编程。我的代码如下:

#include <msp430.h>


int main(void)

{
    WDTCTL = WDTPW | WDTHOLD;       //stop watchdog timer

    P1SEL |= BIT0;                  //configure P1.0 as TA0.1
    P1DIR |= BIT0;                  //P1.0 is output (compare mode)
    P4SEL |= BIT7;                  //configure P4.7 as TA0.2
    P4DIR |= BIT7;                  //P4.7 is output (compare mode)


    TA0CCR0 = 999;                  //CCR0 is used to generate the desired period
    TA0CCR1 = 749;                  //CCR1 is used to generate 0.25 duty cycle
    TA0CCR2 = 249;                  //CCR2 is used to generate 0.75 duty cycle


    TA0CCTL1 = OUTMOD_7;            //PWM 1
    TA0CCTL2 = OUTMOD_7;            //PWM 2

    TA0CTL = MC_1 + TASSEL_2 + TACLR|ID_3;
    _BIS_SR(LPM0_bits+GIE);



    while(TA0CCTL2 == 1)
    {
       P4OUT ^= BIT7;
       if(TA0CCTL1 == 1)
           {
              P1OUT ^= BIT0;
           }
    }
}
#包括
内部主(空)
{
WDTCTL=WDTPW | WDTHOLD;//停止看门狗定时器
P1SEL |=位0;//将P1.0配置为TA0.1
P1DIR |=BIT0;//P1.0为输出(比较模式)
P4SEL |=位7;//将P4.7配置为TA0.2
P4DIR |=BIT7;//P4.7为输出(比较模式)
TA0CCR0=999;//CCR0用于生成所需的周期
TA0CCR1=749;//CCR1用于产生0.25占空比
TA0CCR2=249;//CCR2用于产生0.75占空比
TA0CCTL1=OUTMOD_7;//脉宽调制1
TA0CCTL2=OUTMOD_7;//脉宽调制2
TA0CTL=MC_1+TASSEL_2+TACLR | ID_3;
_BIS_SR(LPM0_位+GIE);
而(TA0CCTL2==1)
{
P4OUT^=位7;
if(TA0CCTL1==1)
{
P1OUT^=位0;
}
}
}

此代码只会导致引脚1.0上的LED点亮,它不会闪烁,引脚4.7上的LED甚至不会点亮。

这是MSP430F5529启动板还是其他板?我的5529启动板在P1.2(TA0.1)和P1.3(TA0.2)上有指示灯,而不是P1.0和P4.7。TA0的输入时钟频率是多少?我还没有检查您的TA0CTL设置,但如果您做得对,main()不需要做任何事情,只需要一段时间(1){}或进入低功耗模式。PWM由CCR1和CCR2处理,周期由CCR0设置。是的,这是启动板套件中的开发板。根据问题,它要求频率为1KHzSo,这听起来像是学校的作业。您是否同意指示灯位于P1.2和P1.3上?将CCR1和CCR2设置为正确的占空比,将CCR0设置为每秒重置1000次(取决于输入时钟频率),就完成了。重置/设置模式是正确的模式,向上模式是计时器的正确模式。看起来调试MCU LED连接到P1.2和P1.3,但主MCU LED是P1.0和P4.7。不要配置P1SEL和P4SEL,这些引脚(1.0和4.7)不是TA0输出。只需将引脚配置为GPIO输出。也不需要在TA0CCTL1和TA0CCTL2中编程OUTMOD字段。在main()中,配置管脚后,执行一段时间(1)a)打开LED(P1OUT、P4OUT)并等待设置TA0CCTL1[IFG]和TA0CCTL2;如果是,请关闭LED;等待TA0CTL[IFG]设置(CCR0),再次打开LED。分配要求我们使用板载LED 1.0和4.7,但我不同意此应用的LED为1.2和1.3。我有一个PCB与LED在这些引脚,但他们不被用于此