MSP430 LED根本不闪烁

时间:2017-10-24 19:20:52

标签: c hardware led msp430 code-composer

我一直试图打开MSP430G2553上的LED,但它无法正常工作。我已经尝试过TI的代码示例,预生成的代码编辑器工作室LED闪烁项目,甚至以前的代码都是在MSP430上运行的。他们似乎都没有工作。可能是什么问题呢?它可能是有缺陷的硬件吗?这是我的代码:

#include  <msp430.h>

void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // Stop watchdog timer
  P1DIR |= 0x01;                            // Set P1.0 to output direction

  for (;;)
  {
    volatile unsigned int i;
    volatile unsigned int j;

    P1OUT ^= 0x01;                          // Toggle P1.0 using exclusive-OR

    i = 25000;                              // Delay
    while(i--) {
       j = 2;
       while(j--);
    }
  }
}

3 个答案:

答案 0 :(得分:0)

你可以尝试这个版本(仍然是一个轮询循环,但让它保持基本)?

#include <msp430.h>

int main(void) {
  volatile int i;
  WDTCTL = WDTPW | WDTHOLD;
  P1DIR |= 0x01;
  P1OUT = 0x00;

  for (;;) {
    P1OUT ^= 0x01;
    for (i = 0x6000; i > 0; i--) { };
  }
  return 0;
}

当我在2010年使用MSP430时,我从我的一个旧例子中得到了这个......

答案 1 :(得分:0)

尝试用__delay_cycles(1000000);替换while循环。

即使循环变量标记为volatile,编译器也可以优化掉空循环。

#include  <msp430.h>

void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // Stop watchdog timer
  P1DIR |= 0x01;                            // Set P1.0 to output direction

  for (;;)
  {
    P1OUT ^= 0x01;                          // Toggle P1.0 using exclusive-OR

    __delay_cycles(1000000);
  }
}

答案 2 :(得分:0)

我遇到了MSP430FR5994开发板的问题,在眨眼的示例中LED不会打开,但在“开箱即用体验”项目中它们会打开。比较代码,我确定与pmm.c的区别在于此行:

//For FRAM devices, at start up, the GPO power-on default
//high-impedance mode needs to be disabled to activate previously
//configured port settings. This can be done by clearing the LOCKLPM5
//bit in PM5CTL0 register
PM5CTL0 &= ~LOCKLPM5;

将其放置在main()的顶部似乎可以解决所有问题,并且LED的行为符合预期。