696a1a49a9
新增 App/algo/adc_input.c 的主机侧单测(L1),补齐 L1/L2 算法层
"每个函数都可离线验证"的最后一处空白。
- test/host/adc_input/{adc_input_test.c,run_unit_test.py,stub/}:
70 个用例,覆盖 6 个公开函数 + map_check + stm32_scan。
关键判据 = "通道号 <-> Rank 顺序 <-> 语义"三者映射:给每个 Rank
注入互不相同的码值,逐通道钉死映射(板端无信号源,无法验此项)。
另钉死 HAL 启动失败 / 轮询超时 / 参数错 / 无有效数据等分支。
- .pre-commit-config.yaml:登记 phasor-unit-test(7d)与
adc-input-unit-test(7e)两个主机侧单测钩子。
主机侧全套:adc_input 70/70、phasor 52/52,均 0 失败、无 /W4 告警。
59 lines
2.0 KiB
C
59 lines
2.0 KiB
C
/*
|
||
* 主机侧单测桩: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 <stdint.h>
|
||
|
||
/* 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 */
|