먼저 상단 메뉴에서 Project를 하나 생성해줍니다.
File - New - STM32 Project를 눌러주면 됩니다. 그 후 사용하시는 Board를 검색하셔서 선택 후 Next를 눌러줍니다.
그 후 Project Name을 지정해주시고 Finish를 눌러주시면 IDE가 생성이 됩니다.
IDE를 생성하게 되면 STM32F411RETx 마이크로컨트롤러를 위한 STM32CubeIDE 소프트웨어 인터페이스를 보여줍니다. Pinout & Configuration 특정 프로젝트에 맞게 마이크로컨트롤러의 핀과 주변 장치를 설정할 수 있습니다. 화면의 중앙 부분은 STM32F411RET6 칩의 레이아웃을 보여주며, VBAT, I/O 핀, 전원 공급 핀(VDD, VSS) 등의 기능을 나타내는 라벨이 있는 색상으로 구분된 핀 할당을 표시합니다.
간단하게 LED를 점멸시키는 코드와 버튼을 누르면 1씩 증가하는 것을 터미널로 출력되는 코드를 만들어 보겠습니다. 기본적으로 세팅이 되어 있는 버튼과 LED를 이용하여 보드 내부에서 동작하도록 먼저 셋팅을 하도록 하겠습니다.
LED는 PA5에 배치되어 있고 기본적으로 GPIO_Output으로 설정되어 있습니다.
Botton1은 PC13에서 사용할것이고 기본적으로 GPIO_EXTI13 으로 되어있습니다. 이 버튼은 LED를 끄고 키는 버튼으로 사용됩니다.
Botton2는 PA8에서 사용할것이고 기본적으로 GPIO_EXTI8 으로 되어있습니다. 이 버튼은 터미널에서 숫자를 증가시키는 버튼으로 사용됩니다.
핀 설정후 버튼 동작을 위해 EXTI Line interrupts가 Enabled 표시가 체크가 되어있는지도 확인해줍니다.
설정이 모두 끝났으면 상단에 톱니바퀴처럼 생긴 모양을 눌러주면 되는데 이 기능은 설정한 마이크로컨트롤러의 핀 및 주변 장치 구성을 기반으로 코드를 자동 생성하는 기능을 담당합니다. 이렇게 생성된 코드는 프로젝트에 바로 사용할 수 있으며, 개발 과정을 보다 빠르고 효율적으로 진행할 수 있게 돕습니다.
해당 화면이 뜨면서 main.c 코드가 적힌 곳으로 이동하게 됩니다.
STM32 IDE 에서는 유저가 직접 코드를 작성하는 공간이 존재합니다. 그 외의 공간에 코드를 작성하게 되면 빌드를 했을 때 모두 사라지게 되니 유의해주시길 바랍니다.
먼저 버튼 부분 코드를 HAL_GPIO_EXTI_Callback 함수를 통해서 작성합니다.
HAL_GPIO_EXTI_Callback 함수는 GPIO 핀에서 발생하는 외부 인터럽트를 처리하기 위해 사용되는 함수입니다.
case문을 사용해서 간단하게 버튼1을 누르면 LED가 점멸하고 다시 버튼을 누르면 LED 점멸이 멈추는 기능을 만들어봤습니다.
버튼2를 누르면 count 변수가 1씩 증가되고 UART를 통해 터미널에 출력됩니다.
이번엔 main 함수 내에 있는 while문 내부에서 LED를 통제하는 코드를 작성해보겠습니다.
설정을 했던 코드들은 main.h에 define 문으로 선언이 되어 있습니다.
LD2_GPIO_Port는 GPIOA 포트이고 B1)Pin은 GPIO_PIN_13 입니다.
HAL_GPIO_WritePin 함수는 특정 GPIO 핀의 상태를 설정하는데 사용됩니다. 첫 번째 인자 LD2_GPIO_Port는 LED가 연결된 GPIO 포트를 지정하고, 두 번째 인자 LD2_Pin은 해당 포트 내의 특정 핀을 지정합니다. 세 번째 인자 1은 핀의 상태를 High (1)로 설정하여 LED를 켭니다.
HAL_Delay 함수는인자로 전달된 시간(밀리초 단위) 동안 프로그램 실행을 일시 정지합니다. 첫 번째 HAL_Delay(500) 호출은 500밀리초 동안 프로그램을 정지시켜, 이 기간 동안 LED가 켜져 있게 합니다.
LED 끄기 기능은 다시 HAL_GPIO_WritePin 함수를 호출하여 LD2_GPIO_Port 포트의 LD2_Pin 핀을 Low (0)로 설정함으로써 LED를 끕니다. HAL_Delay(500)을 다시 호출하여 프로그램을 추가로 500밀리초 동안 정지시키며, 이 기간 동안 LED는 꺼져 있습니다.
코드 설정을 모두 끝냈으면 상단에 빌드를 눌러서 오류가 있는지 점검해줍니다.
오류가 없으면 Run을 실행시켜 보드에서 동작을 확인합니다.
'하만 세미콘 아카데미 > Embedded (STM32)' 카테고리의 다른 글
[Embedded] STM32 - US Interrupt (0) | 2024.05.31 |
---|---|
[Embedded] STM32 - US GPIO (0) | 2024.05.31 |
[Embedded] STM32 - PWM (0) | 2024.05.31 |
[Embedded] STM32 - Timer (0) | 2024.05.31 |
STM32_Cube_IDE 설치 방법 (0) | 2024.05.31 |