하나씩 알아가기

[임베디드] LED 깜빡이기 본문

임베디드

[임베디드] LED 깜빡이기

clearwater 2021. 3. 29. 14:40
728x90
반응형

NUCLEO 보드를 이용하여 LED를 깜빡이는 기능을 만들어 보겠습니다.

 

지난번에 Keil 을 사용했는데 지금부터는 STM32CubeIDE라는 툴을 사용하겠습니다.

 

[Board Selector] 에서 Nucleo64 > STM32F1 > NUCLEO-F103RB 를 선택하여 Next 버튼 클릭하여 프로젝트를 생성해줍니다.

 

Pinout & Configuration의 좌측에 System Core > RCC를 선택합니다.

RCC는 Clock을 컨트롤하는 부분입니다. HSE와 LSE를 모두 Disable 로 설정해 줍시다.

RCC를 설정하였으면 GPIO를 선택합니다. GPIO는 General Purpose Input Output의 약자로 회로의 제어를 위한 PIN으로 사용자가 직접 회로를 구성하는 부분입니다. 기본적으로 LD2와 B1만이 설정된 것을 확인할 수 있습니다. PA5는 보드의 LD2 제어를 위해 출력으로 설정되어 있는 것 입니다.

Clock Configuration 팁으로 가면 방금 전에 HSE를 비활성화 해 주었기에 HSE를 선택할 수 없게 되었고 멀티플렉서가 PLLCLK를 선택하여 HCLK가 64MHz가 되도록 설정되었는 것을 확인할 수 있습니다.

 코드를 생성하기 위해 Project > Generate Code 를 선택합니다(저는 이미 생성해 놓았습니다).

생성된 프로젝트가 정상적으로 빌드되는지를 확인해 보기 위해 Project > Build Project 를 선택하고 정상적으로 빌드가 완료되었는지 확인합니다.

Build Finished. 0 errors, 0 warnings.

문제없이 빌드가 끝났네요.

 

이제 소스 코드를 작성해야 하는데, LED를 깜빡이는 코드는 간단합니다. 간단한 이유가 HAL_Driver에서 제공하는 함수를 사용하기 때문입니다.

 

stm32f1xx_hal.c 에서 제공되는 함수 HAL_GPIO_TogglePin() 함수로 해당 포트의 출력을 껐다 켰다 해줄 수 있고, HAL_Delay() 함수로 딜레이를 줄 수 있습니다(기본단위 마이크로 세컨드-1ms = 0.001초).

main.h에 있는 port와 pin을 알맞게 인자로 넣어주면 LED 토글 기능이 완성됩니다.

딜레이는 3초를 주었습니다.

 

다시 빌드가 성공한 것을 확인합니다.

 

다음에는 타깃 보드에 다운로드하여 실행해 줘야 하는데요.

 

이 NUCLEO 보드에는 ST-Link가 내장되어 있기 때문에 다운로드&실행이 가능합니다.

 

Run > Run 을 선택합니다.

런을 해보면 LD2에 있는 LED가 3초 간격으로 깜빡 거리는 것을 확인할 수 있습니다.

728x90
반응형