연구 & 공부/STM32

STM32 Cube IDE GPIO 및 인터럽트 사용 - STM32F746NG Discovery Board

RacoonSensei 2021. 5. 7. 09:52

저번에 올린 포스팅에서 이어서 GPIO로 LED 제어 및 버튼을 Interrupt로 설정하여 사용하는법애 대해서 포스팅할려고 합니다. 인터넷에 찾아보면 여러 포스팅 글들이 있어서 참고할만한 글들은 있었는데 버튼으로 LED를 제어하는부분은 없었던걸로 기억하고 있어요.

 

처음글을 본 분들을 위해서 File->New->STM32 Project에서 본인의 보드를 선택해서 프로젝트를 생성합니다.

 

 

그 뒤 STM32F746보드는 Pin Setting에서 ST-LINK핀은 위 P13,P14이고

Green Led는 PI1, Blue Button은 PI11 이므로 이를 각각 눌러서 핀을 설정을 해주는데 아래 그림처럼 세팅을 해주면 됩니다. 

 

 

이후 System Core에 들어가서 SYS에서 Debug를 Serial Wire로 세팅을 해주고

GPIO에 들어가서 본인이 원하는 대로 세팅을 해주면 됩니다. 저는 LED만 Pull-up으로 변경 후 진행하였습니다.

여기서 내가 핀이름을 적어주면 그대로 코드 생성에 반영이 되니 취향껏 적어주시면 됩니다. 그리고 NVIC에서 PI11은 EXTI11이므로 15:10을 Enable해줍니다.

 

 

이후 Clock Configuration 및 기타 설정을 해주고 코드 생성을 시작합니다.

코드 생성은 Project->Generate Code 또는 저장을 해주면 자동으로 생성을 할건지를 물어보는 창이 뜹니다.

 

이후 위와 같이 자동 생성된 코드( Initialize와 Handler까지 자동적으로 생성을 해줍니다. )와 이제 Callback 함수를 이용해서 내가 원하는부분을 새롭게 작성을 할 수 있습니다.

우리는 Blue button을 눌렀을 때 LED를 Toggle해주는 기능을 작성하고자 하기 때문에 main함수 바로 위에 USER CODE BEGIN 4 영역에 위와 같은 코드를 작성하여 줍니다.

 

이후 실행 및 디버깅을 하여주면 아래와 같이 버튼을 누를때마다 LED가 깜빡이는것을 볼 수 있습니다.

 

 

 

 

오늘은 GPIO 및 Interrupt를 사용하는법을 해보았는데요, 사실 처음 임베디드 시스템을 접하는 분들은 초기화하는 부분부터 매우 어려워하는 경우가 많은데 STM Cube IDE는 이러한 부분을 최대한 배려해주는 것으로 보입니다. 다만 그때문인지 IDE 자체는 매우 무거운 편으로 보여요. 저는 기존에는 Eclipse를 사용하였기 때문에 더 체감이 되는 것으로 보입니다. 그럼 다음에는 UART(USART)로 메시지 출력 및 Printf로도 출력이 가능한 예제를 가지고 오도록 할게요.

 

감사합니다.