Files
DCU_APP/GD32E508_DCU_APP/sys/initial.h
T

42 lines
1022 B
C++
Raw Normal View History

#ifndef SYS_INITIAL_H
#define SYS_INITIAL_H
#include <stdint.h>
#include <stdbool.h>
/**
* @brief 应用初始化器:按固定顺序启动模块,成功位置 1,末尾汇总。
*/
class AppInitializer {
public:
/** 启动模块位(成功置 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,
};
/**
* @brief 按固定顺序完成模块初始化(过程只置位,结束统一报告成败/失败模块)。
*/
static void init();
private:
static uint32_t s_mask;
static void mark(ModuleBit b);
static void report();
};
#endif /* SYS_INITIAL_H */