Polling vs Interrupt
Polling
CPU 가 특정 이벤트를 처리하기 위해 이벤트가 발생할 때까지 모든 연산을
이벤트가 발생하는지 감시하는 방식
Interrupt
CPU가 특정 이벤트 발생시 현재 작업을 멈추고 해당 인터럽트 서비스 루틴을
수행 후 다시 이전 작업으로 돌아가는 방식
1. Hardware Interrupt
비동기식 이벤트 처리로 주변장치의 요청에 의해 발생하는 인터럽트
높은 우선 순위
하드 디스크 읽기 요청, 디스크 읽기 끝남, 키보드 입력 등에 발생
비동기식 이벤트 처리로 주변장치의 요청에 의해 발생하는 인터럽트
높은 우선 순위
하드 디스크 읽기 요청, 디스크 읽기 끝남, 키보드 입력 등에 발생
2. Software Interrupt
동기식 이벤트 처리로 사용자가 프로그램 내에서 인터럽트가 발생하도록 설정하는 인터럽트
낮은 우선 순위
Trap, Exception 등이 여기에 포함
동기식 이벤트 처리로 사용자가 프로그램 내에서 인터럽트가 발생하도록 설정하는 인터럽트
낮은 우선 순위
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 를 처리
Processor 는 Interrupt 를 인지하여 처리하기 전에 Pending Register
(어떤 Interrupt 가 발생되었는지 저장) 를 검사하여 발생된 Interrupt 중 Priority가 가장 높은 Interrupt 를 처리
외부 Interrupt 는 EXTI0 ~ EXTI15까지 각 Port 의 Pin 번호가 Interrupt Pin과 매치
모든 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 내용을 참고
\startup_stm32f10x_cl.s 내용을 참고
•각 인터럽트 핸들러에서 호출되는 함수의
프로토타입이 정의 되어 있음
프로토타입이 정의 되어 있음
•정의된 이름을 그대로 사용하여 원하는 함수
구현
구현
•예) 8번 핀을 사용 시에 Handler 이름은
EXTI9_5_IRQHandler 로 선언
EXTI9_5_IRQHandler 로 선언
NVIC
NVIC (Nested Vectored Interrupt Controller)
인터럽트 처리 중 또다른 인터럽트 발생시 우선순위를 사용
우선순위가 높은 인터럽트부터 처리 후 다른 인터럽트 처리
ARM 보드에서 인터럽트 사용시 NVIC 통하여 우선순위를 결정
값이 작을수록 우선순위가 높음
인터럽트 처리 중 또다른 인터럽트 발생시 우선순위를 사용
우선순위가 높은 인터럽트부터 처리 후 다른 인터럽트 처리
ARM 보드에서 인터럽트 사용시 NVIC 통하여 우선순위를 결정
값이 작을수록 우선순위가 높음
'Project > 나만의 주점(STM32,Arduino,android)' 카테고리의 다른 글
STM32- LCD 및 ADC (0) | 2022.12.16 |
---|---|
STM32-블루투스 (1) | 2022.12.16 |
STM32- Clock tree (0) | 2022.12.16 |
STM32- Scatter file (0) | 2022.12.16 |
STM32- GPIO 제어 (0) | 2022.12.16 |