#include "can_config.h" // 初始化静态成员变量 CanConfig* CanConfig::instance = nullptr; osMutexId_t CanConfig::mutex = nullptr; class CanConfigHelper { public: CanConfigHelper() { osMutexAttr_t attr; attr.name = "CanConfigMutex"; attr.attr_bits = 0U; attr.cb_mem = nullptr; attr.cb_size = 0U; // attr.stack_mem = nullptr; // attr.stack_size = 0U; // attr.priority = osPriorityNormal; CanConfig::mutex = osMutexNew(&attr); if (CanConfig::mutex == nullptr) { // 处理互斥锁创建失败的情况 } } ~CanConfigHelper() { if (CanConfig::mutex != nullptr) { // 释放互斥锁 osMutexDelete(CanConfig::mutex); CanConfig::mutex = nullptr; } } }; CanConfigHelper can_config_helper; // 私有构造函数实现 CanConfig::CanConfig() : can_frame_id(0) { } // 静态方法,获取单例实例 CanConfig* CanConfig::getInstance() { // 双重检查锁定,提高性能 if (instance == nullptr) { // 获取互斥锁 osMutexAcquire(mutex, osWaitForever); if (instance == nullptr) { instance = new CanConfig(); } // 释放互斥锁 osMutexRelease(mutex); } return instance; } // 设置 CAN 帧 ID void CanConfig::setCanFrameId(uint32_t id) { can_frame_id = id; } // 获取 CAN 帧 ID uint32_t CanConfig::getCanFrameId() const { return can_frame_id * CAN_FRAME_RANGE; }