STM32CubeIDE 프로젝트 생성 및 UART 출력 코드 실행
본문 바로가기
펌웨어/ST

STM32CubeIDE 프로젝트 생성 및 UART 출력 코드 실행

by Macgyvering2 2023. 10. 6.

개요

이번에는 STM32CubeIDE에서 프로젝트를 만드는 방법에 대한 방법이다.

프로젝트 생성

로그인

상단의 myST - Login 클릭

 

 

이 창에 로그인을 해줘야 아래 진행할 예제에서 적절한 패키지를 받을 수 있게 된다.

 

프로젝트 생성

File - New - STM32 Project를 클릭한다.

 

 

처음 실행하면 다음의 창과 같이 뭔가를 다운로드 받는 작업을 해줘야 할 수 있다. 조금 기다리면 완료된다.

 

 

완료되면 다음의 창이 뜨게 되는데

 

 

맨 위의 탭을 보면 MCU Selector가 있고, Board Selector가 있다.

MCU는 칩이므로 MCU Selector로 선택하면 되고 개발 보드는 Board Selector로 선택하면 된다.

현재 내가 가진보드는 STM32F0-Discovery 보드이므로 Board Selector를 입력하고 검색을 해보자.

 

 

위 그림처럼 보드가 하나 뜨는데 Mounted Device로 링크된 곳을 클릭하면 MCU 셀렉터로 돌아가기 때문에 클릭하지 말고 표의 빈공간을 클릭하면 다음과 같이 다음으로 넘어갈 수 있게 된다.

 

 

Next 클릭

 

 

프로젝트 이름을 잘 입력한 후 일단 다른 것은 건드리지 않고 Finish를 눌러준다.

 

 

 

이런 창이 뜨면 Yes 해준다

 

 

이런 창이 떠도 Yes 해준다.

 

 

이런 식으로 창이 뜨게 된다.

 

UART 코드 생성

위 ioc 파일에서 설정한 값을 ctlr + s를 이용하여 저장하면 설정이 자동으로 반영되어 코드가 생성된다.

예시 검색 창에 USART를 검색해보자.

 

 

다음 그림은 USART2를 검색한 화면이다.

 

 

UART를 사용하기위해서는 USART2를 클릭하고 Mode 탭에서 Disable을 Asynchronous로 바꿔주는 설정을 해줘야 한다.
그리고 Baud Rate 38400으로 되어 있는데 115200으로 사용할 것이기에 바꿔주었다.
그러면 다음 그림과 같이 별표 표시로 저장이 안된 것이 보일 것이다.

ctrl + s 를 눌러서 저장을 하게 되면 다음 그림과 같이 프로젝트 탐색 창과 소스코드 창이 보이게 된다.

 

 

main.c가 자동으로 열렸는데 이는 다음 경로에 있으니 참고하면 된다.

 

 

main.c 파일을 살펴보면 UART 관련 코드가 자동으로 생성되었음을 확인할 수 있다.

 

 

이대르 그냥 빌드해보자.
Visual Studio 설정을 하였다면 ctrl + F5로 실행할 수 있다.

 

 

OK를 누르면 빌드가 된다.

오류없으면 성공적으로 빌드 된 것이다.
그러나 당연하게도 출력 결과가 아무것도 나지 않는다.
아무것도 해주지 않았으니까.

이제 다음의 코드를 추가해서 작성해본다.
당연히 작업할 파일은 main.c이다.

 

먼저 USER CODE BEGIN Includes 아래에 stdio.h 헤더 파일을 추가해준다.

/* USER CODE BEGIN Includes */
#include <stdio.h>
/* USER CODE END Includes */

 

그리고 다음은 while 무한 루프 부분을 다음과 같이 수정해준다.

/* USER CODE BEGIN WHILE */
char my_str[20] = "Hello World!\r\n";

while(1) {
    HAL_UART_Transmit(&huart2, my_str, strlen(my_str), 1000);
    HAL_Delay(1000);
}
/* USER CODE END 3 */

 

여기서 huart2는 우리가 ioc파일에서 UART 셋팅할 때 자동으로 생성된 변수 핸들이다.
HAL_UART_trasnmit() 함수는 다음의 인자를 갖는다.

  • UART 핸들의 주소
  • 전송할 데이터(여기서는 문자열)의 포인터
  • 전송할 바이트 수(여기서는 문자열의 바이트 수)
  • 타임아웃 시간, 만약 1000ms 내에 전송이 완료되지 않으면 함수는 타임아웃으로 반환된다.

 

이제 실행을 해주고 오류가 없다면 데이터를 보내고 있는 상태가 된 것이다.

 

Putty 설정

하드웨어 연결

여기서는 CP2102 장치를 이용해 직접 연결하였다.
연결은 CP2102의 Tx 선은 PA3인 Rx 핀에, Rx 선은 PA2인 Tx 핀에 연결하였다.
그리고 접지가 맞아야 하기 때문에 GND 선끼리 연결하였다.

 

 

장치 관리자 확인

 

COM6에 연결된 것을 확인할 수 있다.

 

Putty 실행 및 연결

Putty에 접속하여 다음과 같이 설정 후 연결을 해본다.

 

 

결과

 

1초 마다 Hello World!를 출력하는 것을 확인할 수 있다.

댓글