我将MSP430F2418的P8.3配置为输入引脚,用一个1.2M的电阻下拉。再读这个引脚的电平,发现为高电平。直接测量引脚,电压是高电平。
我把下拉电阻换成1k,电平还是为高。
这说明是单片机的引脚一直就为高,这是为什么呢?可能是焊接的问题吗?我焊了4块板子,有一块是低电平,其他的都是高电平。
最有可能是配置不对,其次是芯片损坏
接下来还可能是电路设计或者生产焊接有异常
配置和电路设计应该是对的,应为我焊过的板子里有正常的
如果是焊接的问题,那具体是什么原因造成的呢?焊接的时候要怎样做才能避免出现这种问题呢?我焊了四块板子有三块是不正常的。
用那么大的下拉电阻,那需要讲IO配置成高阻输入态才行,默认的弱上拉可不行。
上传了一些书籍资料,也许有你想要的:https://download.eeworld.com.cn/user/chunyang
楼主,其实这应该是正常现象,如果你要测试IO口有没有坏,只需要配置为输出模式,然后输出高低电平看看是否正确就行了。
这是我的程序
#include "msp430.h"
#include "define.c"
void main()
{
unsigned long i;
_BIC_SR(0xFFFF);
DCOCTL=0x83; //DCOCLK频率1.25MHz
WDTCTL=WDTPW+WDTHOLD; //关闭看门狗定时
BCSCTL1&=~XT2OFF; //打开XT2
do
{
IFG1 &= ~OFIFG; // Clear OSCFault flag
for (i = 0xFF; i > 0; i--); // Time for flag to set
}
while (IFG1 & OFIFG); // OSCFault flag still set
BCSCTL2|=(SELM_2+DIVM_2+SELS); //SMCLK选择xt2,选择结果是ACLK=32768,SMCLK=5MHz,MCLK=1.25MHz(5M四分频)
IFG1&=~(WDTIFG+OFIFG+NMIIFG+PORIFG+RSTIFG); //中断标志清零
FCTL3=FWKEY; //ACCVIFG清零
IE1|=OFIE+NMIIE+ACCVIE; //中断初始化设置
P8SEL &= ~IrCTRL;
P8DIR &= ~IrCTRL;
P8SEL&=~(POC2+POC1+WR);
P8OUT&=~(POC2+POC1+WR);
P8DIR|=(POC2+POC1+WR);
// P8OUT|=POC1;
P8OUT|=POC2;
// P8OUT|=WR;
while(1);
}
其中
#define IrCTRL BIT3
#define POC1 BIT5
#define POC2 BIT4
#define WR BIT2
当我只操作P8.3时,P8.3能正常输出和输入。
当我将P8.4配置为输出时,我给P8.4输出一个高电平,从P8.3读到的也是高电平,三块电路板都是这样,我也是醉了