ST/STM32F103C8

STM32F103C8 - GPIO(EXTI)

engineer4ever 2025. 8. 8. 09:35

 

MCU
STM32F103(ST)
IDE
Atollic(TrueSTUDIO), STM32CubeMX
목표
HAL driver를 사용하여 GPIO에 Switch를 연결해 외부 인터럽트 모드로 입력을 받아 LED를 ON-OFF 한다.

 

1. STM32CubeMX : GPIO OUTPUT 설정

- 'Pinout & Configuration' Tab으로 이동

1) Pinout View 로 마우스 이동

2) PC13을 Mouse 왼쪽 버튼 클릭하여 GPIO_Output 선택

 

3) Mouse 오른쪽 버튼 클릭하여 Enter User Label 선택 : GPIO_Output → LED_GREEN 으로 변경

 

- GPIO Configuration 확인

1) GPIO 선택

2) PC13-TAMPER-RTC 선택

3) GPIO output level : Low(LED ON), HIGH(LED OFF) ; 초기 상태

4) GPIO mode : Output Push Pull, Output Open Drain

5) Maximum output speed : Low, Medium, High

6) User Label : LED_GREEN

 

2. STM32CubeMX : GPIO EXTI 설정

- 'Pinout & Configuration' Tab으로 이동

1) Pinout View 로 마우스 이동

2) PB1을 Mouse 왼쪽 버튼 클릭하여 GPIO_EXTI1 선택

 

3) Mouse 오른쪽 버튼 클릭하여 Enter User Label 선택 : GPIO_EXTI1 → SW1 으로 변경

 

- GPIO Configuration 확인

1) GPIO 선택

2) PB1 선택

3) GPIO mode : External Interrupt Mode with Rising edge trigger detection

※ Rising edge로 선택 하였으나 회로 구성에 따라 스위치를 누를때 or 뗄때 Interrupt 발생

4) GPIO Pull-up/Pull-down : No pull-up and No pull-down, Pull-up, Pull-down

5) User Label : SW1

 

- NVIC 설정

1) NVIC 선택

2) EXTI line1 interrupt : Enabled에 체크

 

- GENERATE CODE 클릭


3. ATOLLIC : main.c 수정

- SW1 입력이 들어올 때마다 LED_GREEN toggle 되는 source code

/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
	if(GPIO_Pin == SW1_Pin)
	{
		HAL_GPIO_TogglePin(LED_GREEN_GPIO_Port, LED_GREEN_Pin);
	}
}
/* USER CODE END 0 */
 

- 총 16개의 외부 GPIO source는 EXTI line 0부터 15까지로 제공

※ PXn 형태의 GPIO pin들 중 n이 중복되는 핀의 EXTI 동시 사용 불가

ex) PA0, PB0, PC0, … 등의 GPIO들은 모두 EXTI0 line에 연결되므로 중복 사용 불가

 

 

'ST > STM32F103C8' 카테고리의 다른 글

STM32F103C8 - UART(DMA)  (3) 2025.08.08
STM32F103C8 - UART(Interrupt)  (1) 2025.08.08
STM32F103C8 - UART(Polling)  (1) 2025.08.08
STM32F103C8 - GPIO  (0) 2025.08.08
STM32F103C8 - Project 생성 및 기본 설정  (1) 2025.08.08