NVIC
Nested Vectored Interrupt Controller(중첩 벡터형 인터럽트 제어기)
즉, 우선순위에 따라서 모든 인터럽트를 처리 가능
- Cortex-M 프로세서의 내부에 위치
 - 최대 256개의 서로 다른 우선 순위 설정 가능, 최대 240개 외부 인터럽트 지원 가능
 - 프로세스 상태: 인터럽트 진입시 자동으로 저장(by HW), 인터럽트 종료 시 복원
 - 인터럽트 테일 체인 지원
 - Cortex-M의 벡터 테이블은 이전의 레거시 ARM 코어와 약간 다름
- 하드웨어 인터럽트 처리를 메인 인터럽트 벡터테이블에서 처리 → 응답시간 개선
 
 - 레거시 ARM과 달리, 벡터 테이블에 명령어가 아닌 예외처리기 및 ISR의 주소가 포함
 

Exception Vector Table

총 n개의 인터럽트 처리를 위한 테이블
벡터 테이블은 인터럽트 발생 시, 그에 맞는 핸들러가 실행될 수 있도록 해주는 함수 테이블
여기서 IRQ0 ~ IRQn 은 외부 HW인터럽트 처리를 위함
Exception vector table을 확인해보자

.word EXTI0_IRQHandler는 EXTI0_Handler함수의 주소를 4바이트(word)크기로 저장
그래서 인터럽트가 발생하면 핸들러 함수로 점프
예를들어
- 버튼 클릭 → GPIO 핀 전기적 변화
 - EXTI가 해당 핀 변화 감지
 - NVIC으로 전달, 우선순위 검토
 - Cortex로 전달
 - 벡터테이블을 참조, 해당 인터럽트 핸들러 실행
 - 복귀
 
'ARM arch > Cortex-M' 카테고리의 다른 글
| 테일 체이닝 (2) | 2025.09.01 | 
|---|---|
| cortex-m3 AMBA와 메모리 맵 (0) | 2025.07.14 | 
| 2025.07.09 - ARM assembly 프로그래밍2 (0) | 2025.07.09 | 
| 2025.07.07 - ARM assembly 프로그래밍1 (0) | 2025.07.08 | 
| 빅 엔디언, 리틀 엔디언 (0) | 2025.07.02 |