stm32_ota/ABM开发板(APP源码)/FreeRTOS版本/APPV4.0/USER/USER_KEY/user_key.c

185 lines
9.2 KiB
C
Raw Permalink Normal View History

2024-12-17 20:03:43 +08:00
#include "user_key.h"
#include "user_oled.h"
/********************************************************************************
* @file user_key.c
* @author <EFBFBD>̳ϿƼ<EFBFBD> Mr.Wang
* @version V1.0.0
* @date 11-Dec-2018
* @brief <EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
******************************************************************************
* @attention
*******************************************************************************/
volatile uint8_t currentMenuIndex = 0 ; //<2F><>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD>IJ˵<C4B2>ҳ<EFBFBD><D2B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static volatile uint8_t laseKey = KEYBACK ; //<2F><>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>ΰ<EFBFBD><CEB0>İ<EFBFBD><C4B0><EFBFBD>ֵ<EFBFBD><D6B5>
KbdTab_s sKeyTab[34] =
{
/*menuIndex, keyMenuToIndex, keyBackToIndex, keyUpToIndex, keyDnToIndex, keyLeftToIndex, keyRightToIndex, keyOkToIndex, (*CurrentOperate)(void)*/
{ 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , HomeMenu } ,
{ 1 , 1 , 0 , 5 , 2 , 1 , 1 , 6 , Sub1Select1 } ,
{ 2 , 1 , 0 , 1 , 3 , 2 , 2 , 10 , Sub1Select2 } ,
{ 3 , 1 , 0 , 2 , 4 , 3 , 3 , 12 , Sub1Select3 } ,
{ 4 , 1 , 0 , 3 , 5 , 4 , 4 , 14 , Sub1Select4 } ,
{ 5 , 1 , 0 , 4 , 1 , 5 , 5 , 17 , Sub1Select5 } ,
{ 6 , 1 , 1 , 9 , 7 , 6 , 6 , 20 , Sub1Click1Select1 },
{ 7 , 1 , 1 , 6 , 8 , 6 , 6 , 21 , Sub1Click1Select2 },
{ 8 , 1 , 1 , 7 , 9 , 6 , 6 , 22 , Sub1Click1Select3 } ,
{ 9 , 1 , 1 , 8 , 6 , 9 , 9 , 23 , Sub1Click1Select4 } ,
{ 10 , 1 , 2 , 11 , 11 , 10 , 10 , 24 , Sub1Click2Select1 } ,
{ 11 , 1 , 2 , 10 , 10 , 11 , 11 , 25 , Sub1Click2Select2 } ,
{ 12 , 1 , 3 , 13 , 13 , 11, 12 , 26 , Sub1Click3Select1 } ,
{ 13 , 1 , 3 , 12 , 12 , 13 , 12 , 27 , Sub1Click3Select2 } ,
{ 14 , 1 , 4 , 16 , 15 , 14 , 14 , 28 , Sub1Click4Select1 } ,
{ 15 , 1 , 4 , 14 , 16 , 15, 15 , 29 , Sub1Click4Select2 } ,
{ 16 , 1 , 4 , 15 , 14 , 16 , 16 , 30 , Sub1Click4Select3 } ,
{ 17 , 1 , 5 , 19 , 18, 17 , 17 , 31 , Sub1Click5Select1 } ,
{ 18 , 1 , 5 , 17 , 19 , 18, 18 , 32 , Sub1Click5Select2 } ,
{ 19 , 1 , 5 , 18 , 17 , 19 , 19 , 33 , Sub1Click5Select3 } ,
/*menuIndex, keyMenuToIndex, keyBackToIndex, keyUpToIndex, keyDnToIndex, keyLeftToIndex, keyRightToIndex, keyOkToIndex, (*CurrentOperate)(void)*/
{ 20 , 1 , 6 , 20 , 20 , 20 , 20 , 20 , Sub1Click1Click1 } ,
{ 21 , 1 , 7 , 21 , 21 , 21 , 21 , 21 , Sub1Click1Click2 } ,
{ 22 , 1 , 8 , 22 , 22 , 18, 22 , 22 , Sub1Click1Click3 } ,
{ 23 , 1 , 9 , 23 , 23 , 23 , 23 , 23 , Sub1Click1Click4 } ,
{ 24 , 1 , 10 , 24 , 24 , 24, 24 , 24 , Sub1Click2Click1 } ,
{ 25 , 1 , 11 , 25 , 25 , 25 , 25 , 25 , Sub1Click2Click2 } ,
{ 26 , 1 , 12 , 26 , 26 , 26, 26 , 26 , Sub1Click3Click1 } ,
{ 27 , 1 , 13 , 27 , 27 , 27 , 27 , 27 , Sub1Click3Click2 } ,
{ 28 , 1 , 14 , 28 , 28 , 28 , 28 , 28 , Sub1Click4Click1 } ,
{ 29 , 1 , 15 , 29 , 29 , 29, 29 , 29 , Sub1Click4Click2 } ,
{ 30 , 1 , 16 , 30 , 30 , 30 , 30 , 30 , Sub1Click4Click2 } ,
{ 31 , 1 , 17 , 31 , 31 , 31 , 31 , 31 , Sub1Click5Click1 } ,
{ 32 , 1 , 18 , 32 , 32 , 32, 32 , 32 , Sub1Click5Click2 } ,
{ 33 , 1 , 19 , 33 , 33 , 33 , 33 , 33 , Sub1Click5Click3 }
} ; //<2F><>ͬ<EFBFBD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/**************************************************************************************************
* <EFBFBD><EFBFBD> <EFBFBD>ƣ<EFBFBD> void UserKeyInit(void)
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>UP<EFBFBD><EFBFBD>DOWN<EFBFBD><EFBFBD>LEFT<EFBFBD><EFBFBD>RIGHT<EFBFBD><EFBFBD>Menu<EFBFBD><EFBFBD>BACK IO<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>INT_RANK_6
* KEY0 KEY1 KEY2 KEY3 KEY7 KEY9<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪGPIO <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
* ע<EFBFBD><EFBFBD>UP<EFBFBD><EFBFBD>DOWN<EFBFBD><EFBFBD>LEFT<EFBFBD><EFBFBD>RIGHT<EFBFBD><EFBFBD>Menu<EFBFBD><EFBFBD>BACK IO<EFBFBD>ⲿ<EFBFBD>жϵĻص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*************************************************************************************************/
void UserKeyInit(void)
{
KeyInit() ;
Io_RegHookCallback(MENU_KEY_PIN, Menu_Callback) ;
Io_RegHookCallback(BACK_KEY_PIN, Back_Callback) ;
Io_RegHookCallback(KEYUP_PIN, KeyUp_Callback) ;
Io_RegHookCallback(KEYDOWN_PIN, KeyDown_Callback) ;
Io_RegHookCallback(KEYLEFT_PIN, KeyLeft_Callback) ;
Io_RegHookCallback(KEYRIGHT_PIN, KeyRight_Callback) ;
Io_RegHookCallback(KEYOK_PIN, KeyOk_Callback) ;
}
/**************************************************************************************************
* <EFBFBD><EFBFBD> <EFBFBD>ƣ<EFBFBD> void GetKeylnput(void)
* <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>IJ<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>sKeyTab<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*************************************************************************************************/
void GetKeylnput(void )
{
switch ( laseKey )
{
case KEYMENU :// <20><><EFBFBD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD><EFBFBD>,<2C>ҳ<EFBFBD><D2B3>µIJ˵<C4B2>״̬<D7B4><CCAC><EFBFBD><EFBFBD>
currentMenuIndex = sKeyTab [ currentMenuIndex ].keyMenuToIndex ;
break ;
case KEYBACK :// <20><><EFBFBD><EFBFBD><EFBFBD>˼<EFBFBD><CBBC><EFBFBD>,<2C>ҳ<EFBFBD><D2B3>µIJ˵<C4B2>״̬<D7B4><CCAC><EFBFBD><EFBFBD>
currentMenuIndex = sKeyTab [ currentMenuIndex ].keyBackToIndex ;
break ;
case KEYUP : // <20><><EFBFBD><EFBFBD><EFBFBD>ϡ<EFBFBD><CFA1><EFBFBD>,<2C>ҳ<EFBFBD><D2B3>µIJ˵<C4B2>״̬<D7B4><CCAC><EFBFBD><EFBFBD>
currentMenuIndex = sKeyTab[ currentMenuIndex ].keyUpToIndex ;
break ;
case KEYDOWN :// <20><><EFBFBD><EFBFBD><EFBFBD>¡<EFBFBD><C2A1><EFBFBD>,<2C>ҳ<EFBFBD><D2B3>µIJ˵<C4B2>״̬<D7B4><CCAC><EFBFBD><EFBFBD>
currentMenuIndex = sKeyTab [ currentMenuIndex ].keyDnToIndex ;
break ;
case KEYLEFT :// <20><><EFBFBD><EFBFBD><EFBFBD>󡱼<EFBFBD>,<2C>ҳ<EFBFBD><D2B3>µIJ˵<C4B2>״̬<D7B4><CCAC><EFBFBD><EFBFBD>
currentMenuIndex = sKeyTab [ currentMenuIndex ].keyLeftToIndex ;
break ;
case KEYRIGHT:// <20><><EFBFBD><EFBFBD><EFBFBD>ҡ<EFBFBD><D2A1><EFBFBD>,<2C>ҳ<EFBFBD><D2B3>µIJ˵<C4B2>״̬<D7B4><CCAC><EFBFBD><EFBFBD>
currentMenuIndex = sKeyTab [ currentMenuIndex ].keyRightToIndex ;
break ;
case KEYOK: // <20><>OK<4F><4B><EFBFBD><EFBFBD>,<2C>ҳ<EFBFBD><D2B3>µIJ˵<C4B2>״̬<D7B4><CCAC><EFBFBD><EFBFBD>
currentMenuIndex = sKeyTab [ currentMenuIndex ].keyOkToIndex ;
break ;
case 0 : // û<>а<EFBFBD><D0B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
return ;
default : // δ<>趨Ч<E8B6A8><D0A7><EFBFBD>İ<EFBFBD><C4B0><EFBFBD><EFBFBD><EFBFBD>ֵ
return ;
}
laseKey = 0 ;
sKeyTab[ currentMenuIndex ].CurrentOperate() ; // <20><>ǰ<EFBFBD>˵<EFBFBD>ҳ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6>ִ<EFBFBD>еIJ<D0B5><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
/**************************************************************************************************
* <EFBFBD><EFBFBD> <EFBFBD>ƣ<EFBFBD> void Menu_Callback(void)
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD> Menu<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϻص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*************************************************************************************************/
void Menu_Callback(void)
{
laseKey = KEYMENU ;
}
/**************************************************************************************************
* <EFBFBD><EFBFBD> <EFBFBD>ƣ<EFBFBD> void Back_Callback(void)
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD> BACK<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϻص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*************************************************************************************************/
void Back_Callback(void)
{
laseKey = KEYBACK ;
}
/**************************************************************************************************
* <EFBFBD><EFBFBD> <EFBFBD>ƣ<EFBFBD> void KeyUp_Callback(void)
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD> UP<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϻص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*************************************************************************************************/
void KeyUp_Callback(void)
{
laseKey = KEYUP ;
}
/**************************************************************************************************
* <EFBFBD><EFBFBD> <EFBFBD>ƣ<EFBFBD> void KeyDown_Callback(void)
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD> DOWN<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϻص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*************************************************************************************************/
void KeyDown_Callback(void)
{
laseKey = KEYDOWN ;
}
/**************************************************************************************************
* <EFBFBD><EFBFBD> <EFBFBD>ƣ<EFBFBD> void KeyLeft_Callback(void)
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD> LEFT<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϻص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*************************************************************************************************/
void KeyLeft_Callback(void)
{
laseKey = KEYLEFT ;
}
/**************************************************************************************************
* <EFBFBD><EFBFBD> <EFBFBD>ƣ<EFBFBD> void KeyRight_Callback(void)
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD> RIGHT<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϻص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*************************************************************************************************/
void KeyRight_Callback(void)
{
laseKey = KEYRIGHT ;
}
/**************************************************************************************************
* <EFBFBD><EFBFBD> <EFBFBD>ƣ<EFBFBD> void KeyOk_Callback(void)
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD> OK<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϻص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*************************************************************************************************/
void KeyOk_Callback(void)
{
laseKey = KEYOK ;
}