按键函数

上拉输入:

1
2
3
4
5
6
if (HAL_GPIO_ReadPin(KEY_GPIO_Port, KEY_Pin) == GPIO_PIN_SET) {  // 按下
OSTimeDly(20,OS_OPT_TIME_DLY,&err); // 去抖
if (HAL_GPIO_ReadPin(KEY_GPIO_Port, KEY_Pin) == GPIO_PIN_SET) {
/* 用户代码 */
}
}

长按短按:

1
2
3
4
5
6
7
8
9
10
11
12
if (HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_12) == GPIO_PIN_RESET) {  // 按下
HAL_Delay(20); // 去抖
if (HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_12) == GPIO_PIN_RESET) {
HAL_Delay(500); // 判断长按
if (HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_12) == GPIO_PIN_RESET) {
/* 长按 */
}
else {
/* 短按 */
}
}
}