185 lines
9.2 KiB
C
185 lines
9.2 KiB
C
![]() |
#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 ;
|
|||
|
}
|