STM32CubeIDE에서 NUCLEO-F103RB 보드를 컨트롤해 파형을 출력하고 해당 파형을 찍어봤습니다.
STM32CubeIDE을 이용한 개발 환경 구성부터, ioc(input/output configuration)에서 GPIO 설정, GPIO부터 나오는 파형을 Logic Analyzer로 찍는 것을 다룹니다.
제가 참고한 자료들의 링크를 첨부하니 참고하시길 바랍니다.
목차
- 하드웨어 및 개발 환경
- LED Control
- GPIO Control로 파형 찍기
하드웨어 및 개발 환경
LED Control
환경을 구성하면 맨 처음 [project 이름].ico에서 아래와 같은 화면이 나옵니다.
PA5에 LD2 [Green Led]가 있습니다.
schematic을 보면 PA5와 LD2가 연결되어 있는 것이 보입니다.
가장 초기 상태에서 main.c를 들어갑니다. int main의 while문에서 아래의 코드를 써줍니다.
// line 103 ~ 104
HAL_GPIO_TogglePin(LD2_GPIO_Port, LD2_Pin); // LED 상태 변경
HAL_Delay(500); // 500ms (0.5초) 대기
Project에 우클릭한 후 Build_Project를 해줍니다.
Build란 소스 코드를 실행 가능한 바이너리 파일로 변환하는 것입니다.
그리고 아래의 Run을 클릭해 줍니다.
아래 영상은 Build와 Run을 실행 후 터미널과 보드에서 나타나는 결과물입니다.
Build 성공 후 Run을 실행할 때 왼쪽 Red LED가 점멸되다가 완료되면 빨간색이 됩니다.
이후 가운데 초록색 LED가 0.5초 간격으로 깜빡입니다.
GPIO Control로 파형 찍기
STM32CubeIDE에서 LED 환경 구성 시 참고한 자료 :
https://mokhwasomssi.tistory.com/213
NUCLEO-F103RB로 STM32CubeIDE 시작하기 3
STM32CubeIDE 처음 사용하는 사람을 대상으로 작성하였습니다. 개발환경 : STM32CubeIDE 개발보드 : NUCLEO-F103RB 목표 : 내장 led 제어, UART로 문자열 출력. 목차 NUCLEO-F103RB로 STM32CubeIDE 시작하기 1 0. 서론 1.
mokhwasomssi.tistory.com
아래의 보드에서 해당하는 부분의 오른쪽 Pin에 GPIO out을 설정해 전압을 출력할 것입니다.
Schematic에서 PC8입니다.
ioc에서 PC8에 GPIO_Output을 설정하고 저장하면 아래와 같이 코드를 생성하겠냐는 메시지가 나오고, yes를 눌러줍니다. 그다음 메시지도 Yes를 눌러줍니다.
이제 아래의 코드를 씁니다. PC8을 사용했기 때문에 GPIOC, GPIO_PIN_8입니다.
// line 103부터
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_8, GPIO_PIN_RESET); // 끄고
HAL_Delay(100); // 100ms 딜레이
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_8, GPIO_PIN_SET); // 키고
HAL_Delay(100); // 100ms 딜레이
아까의 Schematic에서 본 위치대로 Detecting용 핀을 꽂은 다음 Build와 Run을 수행하면
아래처럼 해당 Pin의 전압이 찍히는 것을 볼 수 있습니다.
눈금이 0.1s(100ms)인데 위상차가 살짝 나는 것을 보실 수 있습니다.
만약 정확하게 0.1s였다면 파형 모두 동일한 위상차를 갖고 있을 것입니다.
하지만 파형이 다르다는 것은 정확하게 0.1s가 아니라는 뜻입니다.
이는 CPU에서 Bus를 타고 GPIO Pad에 전달하기까지 시간 지연이 발생하기 때문입니다.
지금은 Pin Control을 보기 위해서 GPIO를 사용했고 시간 지연이 발생하기 때문에 GPIO를 사용하지 않습니다.
여기까지 STM32 CubeIDE와 NUCLEO-64bit 보드를 바탕으로 다뤄봤습니다.
2025/02/18 ver 0
'Electrical Study' 카테고리의 다른 글
STM32CubeIDE UART사용해 printf 출력 세팅 파헤치기 (0) | 2025.02.20 |
---|---|
STM32CubeIDE UART 사용해 printf 출력하기 (0) | 2025.02.18 |
STM Project 사용된 하드웨어 및 개발 환경 (0) | 2025.02.18 |
RS Latch과 Level Trigger(레벨 트리거)를 포함해 한 번에 제대로 설명한 Edge Trigger(에지 트리거)의 동작 원리 (2) | 2023.12.29 |
제일 쉽게 I2C를 알아보자 (3) | 2023.11.20 |