typedef struct { uint32 bit0:1; // 表示该字段只占用 1 位 uint32 bit1:1; uint32 bit2:1; uint32 bit3:1; uint32 bit4:1; uint32 bit5:1; uint32 bit6:1; uint32 bit7:1; uint32 bit8:1; uint32 bit9:1; uint32 bit10:1; uint32 bit11:1; uint32 bit12:1; uint32 bit13:1; uint32 bit14:1; uint32 bit15:1; uint32 bit16:1; // 表示该字段只占用 1 位 uint32 bit17:1; uint32 bit18:1; uint32 bit19:1; uint32 bit20:1; uint32 bit21:1; uint32 bit22:1; uint32 bit23:1; uint32 bit24:1; uint32 bit25:1; uint32 bit26:1; uint32 bit27:1; uint32 bit28:1; uint32 bit29:1; uint32 bit30:1; uint32 bit31:1; }ELIC_32BIT_BITS; typedef union ELIC_32BIT { uint32 all; ELIC_32BIT_BITS bits; }ELIC_32BIT_STR; // DO typedef enum { DO_DEFAULT = 0, DO_HIGH = 1, DO_LOW = 2 } DO_CTRL_E; // ADC typedef enum { ADC_DEFAULT = 0, ADC_NTC_4CH = 1, ADC_LIGHT_1CH = 2 } ADC_CTRL_E; // DAC typedef enum { DAC_DEFAULT = 0, DAC_1_25V = 1, DAC_2_5V = 2 } DAC_CTRL_E; // PWM typedef enum { PWM_DEFAULT = 0, PWM_FAN_1K_50 = 1, PWM_FAN_2K_70 = 2, PWM_LIGHT_3K_50 = 3, PWM_LIGHT_5K_70 = 4, PWM_RED_20K_50 = 5, PWM_RED_20K_70 = 6 } PWM_CTRL_E; // PD typedef enum { PD_DEFAULT = 0, PD_BLOCK = 1, PD_UNBLOCK = 2 } PD_CTRL_E; typedef struct { uint32_t do_ctrl : 2; // bit0~1 DO输出(1=高,2=低) uint32_t di_ctrl : 2; // bit2~3 DI检测(1=高,2=低) uint32_t adc_ctrl : 2; // bit4~5 ADC功能选择 uint32_t dac_ctrl : 2; // bit6~7 DAC输出 uint32_t pwm_ctrl : 3; // bit8~10 PWM功能 uint32_t pd_ctrl : 2; // bit11~12 PD测试 uint32_t reserved : 19; // bit13~31 预留 } DEVICE_CTRL_BITS; typedef union { uint32_t all; DEVICE_CTRL_BITS bits; } DEVICE_CTRL_U; /* 测试控制寄存器 */ typedef struct { uint32_t do_test : 2; // bit0~1 uint32_t di_test : 2; // bit2~3 uint32_t adc_test : 2; // bit4~5 uint32_t dac_test : 2; // bit6~7 uint32_t pwm_test : 3; // bit8~10 uint32_t pd_test : 2; // bit11~12 uint32_t ttl_test : 1; // bit13 uint32_t iic_test : 1; // bit14 uint32_t rtc_test : 1; // bit15 uint32_t reserved : 16; // bit16~31 预留 } TEST_STATUS_BITS; typedef union { uint32_t all; TEST_STATUS_BITS bits; } TEST_STATUS_STR; /* 当前测试状态 */ typedef struct { ELIC_32BIT_STR u32_device_cmd_hand; // 手动测试操作指令 ELIC_32BIT_STR u32_device_sts_hand; // 手持测试操作状态 DEVICE_CTRL_U u32_device_ctrl; // 测试控制寄存器 TEST_STATUS_STR u32_device_test_sts; // 当前测试状态 } DEVICE_TEST_OPRATION_T; // 测试结构体 ATTR_PLACE_AT_NONCACHEABLE_INIT_WITH_ALIGNMENT(4) DEVICE_TEST_OPRATION_T device_test_operation = {0}; // 显式写: ATTR_PLACE_AT_NONCACHEABLE_INIT_WITH_ALIGNMENT(4) DEVICE_TEST_OPRATION_T device_test_operation = { .u32_device_cmd_hand = {.all = 0}, .u32_device_sts_hand = {.all = 0}, .u32_device_ctrl = {.all = 0}, .u32_device_test_sts = {.all = 0} }; // “嵌套成员指定初始化”写法(C99支持) ATTR_PLACE_AT_NONCACHEABLE_INIT_WITH_ALIGNMENT(4) DEVICE_TEST_OPRATION_T device_test_operation = { .u32_device_cmd_hand.all = 0, .u32_device_sts_hand.all = 0, .u32_device_ctrl.all = 0, .u32_device_test_sts.all = 0 };