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개의 댓글