#ifndef _INITIAL_H #define _INITIAL_H #ifdef __cplusplus extern "C" { #endif #include "config.h" #include "gd32c10x_eval.h" #include #include // 任务标志定义 typedef enum { TASK_MOTOR_CONTROL = 0, TASK_CURRENT_UPDATE, TASK_VELOCITY_UPDATE, TASK_ANGLE_UPDATE, TASK_MCU_TEMP_UPDATE, TASK_DRV_TEMP_UPDATE, TASK_VBUS_UPDATE, TASK_THERMAL_CONTROL, TASK_CAN_TRANSMIT, TASK_MAGNETIC_CHECK, TASK_COUNT } SystemTask; void rcu_config(void); static volatile uint32_t timer_delay_count = 0; // volatile 很重要! int fputc(int ch, FILE *f); // 声明fputc函数以重载标准库实现 u8 USART0_init(void); u8 watchdog_init(u32 time); u16 get_reset_cause(void); void unused_pin_init(); void OTA_initial(void); // 任务管理结构 typedef struct { volatile u32 taskFlags; // 任务标志位(每个位代表一个任务) } TaskScheduler; // 版本管理类 class VersionManager { public: // 版本信息结构体 typedef struct { u16 major; u16 minor; u16 patch; u16 build; } VersionInfo; // 构造函数 VersionManager(); // 获取软件版本 VersionInfo getSoftwareVersion() const; // 获取硬件版本 VersionInfo getHardwareVersion() const; // 获取BOOT版本 VersionInfo getBootVersion() const; // 设置软件版本 void setSoftwareVersion(u16 major, u16 minor, u16 patch, u16 build); // 设置硬件版本 void setHardwareVersion(u16 major, u16 minor, u16 patch, u16 build); // 设置BOOT版本 void setBootVersion(u16 major, u16 minor, u16 patch, u16 build); // 将版本信息转换为字符串 char *versionToString(const VersionInfo &version, char *buffer, size_t bufSize) const; // 打印所有版本信息 void printVersions() const; // 通过CAN发送版本信息 void sendVersionInfoViaCan() const; private: VersionInfo softwareVersion; VersionInfo hardwareVersion; VersionInfo bootVersion; }; #ifdef __cplusplus } #endif #endif