주요 내용으로 건너뛰기

Generating Code

이 섹션에서는 STM32CubeMX에서 코드를 생성할 때 TouchGFX Generator에서 출력되는 내용에 대해 설명합니다.

생성된 프로젝트:

TouchGFX와 함께 번들로 제공되고 TouchGFX Designer에서 run target을 누를 때 사용되는 GCC 컴파일러 외에도, TouchGFX는 STM32CubeMX의 Generate Code 버튼을 사용해 코드를 생성할 때 최소한 다음 IDE에서도 작동합니다.

  1. EWARM
  2. MDK-ARM
  3. STM32CubeIDE

최적의 프로젝트 구조를 위해 Project Manager로 이동해서 다음과 같은 프로젝트 생성 옵션을 선택합니다.

  • 애플리케이션 구조: Advanced
  • Generate under root 비활성화(STM32CubeIDE에만 해당)

고급 애플리케이션 구조를 선택하고 루트에서 Generate의 선택을 취소

Generate code 버튼을 클릭하면 STM32CubeMX가 선택한 미들웨어, 유틸리티, 드라이버, 툴체인 등에 대해 몇 가지 일부 코드를 생성합니다.

또한, 다음 구조를 가진 프로젝트 폴더의 루트에 TouchGFX 폴더를 생성합니다.

TouchGFX 폴더 구조

  • App 폴더에는 TouchGFX를 초기화 및 시작하기 위한 코드가 포함되어 있습니다.
  • target 폴더에는 읽기 전용 생성 코드(generated/ 내부)와 수정 가능한 사용자 클래스(STM32TouchController.cpp, TouchGFXGPIO.cppTouchGFXHAL.cpp)가 포함되어 있습니다.
  • TouchGFX Designer로 .part 파일을 열어서 TouchGFX 헤더 파일 및 라이브러리가 포함된 완전한 TouchGFX 프로젝트를 생성할 수 있습니다. .part 파일에는 픽셀 형식 및 캔버스 크기와 같이 TouchGFX Designer가 TouchGFX 애플리케이션 코드를 생성할 때 사용하는 애플리케이션 관련 정보가 포함되어 있습니다.

일단 STM32CubeMX를 통해 코드가 생성되면 TouchGFX Designer로 TouchGFX 프로젝트를 열어서 UI를 개발할 수 있습니다. TouchGFX Designer는 추가로 생성된 코드 파일을 STM32CubeMX의 현재 프로젝트에 대해 선택한 대상 IDE 프로젝트에 자동으로 추가합니다

Further reading
TouchGFX Designer를 사용한 UI 개발에 대한 자세한 내용은 UI Development 섹션을 참조하십시오.

Generated Code Structure

TouchGFX Generator에서 만든 구성에 관계 없이 TouchGFX 폴더에서 항상 생성되는 파일이 있는가 하면, 특정 기능이 활성화/비활성화된 경우에만 파일도 있습니다(예: Video Decoders 또는 Custom DMA2D 클래스). 개발자가 STM32CubeMX에서 코드를 생성할 때마다 생성된 파일의 내용이 업데이트되어 TouchGFX Generator AL 구성의 변경 사항을 반영합니다.

아래 목록은 항상 생성되는 TouchGFX 관련 파일에 중점을 두고 TouchGFX Generator가 활성화된 상태에서 STM32CubeMX 프로젝트의 내용을 개략적으로 보여줍니다.

TouchGFX Folder
│   .mxproject
│ myproject.ioc
├───Core
├───Drivers
├───EWARM
├───Middlewares
└───TouchGFX
│ ApplicationTemplate.touchgfx.part
├───App
│ app_touchgfx.c
│ app_touchgfx.h
└───target
│ STM32TouchController.cpp
│ STM32TouchController.hpp
│ TouchGFXGPIO.cpp
│ TouchGFXHAL.cpp
│ TouchGFXHAL.hpp

└───generated
OSWrappers.cpp
TouchGFXConfiguration.cpp
TouchGFXGeneratedHAL.cpp
TouchGFXGeneratedHAL.hpp

다음 표에는 가장 중요한 항목의 책임이 간략하게 나와 있습니다.

폴더책임
myproject.iocSTM32CubeMX 프로젝트 파일
코어main.c 및 시작 코드
드라이버CMSIS, MCU 제품군 드라이버 및 BSP(Board Support Package)
EWARMIDE 프로젝트 폴더 EWARM, MDK-ARM 또는 STM32CubeIDE
미들웨어TouchGFX 라이브러리/헤더 파일과 FreeRTOS 같은 타사 소프트웨어가 포함되어 있습니다.
ApplicationTemplate.touchgfx.part.part 파일은 STM32CubeMX에의해 TouchGFX Designer 프로젝트와 관련된 정보(예: 화면 크기 및 비트 심도)로 업데이트됩니다.
AppSTM32CubeMX에 대한 X-CUBE 인터페이스 app_touchgfx.c에는 TouchGFX를 초기화하고 메인 루프를 시작하는 데 사용되는 MX_TouchGFX_Process(void)MX_TouchGFX_Init(void) 함수에 대한 정의가 포함되어 있습니다.
target/generated이 하위 폴더에는 구성이 변경될 때 STM32CubeMX에서 덮어쓰기가 되는 읽기 전용 파일이 포함되어 있습니다. TouchGFXGeneratedHAL.cpp는 TouchGFX 클래스 HAL의 하위 클래스이며, 현재 구성을 기반으로 STM32CubeMX가 생성할 수 있는 코드를 포함하고 있습니다. OSWrappers.cpp(OSAL)에는 TouchGFX Engine과 동기화하는 데 필요한 함수가 포함되어 있으며, 마지막으로 TouchGFXConfiguration.cpp에는 HAL을 포함해 TouchGFX를 구축 및 구성하기 위한 코드가 포함되어 있습니다.
targetHAL의 동작을 확장하거나 STM32CubeMX에서 생성된 구성을 재정의하기 위해 사용자가 수정할 수 있는 대량의 파일이 포함되어 있습니다. STM32TouchController.cpp에는 빈 터치 컨트롤러 인터페이스가 포함되어 있습니다. TouchGFXHAL.cppTouchGFXGeneratedHAL의 하위 클래스인 TouchGFXHAL을 정의합니다.

TouchGFXConfiguration.cpp에는 HAL을 구축하는 함수와 TouchGFX의 메인 루프를 시작하는 함수가 포함되어 있다는 것을 알아야 합니다. 편집 가능한 사용자 클래스에서 추가 구성을 수행할 수 있습니다.

Further reading
편집 가능한 사용자 클래스에서 추가 구성을 적용하는 방법은 생성된 동작 수정하기 섹션을 참조하십시오.