128 lines
4.2 KiB
C
128 lines
4.2 KiB
C
![]() |
/**
|
|||
|
****************************************************************************************************
|
|||
|
* @file key.c
|
|||
|
* @author <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><EFBFBD><EFBFBD>Ŷ<EFBFBD>(ALIENTEK)
|
|||
|
* @version V1.0
|
|||
|
* @date 2021-10-14
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @license Copyright (c) 2020-2032, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿƼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˾
|
|||
|
****************************************************************************************************
|
|||
|
* @attention
|
|||
|
*
|
|||
|
* ʵ<EFBFBD><EFBFBD>ƽ̨:<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><EFBFBD> ̽<EFBFBD><EFBFBD><EFBFBD><EFBFBD> F407<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ:www.yuanzige.com
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̳:www.openedv.com
|
|||
|
* <EFBFBD><EFBFBD>˾<EFBFBD><EFBFBD>ַ:www.alientek.com
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ:openedv.taobao.com
|
|||
|
*
|
|||
|
* <EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD>
|
|||
|
* V1.0 20211014
|
|||
|
* <EFBFBD><EFBFBD>һ<EFBFBD>η<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
*
|
|||
|
****************************************************************************************************
|
|||
|
*/
|
|||
|
|
|||
|
#include "./BSP/KEY/key.h"
|
|||
|
#include "./SYSTEM/delay/delay.h"
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param <EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
void key_init(void)
|
|||
|
{
|
|||
|
GPIO_InitTypeDef gpio_init_struct; /* GPIO<49><4F><EFBFBD>ò<EFBFBD><C3B2><EFBFBD><EFBFBD>洢<EFBFBD><E6B4A2><EFBFBD><EFBFBD> */
|
|||
|
KEY0_GPIO_CLK_ENABLE(); /* KEY0ʱ<30><CAB1>ʹ<EFBFBD><CAB9> */
|
|||
|
KEY1_GPIO_CLK_ENABLE(); /* KEY1ʱ<31><CAB1>ʹ<EFBFBD><CAB9> */
|
|||
|
KEY2_GPIO_CLK_ENABLE(); /* KEY2ʱ<32><CAB1>ʹ<EFBFBD><CAB9> */
|
|||
|
WKUP_GPIO_CLK_ENABLE(); /* WKUPʱ<50><CAB1>ʹ<EFBFBD><CAB9> */
|
|||
|
|
|||
|
gpio_init_struct.Pin = KEY0_GPIO_PIN; /* KEY0<59><30><EFBFBD><EFBFBD> */
|
|||
|
gpio_init_struct.Mode = GPIO_MODE_INPUT; /* <20><><EFBFBD><EFBFBD> */
|
|||
|
gpio_init_struct.Pull = GPIO_PULLUP; /* <20><><EFBFBD><EFBFBD> */
|
|||
|
gpio_init_struct.Speed = GPIO_SPEED_FREQ_HIGH; /* <20><><EFBFBD><EFBFBD> */
|
|||
|
HAL_GPIO_Init(KEY0_GPIO_PORT, &gpio_init_struct); /* KEY0<59><30><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
|
|||
|
gpio_init_struct.Pin = KEY1_GPIO_PIN; /* KEY1<59><31><EFBFBD><EFBFBD> */
|
|||
|
gpio_init_struct.Mode = GPIO_MODE_INPUT; /* <20><><EFBFBD><EFBFBD> */
|
|||
|
gpio_init_struct.Pull = GPIO_PULLUP; /* <20><><EFBFBD><EFBFBD> */
|
|||
|
gpio_init_struct.Speed = GPIO_SPEED_FREQ_HIGH; /* <20><><EFBFBD><EFBFBD> */
|
|||
|
HAL_GPIO_Init(KEY1_GPIO_PORT, &gpio_init_struct); /* KEY1<59><31><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
|
|||
|
gpio_init_struct.Pin = KEY2_GPIO_PIN; /* KEY2<59><32><EFBFBD><EFBFBD> */
|
|||
|
gpio_init_struct.Mode = GPIO_MODE_INPUT; /* <20><><EFBFBD><EFBFBD> */
|
|||
|
gpio_init_struct.Pull = GPIO_PULLUP; /* <20><><EFBFBD><EFBFBD> */
|
|||
|
gpio_init_struct.Speed = GPIO_SPEED_FREQ_HIGH; /* <20><><EFBFBD><EFBFBD> */
|
|||
|
HAL_GPIO_Init(KEY2_GPIO_PORT, &gpio_init_struct); /* KEY2<59><32><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
|
|||
|
gpio_init_struct.Pin = WKUP_GPIO_PIN; /* WKUP<55><50><EFBFBD><EFBFBD> */
|
|||
|
gpio_init_struct.Mode = GPIO_MODE_INPUT; /* <20><><EFBFBD><EFBFBD> */
|
|||
|
gpio_init_struct.Pull = GPIO_PULLDOWN; /* <20><><EFBFBD><EFBFBD> */
|
|||
|
gpio_init_struct.Speed = GPIO_SPEED_FREQ_HIGH; /* <20><><EFBFBD><EFBFBD> */
|
|||
|
HAL_GPIO_Init(WKUP_GPIO_PORT, &gpio_init_struct); /* WKUP<55><50><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɨ<EFBFBD>躯<EFBFBD><EFBFBD>
|
|||
|
* @note <EFBFBD>ú<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>(ͬʱ<EFBFBD><EFBFBD><EFBFBD>¶<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>): WK_UP > KEY2 > KEY1 > KEY0!!
|
|||
|
* @param mode:0 / 1, <EFBFBD><EFBFBD><EFBFBD>庬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
|||
|
* @arg 0, <EFBFBD><EFBFBD>֧<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>²<EFBFBD><EFBFBD><EFBFBD>ʱ, ֻ<EFBFBD>е<EFBFBD>һ<EFBFBD>ε<EFBFBD><EFBFBD>û᷵<EFBFBD>ؼ<EFBFBD>ֵ,
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿ<EFBFBD><EFBFBD>Ժ<EFBFBD>, <EFBFBD>ٴΰ<EFBFBD><EFBFBD>²Ż᷵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ)
|
|||
|
* @arg 1, ֧<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>²<EFBFBD><EFBFBD><EFBFBD>ʱ, ÿ<EFBFBD>ε<EFBFBD><EFBFBD>øú<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>᷵<EFBFBD>ؼ<EFBFBD>ֵ)
|
|||
|
* @retval <EFBFBD><EFBFBD>ֵ, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
|||
|
* KEY0_PRES, 1, KEY0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* KEY1_PRES, 2, KEY1<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* KEY2_PRES, 3, KEY2<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* WKUP_PRES, 4, WKUP<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
uint8_t key_scan(uint8_t mode)
|
|||
|
{
|
|||
|
static uint8_t key_up = 1; /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿ<EFBFBD><C9BF><EFBFBD>־ */
|
|||
|
uint8_t keyval = 0;
|
|||
|
|
|||
|
if (mode) key_up = 1; /* ֧<><D6A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
|
|||
|
if (key_up && (KEY0 == 0 || KEY1 == 0 || KEY2 == 0 || WK_UP == 1)) /* <20><><EFBFBD><EFBFBD><EFBFBD>ɿ<EFBFBD><C9BF><EFBFBD>־Ϊ1, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
{
|
|||
|
delay_ms(10); /* ȥ<><C8A5><EFBFBD><EFBFBD> */
|
|||
|
key_up = 0;
|
|||
|
|
|||
|
if (KEY0 == 0) keyval = KEY0_PRES;
|
|||
|
|
|||
|
if (KEY1 == 0) keyval = KEY1_PRES;
|
|||
|
|
|||
|
if (KEY2 == 0) keyval = KEY2_PRES;
|
|||
|
|
|||
|
if (WK_UP == 1) keyval = WKUP_PRES;
|
|||
|
}
|
|||
|
else if (KEY0 == 1 && KEY1 == 1 && KEY2 == 1 && WK_UP == 0) /* û<><C3BB><EFBFBD>κΰ<CEBA><CEB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>ɿ<EFBFBD> */
|
|||
|
{
|
|||
|
key_up = 1;
|
|||
|
}
|
|||
|
|
|||
|
return keyval; /* <20><><EFBFBD>ؼ<EFBFBD>ֵ */
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|