본문 바로가기
임베디드

[오제이 튜브의 임베디드 강의] 5강. 환경 구축해보기

by 덤더리덤떰 2025. 1. 2.

1. 환경구축
- STM32CubeIDE 설치하여 STM32F103C8T6 칩 선택 후 프로젝트 생성
- ST-LINK 펌웨어 업데이트
 
2. 프로젝트 생성해보기
- 무슨 코딩을 하던 간에 USER CODE BEGIN Includes ~ USER CODE END Incldues 안에 코드를 쓴다 

 
+ 주석은 한글로 달지 않기
 
 
 
 
3. GPIO 제어
- GPIO(General Purpose Input/Output) : 사용자의 의도에 따라 입출력이 제어될 수 있는 범용 입출력 포트로, 
다른 핀들과 달리 특정한 목적이 미리 정의되지 않으며 사용자가 설정하기 전에는 사용 불가능 
 
3-1. D2 LED 깜빡이기

 
 
=> 우리는 보드에서 D2에 있는 LED를 제어하기 위해 PC13의 GPIO 제어
=> 왼쪽 사진의 보드 회로도를 보고 판단 
*PC13 : GPIO 중 GPIOC의 그룹 중 13이라는 번호 가진 PIN
(PXY : P = GPIO Pin, C = GPIO group, 13 : 해당 그룹 내 핀번호)

 
(1) PC13의 GPIO 설정 

 
(2) 위와 같이 User Label을 "GPIO_LED"라고 설정까지 하고 저장하면 알아서 main.c에 MX_GPIO_Init(void) 자동 생성

  • 우리는 while문 내부에 아래 코드만 작성 
  • 두번째 매개변수로는 GPIO_LED_Pin 이나 GPIO_PIN_13을 넣는데 이때 GPIO_PIN_13은 ((uint16_t)0x2000)으로 정의됨
  • 0x2000 : GPIO 13번 Pin을 제어함을 의미 
  • 디버깅을 통해 첫 줄 HAL_GPIO_WritePin에 break point놓으면 D2 LED가 켜지지만 break point해제후 실행하면 0.1초 간격으로 깜빡임

 

 

 
3-2. 스위치 통해 LED 키기 
 

 

  • 이번엔 PA0을 GPIO의 input으로, 아래 사진과 같이 설정
  • 아까와 달리 GPIO_Write가 아닌 GPIO_Read 함수 
  • 주의할 점은, GPIO가 읽었을 때 Low가 1인지 High가 1인지는 회로도에 따라 다름
  • 우리는 0을 넣으면 켜짐