请问一下MSP430F5438A上电,设为输入的管脚是不是有一个从0到1的现象,我设的上升沿触发,一加电就触发了,还是程序有问题?
Ling Zhu2:
你好,请检查一下有没有设置上下拉电阻?如果是上升沿触发的话,应该设置一下下拉电阻。
BETTER ZHU:
回复 Ling Zhu2:
设了,效果一样,还有一个奇怪的现象,就是上升沿中断触发后,灯处于什么状态(利用开关通断控制亮灯),关电重启,一上电就显示什么状态,
#include "msp430.h"
int main(void)
{P1DIR|=0X01 : // P1.0管脚输出,用来控制告警灯
P2DIR&=~0X03; //P2.0,1输入,用来触发中断
P2REN|=0X03;
P2OUT|=0X02;//P2.1拉高
P2OUT&=~0X01;//p2.0拉低
P2IE|=0X03;
P2IES|=0X02;//p2.1下降沿触发
P2IES&=~0X01;//P2.0上升沿触发
__bis_SR_register( GIE);
#pragma vector=PORT2_VECTOR__interrupt void Port2_ISR(void){
switch (P2IV) { case 0x02:{if(P2IN &0X01) //上升沿触发,检测开关是否处于闭合,闭合不告警,否则告警亮灯
P1OUT&=~0X01;//P1.0输出低电平亮灯告警
else
P1OUT|=0X01;灭灯
} break; //用来检测开关状态,一旦打开就告警,闭合就取消,不知道这样写对不对
case 0x04: P1OUT&=~0X01;
break; //下降沿触发,连接一个震动传感器,震动后导通接地,亮灯告警default: break;
}
P2IFG = 0X00;
}
这里中断会有冲突吗