此帖出自微控制器 MCU论坛
最新回复
MSP430单片机IO口用来检测高低电平时,是不需要外部上拉下拉的,因为其内部有上拉和下拉。在用作高低电平检测时,需要开启上拉或下拉。
如果有效状态为高电平,则需要配置为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.7
void Buttons_init(uint16_t buttonsMask)
{
BUTTON_PORT_OUT |= buttonsMask; //buttons are active low
BUTTON_PORT_REN |= buttonsMask; //pullup resistor
BUTTON_PORT_SEL &= ~buttonsMask;
}
详情
回复
发表于 2013-5-21 12:48
| ||
|
||
此帖出自微控制器 MCU论坛
点评 | ||
|
||
| |
|
|
| |
|
|
回复 沙发 ml0943 的帖子
此帖出自微控制器 MCU论坛
| ||
个人签名i miss you!
新浪微博http://weibo.com/u/3178116863 一切都是最好的安排!感恩,毋需抱怨! |
||
EEWorld Datasheet 技术支持