단편기 TM4C123 학습(二): 인터럽트와 버튼 제어

3793 단어
1. 키 초기화
K1-PD7
키 K2-PF4
K3-PA3 키를 누릅니다.
K4-PA2 키를 누릅니다.
    //
    // key1 init
    // SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);   LED init   ,       
GPIOPinTypeGPIOInput(GPIO_PORTD_BASE, GPIO_PIN_7);


즉, 키 초기화는 입력 2단계로 파이프 발 유형을 설정하는 (외부 장치 사용 및 사용)만 필요합니다.
2. 인터럽트 에너지
3단계: 포트 인터럽트 유형 설정, 에너지 포트 인터럽트, 포트 인터럽트 처리 핸들 등록
    //
    // interrupt enable--key1
    //
    GPIOIntTypeSet(GPIO_PORTD_BASE,GPIO_PIN_7,GPIO_FALLING_EDGE);    //  PD7          
    GPIOIntEnable(GPIO_PORTD_BASE,GPIO_PIN_7);        //  PF4  
    GPIOIntRegister(GPIO_PORTD_BASE, Key1IntHandler);  // PF4                  
void Key1IntHandler()
  {
    GPIOPinWrite(GPIO_PORTD_BASE,GPIO_PIN_6,0<<6);//   
    GPIOIntClear(GPIO_PORTD_BASE,GPIO_INT_PIN_7);//  key1
  }

특히 인터럽트 처리 핸들 중 마지막으로 버튼 상태를 제거해야 합니다. 인터럽트가 처리되었음을 나타냅니다.
void Key34IntHandler()
  {
    uint32_t IntStatus_raw;
    IntStatus_raw = GPIOIntStatus( GPIO_PORTA_BASE, 0); // GPIORIS   
    if(IntStatus_raw & GPIO_INT_PIN_3)  // PA3       
    {
        GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_0,0<<0);//   
        GPIOIntClear(GPIO_PORTA_BASE,GPIO_INT_PIN_3);//  key3
    }
    if(IntStatus_raw & GPIO_INT_PIN_2)  // PA2       
    {
        GPIOPinWrite(GPIO_PORTD_BASE,GPIO_PIN_6,1<<6);//  
            GPIOPinWrite(GPIO_PORTA_BASE,GPIO_PIN_4,1<<4);//  
            GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_0,1<<0);//  
        GPIOIntClear(GPIO_PORTA_BASE,GPIO_INT_PIN_2);//  key4
    }
  }

하나의 모듈은 인터럽트 입구를 함께 사용해야 하기 때문에 버튼 3과 4를 함께 써야 한다
전재 대상:https://www.cnblogs.com/pursuit1996/p/4912520.html

좋은 웹페이지 즐겨찾기