/* * 主机侧单测桩:adc.h * 模块功能:为 App/algo/adc_input.c 提供主机可编译的 STM32 ADC1 句柄与 HAL 接口 * 声明(真实 Inc/adc.h 会经 main.h 拖入整套 HAL,主机侧无法编译)。 * * ⚠ 仅供 test/host/adc_input/ 使用,不参与 MCU 构建。 * * 保真点:F4 HAL 的 ADC_CHANNEL_x 宏值**即通道号 x**(0..15),本桩按此定义, * 故被测代码里 `(uint8_t)ADC_CHANNEL_14` 得到 14 —— 与真机一致。 * 另声明 4 个 HAL_ADC_* 接口,由测试单元给强符号桩(可注入失败/超时/返回值)。 * * 创建日期:2026-10-10 */ #ifndef ADC_H #define ADC_H #include /* HAL 状态码(与 stm32f4xx_hal_def.h 同值,仅取被测代码用到的子集) */ typedef enum { HAL_OK = 0x00, HAL_ERROR = 0x01, HAL_BUSY = 0x02, HAL_TIMEOUT = 0x03 } HAL_StatusTypeDef; /* ADC 句柄:被测代码只把 &hadc1 透传给 HAL 接口,从不读其字段,故为不透明占位 */ typedef struct { uint32_t reserved; } ADC_HandleTypeDef; extern ADC_HandleTypeDef hadc1; /* ADC 通道宏(F4:宏值 = 通道号) */ #define ADC_CHANNEL_0 (0x00000000U) #define ADC_CHANNEL_1 (0x00000001U) #define ADC_CHANNEL_2 (0x00000002U) #define ADC_CHANNEL_3 (0x00000003U) #define ADC_CHANNEL_4 (0x00000004U) #define ADC_CHANNEL_5 (0x00000005U) #define ADC_CHANNEL_6 (0x00000006U) #define ADC_CHANNEL_7 (0x00000007U) #define ADC_CHANNEL_8 (0x00000008U) #define ADC_CHANNEL_9 (0x00000009U) #define ADC_CHANNEL_10 (0x0000000AU) #define ADC_CHANNEL_11 (0x0000000BU) #define ADC_CHANNEL_12 (0x0000000CU) #define ADC_CHANNEL_13 (0x0000000DU) #define ADC_CHANNEL_14 (0x0000000EU) #define ADC_CHANNEL_15 (0x0000000FU) HAL_StatusTypeDef HAL_ADC_Start(ADC_HandleTypeDef *hadc); HAL_StatusTypeDef HAL_ADC_PollForConversion(ADC_HandleTypeDef *hadc, uint32_t Timeout); uint32_t HAL_ADC_GetValue(ADC_HandleTypeDef *hadc); HAL_StatusTypeDef HAL_ADC_Stop(ADC_HandleTypeDef *hadc); #endif /* ADC_H */