1、按键驱动(简介)1、 按键驱动的功能具有按键初始化以及判断是否有按键这两种功能。2、 函数介绍2.1 void halButtonInit(void)作用:按键初始化输入:无输出:无代码解析:MCU_IO_INPUT(HAL_BOARD_IO_BTN_1_PORT, HAL_BOARD_IO_BTN_1_PIN, MCU_IO_TRISTATE);/将 P0_1(S1 按键)设定为普通功能,输入模式,并且选择三态模式#define MCU_IO_INPUT(port,pin,func) MCU_IO_INPUT_PREP(port, pin, func)#define MCU_IO_INPUT
2、_PREP(port, pin, func) st( P#port#SEL /普通功能P#port#DIR /端口输入switch (func) case MCU_IO_PULLUP: /如果选择上拉模式P#port#INP /将端口的输入模式寄存器对应的引脚置 0,表示由 P2INP 控制是上拉还是下拉 P2INP /将对应的端口设定为上拉break; case MCU_IO_PULLDOWN: /如果选择下拉模式P#port#INP /将端口的输入模式寄存器对应的引脚置 0,表示由 P2INP 控制是上拉还是下拉 P2INP |= BM(port + 5); /将对应的端口设定为下拉bre
3、ak; default: /如果既不是上拉也不是下拉P#port#INP |= BM(pin); /设定为三态模式 break; ) 2.2 uint8 halButtonPushed(void)作用:判断按键 S1 是否被按下输入:无输出:unsigned char 型代码解析:若按键 S1 被按下则返回 1,否则返回 0。if (HAL_BUTTON_1_PUSHED() HAL_DEBOUNCE(!HAL_BUTTON_1_PUSHED();/Go on till the button is loosenv= HAL_BUTTON_1;#define HAL_BUTTON_1_PUSHED() (MCU_IO_GET(HAL_BOARD_IO_BTN_1_PORT, HAL_BOARD_IO_BTN_1_PIN) /对应的端口引脚位不变,其余位置 0