본문 바로가기
프로그래밍/Keil RTX

[C/Keil RTX] GPIO INPUT 이벤트 처리 (IRQHandler)

by 채연2 2022. 12. 1.

 

나는 PA.6을 EINT0으로 설정하려고 한다.

// 1
SYS->GPA_MFPL = SYS_GPA_MFPL_PA6MFP_INT0;

// 2
SYS->GPA_MFPL  = (SYS->GPA_MFPL & (~SYS_GPA_MFPL_PA6MFP_Msk) ) | SYS_GPA_MFPL_PA6MFP_INT0  ;

1 또는 2 방법으로 설정해주면 된다.

 

 

 

그 다음 아래와 같이 설정해주기.

// a
GPIO_SetMode(PA, BIT6, GPIO_MODE_INPUT);

// b
GPIO_EnableInt(PA, 6, GPIO_INT_BOTH_EDGE);

// c
NVIC_EnableIRQ(EINT0_IRQn);

// d
GPIO_ENABLE_DEBOUNCE(PA, BIT6);

a : PA.6 핀을 input 모드로 설정 (output이면 GPIO_MODE_OUTPUT)

b : 사실 PA.6의 인터럽트 유형을 잘 몰라서 GPIO_INT_BOTH_EDGE로 설정함!

c : EINT0 인터럽트 활성화 ★★★

d : 핀 de-bounce 기능 활성화 

 

 

 

설정을 다 해주면 EINT0_IRQHandler 함수 정의해준다.

void EINT0_IRQHandler(void)
{
	uint8_t i;
	
	if(GPIO_GET_INT_FLAG(PA, BIT6)) {
		GPIO_CLR_INT_FLAG(PA, BIT6);
		//here
	}
}

if (GPIO_GET_INT_FLAG(PA,BIT6)) 조건문을 넣어 PA.6 인터럽트 발생 시에만 조건문을 타게끔 해준다.

그리고 here 자리에 원하는 코드 작성하면 끝

 

320x100

댓글