ST/STM32F746DIS

STM32F746G DISCOVERY - GPIO(EXTI)

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

 

1. STM32CubeMX : GPIO OUTPUT 설정

- 'Pinout & Configuration' Tab으로 이동

1) Pinout View 로 마우스 이동

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

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

 

- GPIO Configuration 확인

1) GPIO 선택

2) PI1 선택

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

2. STM32CubeMX : GPIO EXTI 설정

- 'Pinout & Configuration' Tab으로 이동

1) Pinout View 로 마우스 이동

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

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

- GPIO Configuration 확인

1) GPIO 선택

2) PI11 선택

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 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에 연결되므로 중복 사용 불가