在我正在开发的应用程序中,有一个头文件负责ADC的全部功能,我们称之为adc.h。
其中有一个枚举指示 ADC 中使用的输入 PIN。
typedef enum
{
a_in_1 = adc1 | 0x00, //TEMP_SENSOR_1
a_in_2 = adc1 | 0x01, //TEMP_SENSOR_2
a_in_3 = adc1 | 0x07, //TEMP_SENSOR_3
a_in_4 = adc1 | 0x08, //TEMP_SENSOR_4
}adc_Input_t;
另一个头文件负责声明软件中将使用的结构体,它称为 struct.h。
在那里,我想定义一个负责保存传感器信息的结构。
typedef struct
{
uint16_t adc_value; // raw value
uint16_t counter_breakline; // counter for line fault
uint16_t counter_shortcircuit; // counter for short circuit
uint8_t error_adc; // flag to indicate an error in ADC
uint8_t input; // ADC input pin
float temperature; // current temperature
}sensor_temp_t;
我对成员input的想法是保存ADC引脚,如第一个结构中所述。我可以将该成员定义为:
adc_Input_t input;
但我不想包含标头 adc.h,因为 struct.h 包含在其他几个文件中,而 ADC 标头则不包含,并且我不想使其对其他文件可见,如果我将 adc.h 包含在 struct.h 中会发生什么。
我的疑问是,将 input 成员定义为 uint8_t 而不是 adc_Input_t 是否正确? 如果我像我一样定义这个成员,会导致一些错误吗?
在我的测试期间,它似乎工作正常,但是,我不确定这是否是处理这种情况的正确方法。
枚举被视为整数类型。
因此,假设枚举的有效值范围适合
uint8_t
,这应该按预期工作。