#ifndef __VERSION_H_ #define __VERSION_H_ /** * @file version.h * @brief 版本号管理头文件 * @author Auto-generated * @date 2026-03-28 */ // 软件版本号 #define SOFTWARE_VERSION_MAJOR 0 #define SOFTWARE_VERSION_MINOR 1 #define SOFTWARE_VERSION_PATCH 0 #define SOFTWARE_VERSION_STRING "0.1.0" // 硬件版本号 #define HARDWARE_VERSION_MAJOR 0 #define HARDWARE_VERSION_MINOR 1 #define HARDWARE_VERSION_PATCH 0 #define HARDWARE_VERSION_STRING "0.1.0" // 编译时间相关字段 #define BUILD_DATE __DATE__ #define BUILD_TIME __TIME__ #define BUILD_YEAR (__DATE__[7] == ' ' ? 0 : ((__DATE__[7] - '0') * 1000 + (__DATE__[8] - '0') * 100 + (__DATE__[9] - '0') * 10 + (__DATE__[10] - '0'))) #define BUILD_MONTH ((__DATE__[0] == 'J' && __DATE__[1] == 'a' && __DATE__[2] == 'n') ? 1 : \ (__DATE__[0] == 'F') ? 2 : \ (__DATE__[0] == 'M' && __DATE__[2] == 'r') ? 3 : \ (__DATE__[0] == 'A' && __DATE__[1] == 'p') ? 4 : \ (__DATE__[0] == 'M' && __DATE__[2] == 'y') ? 5 : \ (__DATE__[0] == 'J' && __DATE__[1] == 'u' && __DATE__[2] == 'n') ? 6 : \ (__DATE__[0] == 'J' && __DATE__[1] == 'u' && __DATE__[2] == 'l') ? 7 : \ (__DATE__[0] == 'A' && __DATE__[1] == 'u') ? 8 : \ (__DATE__[0] == 'S') ? 9 : \ (__DATE__[0] == 'O') ? 10 : \ (__DATE__[0] == 'N') ? 11 : 12) #define BUILD_DAY ((__DATE__[4] == ' ' ? 0 : (__DATE__[4] - '0') * 10) + (__DATE__[5] - '0')) #define BUILD_HOUR (((__TIME__[0] - '0') * 10) + (__TIME__[1] - '0')) #define BUILD_MINUTE (((__TIME__[3] - '0') * 10) + (__TIME__[4] - '0')) #define BUILD_SECOND (((__TIME__[6] - '0') * 10) + (__TIME__[7] - '0')) // 版本信息结构体 typedef struct { uint8_t software_major; uint8_t software_minor; uint8_t software_patch; uint8_t hardware_major; uint8_t hardware_minor; uint8_t hardware_patch; char software_version[10]; char hardware_version[10]; char build_date[12]; char build_time[9]; } VersionInfo; // 获取版本信息 #define GET_VERSION_INFO(info) do { (info)->software_major = SOFTWARE_VERSION_MAJOR; (info)->software_minor = SOFTWARE_VERSION_MINOR; (info)->software_patch = SOFTWARE_VERSION_PATCH; (info)->hardware_major = HARDWARE_VERSION_MAJOR; (info)->hardware_minor = HARDWARE_VERSION_MINOR; (info)->hardware_patch = HARDWARE_VERSION_PATCH; strcpy((info)->software_version, SOFTWARE_VERSION_STRING); strcpy((info)->hardware_version, HARDWARE_VERSION_STRING); strcpy((info)->build_date, BUILD_DATE); strcpy((info)->build_time, BUILD_TIME); } while(0) #endif /* __VERSION_H_ */