나는 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
'프로그래밍 > Keil RTX' 카테고리의 다른 글
[C/Keil RTX] CAN 통신 (22) | 2023.01.03 |
---|---|
[C/RL-ARM KEIL] event 처리 구현 (60) | 2022.12.28 |
WDT이란? Watchdog이란? (32) | 2022.12.28 |
[C/RL-ARM KEIL] thread 대신 os_tsk_create 사용하기 (1) | 2022.12.01 |
[C/RL-ARM KEIL] 포인터 사용하기 (malloc 대체) (0) | 2022.12.01 |
댓글