MSP430上电后IO口先输出一段方波,然后才开始跑程序,怎么...
MSP430不管下载任何程序,上电后IO口先输出一段方波,然后才开始跑程序,怎么回事? 确定下是不是初始化问题? 上初始化的代码,来瞅瞅 以前用AVR发现串口第一次上电总是多发出来一个0x00 别人的代码就没问题。最后找到原因,觉得跟楼主这个问题差不多。 重点检查一下复位电路。 程序上电 总是会有一段方波
一种理解: 初始化有问题
另一种理解: 程序初始化有个引脚设为0,可是复位又拉高,复位电路来回的接触不良,也是一段方波(很可能死机都不知道为什么)
都是猜测,唯一的解决就是上初始化代码与电路图 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)里面的程序。但是上电后按下复位按钮,程序又是正常跑的,只有在芯片掉电重新上电情况下才发生这种现象。 在关闭看门狗后边,加个长延时,看下这个现象还会出现不 单步走会闪吗?不行就一段段的屏蔽掉,看看到底哪里出来的 找到原因了,是电源的问题,换个电源就行了 硬件没问题吧
页:
[1]