板子上留有拨码开关,用来级联不同板子,判断是哪块板子发送的数据。
头文件中声明
#define Address1_IN HAL_GPIO_ReadPin(Address1_GPIO_Port,Address1_Pin) #define Address2_IN HAL_GPIO_ReadPin(Address2_GPIO_Port,Address2_Pin) #define Address3_IN HAL_GPIO_ReadPin(Address3_GPIO_Port,Address3_Pin) struct _Versionbit { uint8_t Address1 : 1; // bit 0 uint8_t Address2 : 1; // bit 1 uint8_t Address3 : 1; // bit 2 }; union _Version { struct _Versionbit bit; uint8_t byte; };
union _Version Version; void read_addr() { Version.bit.Address1= Address1_IN; Version.bit.Address2= Address2_IN; Version.bit.Address3= Address3_IN; }
这样做会省去每个位的处理和判断