问题描述:IO口的某些位在没有开启中断的情况,如果把DIR设置为输出,会产生中断标志IFG。
测试代码:
- #pragma vector=PORT2_VECTOR
- __interrupt void P2__ISR(void)
- {
- if ( P2IFG & BIT3 )
- {
- asm("NOP");
- }
- if ( P2IFG & BIT5 )
- {
- asm("NOP");
- }
- P2IFG = 0;
- }
- void main(void)
- {
- WDTCTL = WDTPW + WDTHOLD; // Stop Watchdog Timer
- BCSCTL1 = CALBC1_1MHZ; // Set DCO to 16MHz
- DCOCTL = CALDCO_1MHZ;
- P2DIR |= BIT0 + BIT4; //执行该语句时P2IFG会变为0x10,即P2IFG4=1;
- //由于F2272IO口方向默认为输入,所以这里省掉了配置中断时的方向设置
- P2IES |= BIT3 + BIT5; //下降沿触发
- P2IE |= BIT3 + BIT5;
- _EINT(); //开总中断
- while(1)
- {
-
- }
- }
P2DIR |= BIT0 + BIT4;
//执行该语句时P2IFG会变为0x10,即P2IFG4=1;
感觉问题很奇怪,虽然不影响我现在的程序,但是希望搞清楚原因。
希望大家指点一下。
|