interrupt 기능 2번째 시간입니다.

external Interrupt 기능은 외부 입력으로 작동되는 인터럽트입니다.

비상정지 같은 우선순위, 즉각적인 응답을 해야 할 때 주로 사용됩니다.

회로도

내장 LED와 내장 버튼을 사용하므로 별도의 회로도가 없습니다.

STM32Cube

지난 시간의 파일에서 File - Save Project As를 눌러 다른 프로그램으로 저장을 해줍니다.

Pinout - Clear Pinouts를 눌러 핀 설정을 초기화해줍니다.

PA5에는 GPIO_Output을, PC13에는 GPIO_EXTI13을 선택해 줍니다.

Clock은 저번 시간에 설정했으므로 넘어가겠습니다.

Configuration으로 이동하여 GPIO를 클릭해 줍니다.

늘 그렇듯 User Label을 적어줍니다.

NVIC를 클릭하여 EXTI line ~~의 Enabled에 체크해 줍니다.

이제 톱니바퀴를 눌러 코드를 생성해 줍니다.

uVision5

외부 인터럽트는 main.c에서 별도로 해줄 것이 없습니다.

만일 콜백 함수(Callback Function)를 이용하게 되면 main에서 작업을 해주어야 합니다.

이번 시간에는 stm32f1xx_it.c에서만 작업해 주도록 하겠습니다.

stm32f1xx_it.c로 가면 아래와 같은 함수가 있습니다.

void EXTI15_10_IRQHandler(void)

이 안에 LED toggle 기능을 넣어보도록 하겠습니다.

/* USER CODE BEGIN EXTI15_10_IRQn 1 */

HAL_GPIO_TogglePin(internal_led_GPIO_Port, internal_led_Pin) ;

/* USER CODE END EXTI15_10_IRQn 1 */

여기까지 완료되었다면 F7(Build) - F8(Download)를 눌러 다운해 줍니다.

보드의 파란색 버튼(B1)을 누를 때마다 led의 on/off가 바뀌면 성공입니다.

감사합니다.