luyy 发表于 2024-3-11 18:01:41

STC8H3K64S2 普通管脚电平中断时,在中断程序修改中断模式,部分修改无效 | 已解决

如题,在用引脚中断时,由于这个型号不能使用上升沿和下降沿中断,只能使用电平中断,但在实际使用中,发现进入中断后,某些引脚在中断程序修改中断模式(即从高电平改为低电平或从低电平改为高电平)无效,导致中断一直被触发。大家有见过类似的现象吗?如何解决?中断程序如下:

void P1_int (void) interrupt P1INT_VECTOR      //P1 ISR
{

      EAXSFR();
      P07=~P07;
      P1INTE = 0x00;   //DISENABLE P1 int
P1INTF = 0x00;
step = P1 & HALL_PIN;//0x45;//(0b01000101);      //P1.0-HALL_U P1.2-HALL_V P1.6-HALL_W
      if ((step > 0 ) && (step < 0xff))         hall_intcnt++;

                switch(step)
                {
                case STEP2:
                  P1IM0 = ~STEP2;
                              break;
                case STEP6:
                  P1IM0 = ~STEP6;
                              break;
                case STEP4:
                  P1IM0 = ~STEP4;
                              break;
                case STEP5:
                  P1IM0 = ~STEP5;
                              break;
                case STEP3:
                  P1IM0 = ~STEP3;

                              break;

                case STEP1:
                  P1IM0 = ~STEP1;
                              break;

               

               
               
                default:
                              M_DRV_IN_OFF;               
                  P1IM0 = 0x00;
                              break;
                }
      
      P1IM1 = 0xff;
               
      P1INTE = HALL_PIN;
          P1INTF = 0x00;

}


以上程序中当引脚的信号为STEP3时,就一直触发中断。

luyy 发表于 2024-3-11 18:21:56

解决了

页: [1]
查看完整版本: STC8H3K64S2 普通管脚电平中断时,在中断程序修改中断模式,部分修改无效 | 已解决