주요 내용으로 건너뛰기

1. Create Project

개요

이 섹션에서는 STM32CubeMX를 사용해 특정 MCU에 대한 작업 프로젝트를 생성해보겠습니다. 이 프로젝트는 이 입문 가이드에 나와 있는 나머지 단계들의 토대가 됩니다.

향후 단계에서는 STM32CubeMX를 사용해 프로젝트를 개선하고, 필요한 모든 주변 장치가 작동하도록 코드를 작성 및 통합할 것입니다.

이 프로젝트는 장기간 지속 및 유지될 것입니다. 이전 단계로 돌아가서 다시 실행할 수 있도록 서로 다른 버전의 가용성을 유지하기 위한 전략을 이 단계에서 결정해야합니다. 새 하드웨어 사용이나 하드웨어 재점검 중 한 가지 방법을 선택합니다.

소규모 테스트 프로그램이 다수 필요할 수 있습니다. 이러한 경우에는 이 프로젝트가 좋은 시작점이 되어 줄 것입니다.

목표

보드에 플래싱해서 실행할 수 있는 프로젝트를 STM32CubeMX에 생성하는 것이 목표입니다. 디버거 기능을 갖춘 IDE(예: STM32CubeIDE 또는 IAR Embedded Workbench)가 있는 경우에는 MCU에서 프로젝트를 디버깅 및 스텝 디버깅을 할 수 있는지도 확인해야 합니다.

디버거가 없는 경우에는 프로젝트의 각종 위치에서 디버깅 명령문을 출력할 방법을 찾아야 합니다. 예를 들면 시리얼 포트를 통해 출력할 수 있습니다.

확인

다음은 이 섹션에서 확인해야 할 사항입니다.

확인사항확인근거
프로젝트가 IDE에서 열림STM32CubeMX에서 프로젝트가 올바르게 생성되었기 때문에 추가적인 보드 브링업 개발을 위한 시작점으로 사용할 수 있습니다.
프로젝트 컴파일프로젝트는 드라이버에서 올바르게 설정이 되었으며 경로를 포함하고 있습니다. 코드를 추가로 작성하고 프로젝트를 반복적으로 재컴파일할 수 있습니다.
중단점에 도달했는지 여부프로젝트는 디버깅이 가능하며, 중단점에서 멈추게 됩니다. 프로젝트 상태를 검토하여 오류를 조사할 수 있습니다.

전제 조건

다음은 이 단계에 대한 전제 조건입니다:

  • STM32 기반 보드
  • 프로그래밍/디버깅 인터페이스(ST-LINK, JLINK 등)
  • STM32CubeMX 설치
  • IDE 설치(STM32CubeIDE, IAR Embedded Workbench, Keil uVision 등)

실행

이제 STM32CubeMX에서 새 프로젝트를 생성하는 단계들에 대해 살펴보겠습니다. 이 예제에서는 STM32F429 MCU를 사용합니다. 물론 하드웨어에서 MCU를 선택해야 합니다.

STM32CubeMX의 "Start My Project from MCU"에서 "ACCESS TO MCU SELECTOR"를 클릭합니다.

새 프로젝트 생성

STM32 평가 키트(예: STM32F429 Discovey 보드)를 기반으로 새 프로젝트를 시작할 수도 있습니다. 하드웨어가 평가 키트 중 하나를 기반으로 설계된 경우에는 이것이 가능합니다.

그런 다음 해당 MCU를 선택합니다. 여기서는 STM32F429ZIT6U를 선택했습니다.

MCU 선택

"Project Manager" 탭으로 이동하여 프로젝트에 이름을 지정합니다. 물론 새 프로젝트의 위치도 선택할 수 있습니다. "Application Structure"로 가서 "Advanced"를 선택합니다. 그리고 "Toolchain / IDE"로 가서 IDE를 선택해야 합니다. 이 예제에서는 IAR을 선택했습니다:

프로젝트 이름 및 IDE 설정

오른쪽 상단 모서리의 "Generate Code" 버튼을 클릭합니다. 선택한 MCU 제품군(F4/F7/H7)에서의 첫 번째 프로젝트인 경우, STM32CubeMX는 해당되는 STM32Cube 펌웨어 패키지를 다운로드할 것으로 자동으로 제안합니다. 추후 사용을 위해 최신 버전을 다운로드하도록 이를 수락하십시오.

STM32CubeMX는 STM32Cube 펌웨어를 다운로드할 수 있습니다.

"Open Project"를 클릭하여 IDE에서 프로젝트를 엽니다:

프로젝트 생성됨

IAR Embedded Workbench에서 프로젝트 열기

STM32CubeMX에서 생성된 프로젝트에는 MCU 고유의 스타트업 코드, 인터럽트 테이블, 시스템 초기화 코드, MCU의 모든 주변 장치에 대한 HAL 드라이버가 포함되어 있습니다.

이제 IDE에서 프로젝트를 컴파일 및 디버깅할 수 있습니다. IAR에서 Project->Make를 클릭하여 프로젝트를 컴파일하고, Project->Download and Debug를 클릭하여 프로젝트를 디버깅합니다.

IAR Embedded Workbench에서 프로젝트 디버깅

IAR 프로젝트는 STLink 디버거를 사용하도록 설정됩니다. 다른 것을 사용하고 있는 경우에는 IDE의 프로젝트에 대한 Debugger 속성을 변경하십시오.

메인 루프가 연속적으로 실행 중

While 메인 루프는 일반적으로 운영 체제 없이 실행 중인 프로젝트에 중요합니다. 중단점을 설정하여 도달 여부를 확인하고 루프에 코드를 일부 추가할 수 있습니다.

IDE에서 프로젝트를 살펴보면서 구조를 익히는 것이 좋습니다. 그리고 SystemInit에서 메인 루프까지 살펴보십시오.

사용자 코드 선택

이 단계에서는 프로젝트 편집을 시작하기 앞서 STM32CubeMX에서 사용되는 "User Code 섹션"의 개념을 이해하는 것이 중요합니다. 프로젝트의 Core/Src 폴더에 있는 모든 소스 파일은 STM32CubeMX에서 생성된 것입니다. 예를 들어 UART 활성화를 위해 나중에 STM32CubeMX에서 프로젝트 구성을 변경할 때 이러한 파일 중 일부가 다시 생성됩니다. 이들 중 일부 파일에는 삽입된 코드가 있을 수 있습니다. 단일 규칙을 따르지 않는 한, STM32CubeMX에서 프로젝트가 다시 생성될 때 코드가 손실됩니다.

  • User Code 섹션에서만 코드 작성

User Code 섹션 밖에서 작성하는 모든 코드는 STM32CubeMX에 의해 삭제됩니다.

한 예로 Core/Src/main.c의 첫 행을 몇 줄 살펴보겠습니다:

main.c
int main(void)
{
/* USER CODE BEGIN 1 */

/* USER CODE END 1 */


/* MCU Configuration--------------------------------------------------------*/

/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
...
}

메인 함수가 시작될 때 여기에 코드를 삽입하려는 경우에는 USER CODE BEGIN 1과 USER CODE END 1 사이에 배치해야 합니다. 이 블록 밖에 코드를 배치하면 STM32CubeMX에 의해 삭제됩니다.

Caution
User Code 섹션 밖에서 코드를 작성해서는 안 됩니다. 이러한 코드는 STM32CubeMX에서 코드가 생성될 때 삭제됩니다.

추가 자료

여기에 링크된 문서들에는 CubeMX에 대한 자세한 정보가 포함되어 있습니다: