羊羊的老爸 发表于 2016-6-13 10:51:58

MSP430上电后IO口先输出一段方波,然后才开始跑程序,怎么...

MSP430不管下载任何程序,上电后IO口先输出一段方波,然后才开始跑程序,怎么回事?

changhui0222 发表于 2016-6-13 11:12:23

确定下是不是初始化问题?

xiesx1985 发表于 2016-6-13 12:01:30

上初始化的代码,来瞅瞅

starli 发表于 2016-6-13 12:59:52

以前用AVR发现串口第一次上电总是多发出来一个0x00   别人的代码就没问题。

   最后找到原因,觉得跟楼主这个问题差不多。

粗人 发表于 2016-6-13 13:10:39

重点检查一下复位电路。

ywlzh 发表于 2016-6-13 13:37:23

程序上电 总是会有一段方波

一种理解: 初始化有问题
另一种理解: 程序初始化有个引脚设为0,可是复位又拉高,复位电路来回的接触不良,也是一段方波(很可能死机都不知道为什么)

都是猜测,唯一的解决就是上初始化代码与电路图

羊羊的老爸 发表于 2016-6-13 16:36:03

xiesx1985 发表于 2016-6-13 12:01
上初始化的代码,来瞅瞅

/***************************************************
程序功能:控制8个LED闪烁,用于测试下载功能是否正常
---------------------------------------------------
测试说明:观察LED闪烁
***************************************************/
#include<msp430x14x.h>

voidDelay(unsigned int a)
{
unsigned int b,c;
for(b=0;b<a;b++)
{
    for(c=0;c<100;c++);
}

}

/****************主函数****************/
void main(void)
{
    /*下面六行程序关闭所有的IO口*/
    P1DIR = 0XFF;P1OUT = 0XFF;
    P2DIR = 0XFF;P2OUT = 0XFF;
    P3DIR = 0XFF;P3OUT = 0XFF;
    P4DIR = 0XFF;P4OUT = 0XFF;
    P5DIR = 0XFF;P5OUT = 0XFF;
    P6DIR = 0XFF;P6OUT = 0XFF;

    WDTCTL = WDTPW + WDTHOLD;       //关闭看门狗
   
    P6DIR |= BIT2;P6OUT |= BIT2;    //关闭电平转换
    P2DIR = 0xff;                   //设置P2口方向为输出
    P2OUT=0xfe;
    Delay(800);
    while(1)
    {
      P2OUT=P2OUT<<1;
      Delay(800);
    }


}


就这么一段跑马灯程序,上电瞬间,程序执行到while(1)前一步,LED0闪烁几下,然后才开始执行while(1)里面的程序。但是上电后按下复位按钮,程序又是正常跑的,只有在芯片掉电重新上电情况下才发生这种现象。

xiesx1985 发表于 2016-6-13 17:17:48

在关闭看门狗后边,加个长延时,看下这个现象还会出现不   

yy8047 发表于 2016-6-13 17:31:09

单步走会闪吗?不行就一段段的屏蔽掉,看看到底哪里出来的

羊羊的老爸 发表于 2016-6-13 21:38:37

找到原因了,是电源的问题,换个电源就行了

hdl 发表于 2016-6-14 08:53:44

硬件没问题吧
页: [1]
查看完整版本: MSP430上电后IO口先输出一段方波,然后才开始跑程序,怎么...