PIC32MZ——按键中断

Harmony中,使用GPIO中断非常方便,仅需三步:一是将需要使用的GPIO设为Input;二是勾选ChangeNotify(如果想要设置默认状态,还可以设置上拉或者下拉);三是在system_interrupt中调用中断函数。

以下为示例,按键为RB12,这里是按下按键接地,低电平,包含长按以及短按处理:

PIC32MZ——按键中断

PIC32MZ——按键中断

PIC32MZ——按键中断

void GPIO_B_Interrupt(void)  
{  
    //press is low  
    bool sw3State = SYS_PORTS_PinRead(PORTS_ID_0,PORT_CHANNEL_B,12);  
  
    Sys_Delay_ms(20); //avoid shake  
    if(sw3State!=SYS_PORTS_PinRead(PORTS_ID_0,PORT_CHANNEL_B,12))  
        return;  
      
    if(!sw3State)  //just get press ,low  
    {  
        uint8_t j=0;  
        for(j=0;j<30;j++)  
        {  
            if(sw3State!=SYS_PORTS_PinRead(PORTS_ID_0,PORT_CHANNEL_B,12))  //short press  
            {  
                 PowerSwitchStateChange(false);  //short press  
                 return;  
            }  
            Sys_Delay_ms(300);   
        }  
          
        PowerSwitchStateChange(true);  //long press          
    }  
   
}  

可以在短按函数和长按函数里面添加输出LED显示,输出方法参考 前一篇 ,这里就不赘述了,比较简单。完成后烧入PIC即可。

转自: beatfan的博客

--电子创新网--
粤ICP备12070055号