Polling CPU가 특정 이벤트를 처리하기 위해 이벤트가 발생할 때까지 모든 연산을 이벤트가 발생하는지 감시하는 방식
Interrupt CPU가 특정 이벤트 발생시 현재 작업을 멈추고 해당 인터럽트 서비스 루틴을 수행 후 다시 이전 작업으로 돌아가는 방식
1. Hardware Interrupt 비동기식이벤트 처리로 주변장치의 요청에 의해 발생하는 인터럽트 높은 우선 순위 하드 디스크 읽기 요청,디스크 읽기 끝남,키보드 입력 등에 발생
2. Software Interrupt 동기식 이벤트 처리로 사용자가 프로그램 내에서 인터럽트가 발생하도록 설정하는 인터럽트 낮은 우선 순위 Trap, Exception등이 여기에 포함
EXTI (External Interrupt)
외부에서 신호가 입력될 경우 Device 에 Event나 Interrupt 가 발생되는 기능
입력 받을 수 있는 신호는 Rising-Edge, Falling-Edge, Rising & Falling-Edge
각 Port 의 n번 Pin의 EXTI n 에 연결
EXTI 는 Event Mode 와 Interrupt Mode 를 선택하여 설정 가능
Interrupt Mode 로 설정할 경우 Interrupt 가 발생해 해당 Interrupt Handler 가 동작
20개의 Edge Detector Line 으로 구성되어 각 Line 이 설정에 따라 Rising/Falling Trigger 를 감지
Interrupt Request는Mask Register를 통해 알 수 있다 Processor는Interrupt를 인지하여 처리하기 전에Pending Register (어떤Interrupt가 발생되었는지 저장)를 검사하여 발생된Interrupt중Priority가 가장 높은Interrupt를 처리
모든GPIO핀들은EXTI line을 통해 연결되어 있다 EXTICR1레지스터를 통해 입력 받을 포트를 선택 하며 같은 번호의 핀들은 같은 라인을 공유
EXTI MUX에 모든Port의Line의 숫자가 같이 들어옴 선언 시에EXTI()는사용할 핀 번호를 사용하면 됨
EXTI를 사용할 때Line, Mode, Trigger,Lineconfig설정 EXTI를 선언 했을 시에는 반드시Handler또한 구현 필요
Handler
•Libraries\CMSIS\DeviceSupport\Startup \startup_stm32f10x_cl.s내용을 참고
•각 인터럽트핸들러에서호출되는 함수의 프로토타입이 정의 되어 있음
•정의된 이름을 그대로 사용하여 원하는 함수 구현
•예) 8번 핀을 사용 시에Handler이름은 EXTI9_5_IRQHandler로 선언
NVIC
NVIC (Nested Vectored Interrupt Controller) 인터럽트 처리 중 또다른 인터럽트 발생시 우선순위를 사용 우선순위가 높은 인터럽트부터 처리 후 다른 인터럽트 처리 ARM보드에서 인터럽트 사용시NVIC통하여 우선순위를 결정 값이 작을수록 우선순위가 높음