以2p拨码开关为例
在main.h中,宏定义单片机IO口和函数HAL_GPIO_ReadPin()的返回值
#define DIP0_Pin GPIO_PIN_0
#define DIP0_GPIO_Port GPIOA
#define DIP1_Pin GPIO_PIN_1
#define DIP1_GPIO_Port GPIOA
#define DIP0_State HAL_GPIO_ReadPin(DIP0_GPIO_Port,DIP0_Pin)
#define DIP1_State HAL_GPIO_ReadPin(DIP1_GPIO_Port,DIP1_Pin)
在main.c中,使用左移运算符<<和按位或运算符 | 将读取的多个电平值转换成16进制数
uint8_t DIP_Num;
DIP_Num=(DIP1_State<<1)|DIP0_State;
以上代码,简洁易懂,便于读者理解和实现。