请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:MSP430FR2311 大家好、
我正在尝试使用 P2.2编写一个简单的边沿检测器。 该引脚连接到另一个电路的旁路电容器、该电容器与运行此代码的处理器分开供电。
当我运行代码并在主代码中写入 P2IFG BIT2时、我可以强制 IRS 运行、但当我给外部电路加电时、它不运行。 我可以(通过调试器)看到 P2位2从低电平变为高电平、为什么 ISR 不会触发?
这是初始化代码。
void NFC_WAKEUP_init (void) { // P2.2是来自 NFC 芯片的2倍输入 当 NFC 通电时、//应从零转换到大约3V //进行输入 //使主功能 GPIO //设置中断 Detected = false; P2SEL0 &=~BIT2; P2SEL1 &=~BIT2; P2DIR &=~BIT2; //将 P2.2设置为输入方向 //P2OUT &=~BIT2; //设置下拉 //P2REN |= BIT2; // P2.2上拉寄存器使能 P2IES &=~BIT2; // P2.2从低电平到高电平转换 P2IFG &=~BIT2; //清除 P2.2 IFG P2IE |= BIT2; //启用 P2.2中断 }
这是中断代码
#pragma vector=port2_vector
__interrupt void Port_2 (void)
{
//检查 IES 位
if (0 =(P2IES | BIT2)){//低电平到高电平意味着 NFC 上电
P2IES |= BIT2; //现在监视高到低
Detected = true;
//开始计时器轮询 IAA
}
否则{ //从高到低意味着 NFC 掉电
P2IES &=~BIT2; //现在监视低到高
Detected = false;
//停止时间 ISR
}
P2IFG &=~BIT2; //清除 P2.2 IFG
}
主代码仅循环等待检测到的 var 更改。
任何想法 都很有帮助、感谢您花时间浏览我的代码。
Steve