2026-05-10 17:28:14 +08:00
|
|
|
|
#ifndef SYS_INITIAL_H
|
|
|
|
|
|
#define SYS_INITIAL_H
|
|
|
|
|
|
|
2026-07-17 02:03:00 +08:00
|
|
|
|
#include <stdint.h>
|
|
|
|
|
|
#include <stdbool.h>
|
|
|
|
|
|
|
2026-05-10 17:28:14 +08:00
|
|
|
|
/**
|
2026-07-17 02:03:00 +08:00
|
|
|
|
* @brief 应用初始化器:按固定顺序启动模块,成功位置 1,末尾汇总。
|
2026-05-10 17:28:14 +08:00
|
|
|
|
*/
|
|
|
|
|
|
class AppInitializer {
|
|
|
|
|
|
public:
|
2026-07-17 02:03:00 +08:00
|
|
|
|
/** 启动模块位(成功置 1) */
|
|
|
|
|
|
enum ModuleBit : uint32_t {
|
|
|
|
|
|
kNvic = 1u << 0,
|
|
|
|
|
|
kSysTick = 1u << 1,
|
|
|
|
|
|
kEsp32Hold = 1u << 2,
|
|
|
|
|
|
kUsart0 = 1u << 3,
|
|
|
|
|
|
kAdc = 1u << 4,
|
|
|
|
|
|
kCanFd = 1u << 5,
|
|
|
|
|
|
kOtaBootReq = 1u << 6,
|
|
|
|
|
|
kAppSpi = 1u << 7,
|
|
|
|
|
|
kTaskManager = 1u << 8,
|
|
|
|
|
|
kScheduler = 1u << 9,
|
|
|
|
|
|
kEthercat = 1u << 10,
|
|
|
|
|
|
kEthercatSync = 1u << 11,
|
|
|
|
|
|
kWatchdog = 1u << 12,
|
|
|
|
|
|
};
|
|
|
|
|
|
|
2026-05-10 21:27:51 +08:00
|
|
|
|
/**
|
2026-07-17 02:03:00 +08:00
|
|
|
|
* @brief 按固定顺序完成模块初始化(过程只置位,结束统一报告成败/失败模块)。
|
2026-05-10 21:27:51 +08:00
|
|
|
|
*/
|
2026-05-10 17:28:14 +08:00
|
|
|
|
static void init();
|
2026-07-17 02:03:00 +08:00
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
static uint32_t s_mask;
|
|
|
|
|
|
|
|
|
|
|
|
static void mark(ModuleBit b);
|
|
|
|
|
|
static void report();
|
2026-05-10 17:28:14 +08:00
|
|
|
|
};
|
|
|
|
|
|
|
2026-07-17 02:03:00 +08:00
|
|
|
|
#endif /* SYS_INITIAL_H */
|