일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 문제해결능력
- 매일매일NCS
- 토익 영단어
- NCS수리자료해석
- 수리능력
- BOJ
- 자바스크립트
- TOEIC문법
- 토익단어
- 데이터베이스
- BFS
- dfs
- 영어문장
- 너비우선탐색
- 영문법
- TOEIC Vocabulary
- 영단어
- TOEIC
- 토익시험준비
- 토익문법정리
- sqld
- 자료해석
- 알고리즘
- 토익문법노트
- 브루트포스
- 영단어암기
- 파이썬
- 공기업공부
- 다이나믹프로그래밍
- 주어
- Today
- Total
하나씩 알아가기
[임베디드] LED 깜빡이기 본문
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초 간격으로 깜빡 거리는 것을 확인할 수 있습니다.
'임베디드' 카테고리의 다른 글
[임베디드] 오실로스코프로 신호 측정 (0) | 2021.03.25 |
---|---|
[임베디드] KEIL uVision5에서 프로젝트 생성하기 (0) | 2021.03.23 |
[임베디드] c 파일, i 파일, s 파일, o 파일(C 파일의 빌드 과정) (0) | 2021.03.22 |
[임베디드] JTAG, JLINK란 무엇인가 (0) | 2021.03.22 |
[임베디드] STM32F103RC (0) | 2021.03.22 |