下午好…
我有代码、我在其中使用0xf8初始化 P1中断。 代码按预期工作。 但是、如果我关闭单元电源并重新加电、我注意到在将调试器放置在单元(符号)上之后、P1中断= 0x80。 我在代码中没有将所有中断设置为这样的位置。 我的 ISR 非常干净...
#pragma vector=PORT1_VECTOR
__interrupt void P1_Sw(void)
{
p1flags = (P1IFG & 0xF8);
switch (__even_in_range(P1IV, 16))
{
case 8: //R - Switch 2
P1IE &= ~BIT3;
break;
case 10: //R - Switch 4
P1IE &= ~BIT4;
break;
case 12: //R - Switch 1
P1IE &= ~BIT5;
break;
case 14: //R - Switch 3
P1IE &= ~BIT6;
break;
case 16: //R - Switch All
P1IE &= ~BIT7;
break;
default:
break;
}
debounce();
}
我在其他端口上有其他 IRQ,并验证去抖是否正常。 这是我唯一禁用每个 IRQ 的地方、它应该只在按下按钮后发生。 有人能不能给我指一个方向、让我了解正在发生的情况? 我发现、在连接调试器的情况下、我可以向 PI1E 写入0xf8 (就像配置一样)、并且我可以正常运行代码。 我在 P2.4单元上还有一个复位按钮、如果我按下该按钮、我将重新启动、代码将按预期工作。
谢谢你