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을 넣으면 켜짐


'임베디드' 카테고리의 다른 글
[오제이 튜브의 임베디드 강의] 8강. GPIO제어 고아먹기 (0) | 2025.01.07 |
---|---|
[오제이 튜브의 임베디드 강의] 7강. GPIO제어 부셔먹기 (0) | 2025.01.06 |
[오제이 튜브의 임베디드 강의] 6강. 혼자서 임베디드 고수 되는 방법 (0) | 2025.01.06 |
[오제이 튜브 임베디드 강의] 4강. 전기 기본 상식 (1) | 2025.01.01 |
[오제이 튜브의 임베디드 강의] 3강. 실무자는 어떻게 칩을 고르나요? (0) | 2025.01.01 |