如果有效状态为高电平,则需要配置为REN为上拉使能,且配置OUT为0,即设置为下拉。
如果有效状态为低电平,则需啊哟配置REN为使能,且OUT位1,即设置为上拉。
如果不开启内部上拉下拉使能,则IO可能出现不固定状态。譬如,当IO被输入高后,外部输入被撤除,但IO寄存器仍然为高。
注意:
这里出现的情况是给IO输入高电平后,外部输入撤离,但是IO寄存器IN仍然保持高电平,而是用万用表量电压后,IO变为0.
出现这个情况的原因是IO对地串联了一个3K电阻和100nf电容,外部输入是加在电阻和电容的连接处的。应该是由外部输入时,对电容充电,外部输入撤离后电容保持该电压。
PS:MSP430f5529DEMO里关于按键中断init
#define BUTTON_PORT_DIR PADIR#define BUTTON_PORT_OUT PAOUT#define BUTTON_PORT_SEL PASEL#define BUTTON_PORT_REN PAREN#define BUTTON_PORT_IE PAIE#define BUTTON_PORT_IES PAIES#define BUTTON_PORT_IFG PAIFG#define BUTTON_PORT_IN PAIN#define BUTTON1_PIN BIT7 //P1.7#define BUTTON2_PIN BIT2 //P2.2#define BUTTON1_IFG P1IFG //P1.7#define BUTTON2_IFG P2IFG //P1.7void Buttons_init(uint16_t buttonsMask){ BUTTON_PORT_OUT |= buttonsMask; //buttons are active low BUTTON_PORT_REN |= buttonsMask; //pullup resistor BUTTON_PORT_SEL &= ~buttonsMask; }