STM32CubeIDE 기능, 규약

YUN·2025년 8월 15일

[기본적인 CS]

목록 보기
8/21

1. 상단 바

왼쪽에서부터 순서대로 저장, 빌드, 디버그, 실행 버튼이다.

2. main.c

Core-Src-main.c 는 실제로 내가 STM32에 올라갈 프로그램을 짜는 파일이다.

코딩을 할때에도 규칙이 존재한다.

1. BEGIN 과 END 사이에만 코드를 넣어야한다.

위와 같이

/* USER CODE BEGIN Includes */

/* USER CODE END Includes */

이런식으로 주석이 달려있다.

BEGIN-END 영역 안에서만 사용자가 코딩을 해야한다.

저 영역 밖에다가 코딩하면 전부 CubeMX가 코드 Generate 하는 과정에서 무시되버린다.

BEGIN-END 영역은 안의 내요 지우지 않도록 보존해주는 일종의 안전지대이다.

2. 코드마다 어디에 넣어야할지 약속이있다.

위의 약속을 꼭 지켜야되고 그런건 아니지만, 그냥 이런식으로 규약이 존재한다.

(1) Private include

#include "stdio.h"
#incldue "string.h"

같은 include문을 넣어야한다.

(2) Private typedef

typedef struct Books {
  char title[30];
  int book_id;
} Book;

같은 typedef 문을 넣어야한다.

(3) Private define

#define sensor 6

같은 define 문을 넣어야한다.

(4) Private macro

#define Z Y+X*3

같은 define 문을 넣어야한다.

(5) Private variables

int count=0;

같은 변수 선언 및 초기화 코드를 넣어주면된다.

(6) Private function prototype

void init_myFunction(void);

처럼 내가 만들 함수의 선언부(프로토타입)을 넣어준다.

(7) Private user code

void My_LED_Blink(void)
{
    HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13);
    HAL_Delay(500);
}

처럼 내가 만든 함수의 실제 구현부를 넣어준다.

(8) CODE BEGIN 1 - CODE END 1

아주 초기에 필요한 전역 변수 선언, 상수 정의, 외부 장치 초기값 세팅 코드를 넣어준다.

HAL_Init() 전이므로 HAL_Init()이 필요없는 코드만 넣을 수 있다.

(9) CODE BEGIN Init - CODE END Init

시스템 전반 변수 초기화나 메모리 관련 작업 가능

아직 클럭 세팅 전이므로, 고속 타이머/통신 속도 관련 함수는 사용 X

(10) USER CODE BEGIN SysInit - USER CODE END SysInit

이제 시스템 클럭이 세팅됨

관련 기능 넣을 수 있음

(11) USER CODE BEGIN 2 - USER CODE END 2

메인 루프(while(1)) 들어가기 전에 1회만 실행할 초기화 코드

(12) USER CODE BEGIN 3 - USER CODE END 3

이 부분은 아두이노에서 loop에 해당하는 부분이다.

즉, 주로 코딩할 부분이다.

profile
안녕하세요. 전자공학부 학부생의 공부 기록입니다.

0개의 댓글