/* * 模块名称:主机侧单测桩 - main.h(task_prof 模块专用) * 模块功能:提供 task_prof.c 需要的**四个**平台符号,让 DWT 周期计数器变成 * 测试可控制的量: * SystemCoreClock 测试可写(换算 us 的分母,真机 = 168 MHz) * HAL_GetTick() 测试可控的毫秒时基(report 节流就看它) * DWT->CTRL/CYCCNT 可写内存:CTRL 的 CYCCNTENA 位要能"读回 1", * 否则 task_prof.c 永远认为 DWT 不可用 * CoreDebug->DEMCR 同上(TRCENA 位) * * ⚠ 仅供 test/host/task_prof/ 使用,不参与 MCU 构建。 * 真实 main.h 拉整棵 HAL 头树,主机侧无法编译,故这里只声明被测文件实际用到的 * 那几个符号——**结构体字段名与位掩码宏名必须与 CMSIS 一致**(DWT_Type 的 * CTRL/CYCCNT、DEMCR、DWT_CTRL_CYCCNTENA_Msk、CoreDebug_DEMCR_TRCENA_Msk), * 改了这些名字被测代码会直接编译失败,不会静默放行。 * * 创建日期:2026-10-23 */ #ifndef MAIN_H #define MAIN_H #include typedef struct { volatile uint32_t DEMCR; } tp_coredebug_t; typedef struct { volatile uint32_t CTRL; volatile uint32_t CYCCNT; } tp_dwt_t; extern tp_coredebug_t *const CoreDebug; extern tp_dwt_t *const DWT; #define CoreDebug_DEMCR_TRCENA_Msk (1UL << 24) #define DWT_CTRL_CYCCNTENA_Msk (1UL << 0) extern uint32_t SystemCoreClock; uint32_t HAL_GetTick(void); #endif /* MAIN_H */