STM32F746G DISCOVERY - GPIO(EXTI)
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에 연결되므로 중복 사용 불가