[stm32]

[STM32] GPIO - LED 제어

Gernii K 2023. 12. 15. 12:46

보드에 내장된 LED를 제어해보자

 

.ioc 파일

보드 선택과정에 대한 설명은 생략한다.

생성을 하게되면 먼저 ioc 파일이 열린다. 

해당 보드에 핀 설정, 주변장치 설정, 통신 설정등이 가능하다.

PA5 - LD2[Green Led]

먼저 데이터시트 등을 참고해서 핀넘버를 알아야겠으나 생략한다 ( 나중에 자세히 알게되면 포스트해야지 )

PA5번이 보드내장 LED와 연결되어있다. ( 약칭 LD2 )

코드생성

Generate Code를 해주면 이제 main.c 파일이 열린다.

main.c  GPIO_Init

약칭 LD2로 지어준 핀이 잘 생성되었는지 확인해보자

(LD2_Pin, LD2_GPIO_Port, 등등)

 

물론 세팅할때 default 값으로 B1 (user button) 또한 세팅이 되어서 위에 보면 B1_Pin 또한 설정되어있다.

 

main 문 코드

main은 기본적으로 각종 초기화함수들 호출되도록 설정되어있다.

main.c (뿐만은 아니지만) 파일을 잘 보면 주석이 많은걸 알수있다.

/* USER ~~ BEGIN, END */ 라고 쓰여있는곳에  (꼭 BEGIN과 END사이에)  사용자가 코드를 추가 할 수 있다.

BEGIN 전이나, END 후에 (빈공간) 작성하였다면 코드는 나중에 사라져있다. 

(아마 저장이 안되는듯)

 

어렵지 않다. 

 

보통 동작은 while문 안에서 돌게된다.

펌웨어라는게 MCU 위에서 무한히 돌도록 설계하는거라서 ( 쉽게말해 입력한 동작만 계속 수행하게 한다는 이야기다 )

while문 안에서 돌려준다.

 

HAL 라이브러리

STM32CubeIDE에서는 편한 API,  HAL 라이브러리 등을 제공하는데 

보통 이름이 HAL_ 로 시작한다.  궁금하면 HAL_GPIO_TogglePin을 우클릭해서 open declaration 을 눌러보자

( 편하게 ctrl + 좌클릭 도 가능하다 )

그러면 이제 xx_hal_어쩌구 저쩌구 이런 파일이 열리고 해당 함수로 이동하는데, 

주석이 잘 달려있으니까, 남이 짠 코드는 주석 읽어보는 습관을 가지도록 하자 

 

위 코드처럼 LED를 Toggle 시켜주도록 입력해주고 실행해보자!

( HAL_Delay(1000)은 1000만큼 기다려라는 이야긴데, 이게 1000ms는 꼭 아닐것이다.  나중에 알아봐야지 )

 

보드위에 led가 점멸할것이다.