初始化仓库
This commit is contained in:
85
code/button.c
Normal file
85
code/button.c
Normal file
@@ -0,0 +1,85 @@
|
||||
// <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>: GB18030
|
||||
/*
|
||||
* button.c
|
||||
*
|
||||
* Created on: 2025<32><35>4<EFBFBD><34>19<31><39>
|
||||
* Author: LHYe200
|
||||
*/
|
||||
|
||||
|
||||
#include "button.h"
|
||||
|
||||
gpio_pin_enum BUTTON_PIN[BUTTON_PIN_NUM] = BUTTON_PINS;
|
||||
uint8 button_state[BUTTON_PIN_NUM]; // <20><><EFBFBD><EFBFBD>״̬
|
||||
uint16 button_last_time[BUTTON_PIN_NUM]; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
||||
|
||||
void Button_Init(void)
|
||||
{
|
||||
for(int i = 0; i < BUTTON_PIN_NUM; i++)
|
||||
{
|
||||
gpio_init(BUTTON_PIN[i], GPI, GPIO_LOW, GPI_PULL_UP); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ų<EFBFBD>ʼ<EFBFBD><CABC>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>ģʽ<C4A3><CABD>Ĭ<EFBFBD><C4AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}
|
||||
memset(button_state, 0, sizeof(button_state)); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
||||
memset(button_last_time, 0, sizeof(button_last_time)); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>ΰ<EFBFBD><CEB0><EFBFBD>״̬
|
||||
}
|
||||
|
||||
void Button_Scan()
|
||||
{
|
||||
for(int i = 0; i < BUTTON_PIN_NUM; i++)
|
||||
{
|
||||
if(gpio_get_level(BUTTON_PIN[i]) == GPIO_LOW) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
button_last_time[i] += BUTTON_SCAN_TIME; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}
|
||||
else // <20><><EFBFBD><EFBFBD><EFBFBD>ɿ<EFBFBD>
|
||||
{
|
||||
if(button_last_time[i] >= BUTTON_SHORT_PRESS_TIME && button_last_time[i] < BUTTON_LONG_PRESS_TIME) // <20>̰<EFBFBD>
|
||||
{
|
||||
button_state[i] = BUTTON_SHORT_PRESS; // <20><><EFBFBD><EFBFBD>Ϊ<EFBFBD>̰<EFBFBD>״̬
|
||||
}
|
||||
else // δ<><CEB4><EFBFBD><EFBFBD>
|
||||
{
|
||||
if(button_state[i] == BUTTON_LONG_PRESS || button_state[i] == BUTTON_LONG_PRESS_GOT) // <20><><EFBFBD><EFBFBD>֮ǰ<D6AE>dz<EFBFBD><C7B3><EFBFBD>״̬
|
||||
{
|
||||
button_state[i] = BUTTON_RELEASE;
|
||||
}
|
||||
// button_state[i] = BUTTON_RELEASE; // <20><><EFBFBD><EFBFBD>Ϊδ<CEAA><CEB4><EFBFBD><EFBFBD>״̬
|
||||
}
|
||||
button_last_time[i] = 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}
|
||||
if(button_last_time[i] >= BUTTON_LONG_PRESS_TIME) // <20><><EFBFBD><EFBFBD>
|
||||
{
|
||||
if(button_state[i] != BUTTON_LONG_PRESS_GOT) // <20><><EFBFBD><EFBFBD>֮ǰ<D6AE><C7B0><EFBFBD>dz<EFBFBD><C7B3><EFBFBD>GOT״̬
|
||||
{
|
||||
button_state[i] = BUTTON_LONG_PRESS; // <20><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>״̬
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
uint8 Button_Get_State(uint8 button_num)
|
||||
{
|
||||
if(button_num >= BUTTON_PIN_NUM) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD>
|
||||
{
|
||||
return -1; // <20><><EFBFBD>ش<EFBFBD><D8B4><EFBFBD>
|
||||
}
|
||||
uint8 tmp_sta = button_state[button_num];
|
||||
if(button_state[button_num] == BUTTON_LONG_PRESS)
|
||||
{
|
||||
button_state[button_num] = BUTTON_LONG_PRESS_GOT;
|
||||
}
|
||||
return tmp_sta; // <20><><EFBFBD>ذ<EFBFBD><D8B0><EFBFBD>״̬
|
||||
}
|
||||
|
||||
|
||||
void Button_Reset(uint8 button_num)
|
||||
{
|
||||
if(button_num >= BUTTON_PIN_NUM) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD>
|
||||
{
|
||||
return ; // <20><><EFBFBD>ش<EFBFBD><D8B4><EFBFBD>
|
||||
}
|
||||
button_state[button_num] = BUTTON_RELEASE; // <20><><EFBFBD>ð<EFBFBD><C3B0><EFBFBD>״̬Ϊδ<CEAA><CEB4><EFBFBD><EFBFBD>
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user