172 lines
7.7 KiB
C
172 lines
7.7 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
|
|||
|
*******************************************************************************/
|
|||
|
|
|||
|
//typedef struct
|
|||
|
//{
|
|||
|
// uint8_t menuIndex ; // <20>˵<EFBFBD><CBB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
// uint8_t keyMenuToIndex ; // <20><><EFBFBD>¡<EFBFBD><C2A1>˵<EFBFBD><CBB5><EFBFBD><EFBFBD><EFBFBD>ʱת<CAB1><D7AA><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
// uint8_t keyBackToIndex ; // <20><><EFBFBD>¡<EFBFBD><C2A1>˻ء<CBBB><D8A1><EFBFBD>ʱת<CAB1><D7AA><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
// uint8_t keyUpToIndex ; // <20><><EFBFBD>¡<EFBFBD><C2A1><EFBFBD><EFBFBD>ϡ<EFBFBD><CFA1><EFBFBD>ʱת<CAB1><D7AA><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
// uint8_t keyDnToIndex ; // <20><><EFBFBD>¡<EFBFBD><C2A1><EFBFBD><EFBFBD>¡<EFBFBD><C2A1><EFBFBD>ʱת<CAB1><D7AA><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
// uint8_t keyLeftToIndex ; // <20><><EFBFBD>¡<EFBFBD><C2A1><EFBFBD><EFBFBD><EFBFBD>ʱת<CAB1><D7AA><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
// uint8_t keyRightToIndex ; // <20><><EFBFBD>¡<EFBFBD><C2A1><EFBFBD><EFBFBD>ҡ<EFBFBD><D2A1><EFBFBD>ʱת<CAB1><D7AA><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
// uint8_t keyOkToIndex ; // <20><><EFBFBD>¡<EFBFBD>OK<4F><4B><EFBFBD><EFBFBD>ʱת<CAB1><D7AA><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
// void (*CurrentOperate)(uint8_t x) ;// <20><>ǰ״̬Ӧ<CCAC><D3A6>ִ<EFBFBD>еĹ<D0B5><C4B9>ܲ<EFBFBD><DCB2><EFBFBD>
|
|||
|
//} KbdTab_s ;
|
|||
|
|
|||
|
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[15] =
|
|||
|
{
|
|||
|
/*menuIndex, keyMenuToIndex, keyBackToIndex, keyUpToIndex, keyDnToIndex, keyLeftToIndex, keyRightToIndex, keyOkToIndex, (*CurrentOperate)(void)*/
|
|||
|
{ 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , HomeMenu } ,
|
|||
|
|
|||
|
{ 1 , 1 , 0 , 3 , 2 , 1 , 1 , 4 , Sub1MenuSelect1 } ,
|
|||
|
{ 2 , 1 , 0 , 1 , 3 , 2 , 2 , 5 , Sub1MenuSelect2 } ,
|
|||
|
{ 3 , 1 , 0 , 2 , 1 , 3 , 3 , 8 , Sub1MenuSelect3 } ,
|
|||
|
|
|||
|
{ 4 , 1 , 1 , 4 , 4 , 4 , 4 , 4 , Sub1_1Menu },
|
|||
|
|
|||
|
{ 5 , 1 , 1 , 7 , 6 , 5 , 5 , 10 , Sub1_2MenuSelect1 },
|
|||
|
{ 6 , 1 , 1 , 5 , 7 , 5 , 5 , 11 , Sub1_2MenuSelect2 },
|
|||
|
{ 7 , 1 , 1 , 6 , 5 , 5 , 5 , 12 , Sub1_2MenuSelect3 } ,
|
|||
|
|
|||
|
{ 8 , 1 , 3 , 9 , 9 , 8 , 8 , 13 , Sub1_3MenuSelect1 } ,
|
|||
|
{ 9 , 1 , 3 , 8 , 8 , 9, 9 , 14 , Sub1_3MenuSelect2 } ,
|
|||
|
|
|||
|
{ 10 , 1 , 5 , 10 , 10 , 10 , 10 , 10 , Sub1_2_1Menu } ,
|
|||
|
{ 11 , 1 , 5 , 11 , 11 , 11, 11 , 11 , Sub1_2_2Menu } ,
|
|||
|
{ 12 , 1 , 5 , 12 , 12 , 12 , 12 , 12 , Sub1_2_3Menu } ,
|
|||
|
|
|||
|
{ 13 , 1 , 8 , 13 , 13 , 13 , 13 , 13 , Sub1_3_1Menu } ,
|
|||
|
{ 14 , 1 , 9 , 14 , 14 , 14, 14 , 14 , Sub1_3_2Menu }
|
|||
|
} ; //<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 ;
|
|||
|
}
|