STM32F4 사용자를 위한 CPP 라이브러리인 libtwlab_stm32f4.a는 root 영역을 포함 총 5개의 영역으로 구성되어 있다. 본 포스트에서는 각 폴더에 포함된 헤더 파일을 설명하고 각 파일에서 제공하는 기본 기능에 대해서 상세하게 서술한다.

라이브러리 위치: https://github.com/twarelab/STM32F4_CPP_Library

폴더 구성

libtwlab_stm32f4.a는 twarelabType.h 파일과 BaseClass/, Common/, ExtendedClass/, UBoot/ 등 4개의 폴더로 구성되어 있다.

twarelabType.h

이 헤더 파일은 라이브러리의 최상위 헤더 파일로써 이 라이브러리 전역에서 사용하게 되는 각종 Define 선언과 사용 편의를 위한 구조체 선언, enumulate 선언 등을 포함하고 있다.

BaseClass

BaseClass 폴더는 각각의 Peripheral에 대한 제어를 encapsulate한 Peripheral Class를 포함하고 있다.

Peripheral 지원 Class

현재 지원하는 Peripheral은 ADC, GPIO, I2C, SPI, Timer, UART이며 각각 BaseADC, BaseGPIO, BaseI2C, BaseSPI, BaseTimer, BaseUART로 encapsulation 되어 있다.

Class Name Description STMLibrary
BaseGPIO GPIO 제어를 위한 변수와 멤버함수를 가지고 있음. LL Driver Base
BaseTimer Timer 인터럽트에 연동해서 지정 시간 경과를 처리하기 위한 클래스 LL Driver Base
BaseUART UART 제어를 위한 클래스로 DMA 기반으로 동작하는 구성 LL Driver Base
BaseADC ADC 제어를 위한 클래스로 12bit 값과 전압 변환값을 추출할 수 있음. LL Driver Base
BaseI2C I2C 제어를 위한 클래스로 현재는 EEPROM 읽고 쓰기에 맞춰져 있음. HAL Driver Base
BaseSPI SPI 제어를 위한 클래스로 DMA 기반으로 동작하는 구성 LL Driver Base

기타 Class

Class Name Description
BaseQueue Data Buffer 관리를 위한 클래스
BaseTask 기능 처리를 위한 관리 단위인 Task용 클래스
BaseCmdTask Task중 AT Command와 같이 데이터 Parsing이 필요한 Task용 클래스

각 클래스별 멤버 변수와 멤버 함수에 대한 상세 설명은 위 라이브러리 링크인 Github 페이지를 참조하면 된다.

Common

Class Description
ConsoleTask Console용 UART 포트로 디버그 메시지를 출력하기 위한 Task
TaskManager 여러 Task들을 등록시켜서 Task들을 순차적인 수행을 관리하는 Manager
TimerManager 각 Task에 포함된 BaseTimer 객체 상태를 관리하는 Manager
FieldInfo EEPROM내 각 필드의 위치와 길이를 관리하기 위한 Class
FlashHandler MCU내의 Flash 영역에 대한 Operation을 수행하는 Class
crc16 Byte Array에서 CRC16값을 계산하는 함수 포함
crc32 Byte Array에서 CRC32값을 계산하는 함수 포함
jtag MCU내의 JTAG_ID값을 읽어내는 함수 포함

ExtendedClass

Class Description
BpUART BaseUART에서 상속받은 클래스로 두개의 UART간에 TX<->RX를 Swap하는 용도
ATCmdTask AT Command 처리시에 필요한 기능을 포함하고 있는 Task Class

UBoot

Class Description
STM32UBoot STM32 UBoot 프로토콜을 구현한 Class


0개의 댓글

답글 남기기

Avatar placeholder

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

ko_KRKorean