/** * @file sys/initial.h * @brief 系统服务与平台支持源文件 * @note 本文件仅补充 Doxygen 文档注释,不改变代码逻辑。 */ #ifndef _INITIAL_H #define _INITIAL_H #ifdef __cplusplus extern "C" { #endif #include "config.h" #include "gd32c10x_eval.h" #include #include // 任务标志定义 /** * @brief 匿名枚举 枚举定义 */ 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; /** * @brief rcu_config 函数 * @return void */ void rcu_config(void); static volatile uint32_t timer_delay_count = 0; // volatile 很重要! /** * @brief fputc 函数 * @param[in] ch 参数 * @param[in] f 参数 * @return int 返回值 */ int fputc(int ch, FILE *f); // 声明fputc函数以重载标准库实现 /** * @brief 初始化 USART0 调试串口 * @return u8 返回值 */ u8 USART0_init(void); /** * @brief 初始化独立看门狗 * @param[in] time 参数 * @return u8 返回值 */ u8 watchdog_init(u32 time); /** * @brief 获取复位原因 * @return u16 返回值 */ u16 get_reset_cause(void); /** * @brief 初始化未使用引脚状态 * @return void */ void unused_pin_init(); /** * @brief 初始化 OTA 与 A/B 分区状态 * @return void */ void OTA_initial(void); // 任务管理结构 typedef struct { volatile u32 taskFlags; // 任务标志位(每个位代表一个任务) } TaskScheduler; // 版本管理类 /** * @brief VersionManager 类或结构体 */ class VersionManager { public: // 版本信息结构体 typedef struct { u16 major; u16 minor; u16 patch; u16 build; } VersionInfo; // 构造函数 VersionManager(); // 获取软件版本 /** * @brief 获取 getSoftwareVersion 对应的数据或状态 * @return VersionInfo 返回值 */ VersionInfo getSoftwareVersion() const; // 获取硬件版本 /** * @brief 获取 getHardwareVersion 对应的数据或状态 * @return VersionInfo 返回值 */ VersionInfo getHardwareVersion() const; // 获取BOOT版本 /** * @brief 获取 getBootVersion 对应的数据或状态 * @return VersionInfo 返回值 */ VersionInfo getBootVersion() const; // 设置软件版本 /** * @brief 设置 setSoftwareVersion 对应的参数或状态 * @param[in] major 参数 * @param[in] minor 参数 * @param[in] patch 参数 * @param[in] build 参数 * @return void */ void setSoftwareVersion(u16 major, u16 minor, u16 patch, u16 build); // 设置硬件版本 /** * @brief 设置 setHardwareVersion 对应的参数或状态 * @param[in] major 参数 * @param[in] minor 参数 * @param[in] patch 参数 * @param[in] build 参数 * @return void */ void setHardwareVersion(u16 major, u16 minor, u16 patch, u16 build); // 设置BOOT版本 /** * @brief 设置 setBootVersion 对应的参数或状态 * @param[in] major 参数 * @param[in] minor 参数 * @param[in] patch 参数 * @param[in] build 参数 * @return void */ void setBootVersion(u16 major, u16 minor, u16 patch, u16 build); // 将版本信息转换为字符串 char *versionToString(const VersionInfo &version, char *buffer, size_t bufSize) const; // 打印所有版本信息 /** * @brief printVersions 函数 * @return void */ void printVersions() const; // 通过CAN发送版本信息 /** * @brief sendVersionInfoViaCan 函数 * @return void */ void sendVersionInfoViaCan() const; private: VersionInfo softwareVersion; VersionInfo hardwareVersion; VersionInfo bootVersion; }; #ifdef __cplusplus } #endif #endif