#include "Key.h" #include "Menu.h" /*菜单显示函数在此*/ #include "Services_ODO_User.h" /*清空总计历程函数*/ #include "DisplaySch_user.h" #include "Sound_Scheduler.h" #include "System_Monitor.h" #include "RTE_ADC.h" /*-------------------------------------------------------*/ /*----------按键具体功能执行的回调函数-----------------------*/ void Key_Operation_Enter(Key_Event_en_t enKeyEvent); void Key_Operation_Return(Key_Event_en_t enKeyEvent); void Key_Operation_Up(Key_Event_en_t enKeyEvent); void Key_Operation_Down(Key_Event_en_t enKeyEvent); void Key_Operation_Menu(Key_Event_en_t enKeyEvent); Key_IGN_en_t Key_Get_IGN_Status(void); struct { /* data */ uint8_t Up ; uint8_t Down ; uint8_t Enter ; uint8_t Menu ; uint8_t Return ; }KeyTest; /*******************************UP*********************************************** Function: Key_Operation_Up Description: Input: Output: *******************************UP***********************************************/ void Key_Operation_Up(Key_Event_en_t enKeyEvent) { KeyTest.Up ++ ; HMI_Set_KEY_UP(enKeyEvent); } /*******************************DOWN*********************************************** Function: Key_Operation_Down Description: Input: Output: *******************************DOWN***********************************************/ void Key_Operation_Down(Key_Event_en_t enKeyEvent) { KeyTest.Down ++ ; HMI_Set_KEY_DOWN(enKeyEvent); } /*******************************ENTER*********************************************** Function: Key_Operation_Enter Description: Input: Output: *******************************ENTER***********************************************/ void Key_Operation_Enter(Key_Event_en_t enKeyEvent) { KeyTest.Enter ++ ; HMI_Set_KEY_CONFIRM(enKeyEvent); } /*******************************RETURN*********************************************** Function: Key_Operation_Return Description: Input: Output: *******************************RETURN***********************************************/ void Key_Operation_Return(Key_Event_en_t enKeyEvent) { KeyTest.Return ++ ; HMI_Set_KEY_CANCEL(enKeyEvent); } /*******************************Menu*********************************************** Function: Key_Operation_Menu Description: Input: Output: *******************************Menu***********************************************/ void Key_Operation_Menu(Key_Event_en_t enKeyEvent) { KeyTest.Menu ++ ; HMI_Set_KEY_MENU(enKeyEvent); } /*------------读按键实时状态的回调函数-------------------------------------------*/ Key_Real_Status_en_t Key_Real_Status_Read_Enter(void); Key_Real_Status_en_t Key_Real_Status_Read_Return(void); Key_Real_Status_en_t Key_Real_Status_Read_Up(void); Key_Real_Status_en_t Key_Real_Status_Read_Down(void); Key_Real_Status_en_t Key_Real_Status_Read_Menu(void) ; /*-------------------------------------------------*/ //Menu_R = 24000*470 / (24000 + 470) = 460.97Ω //Enter_R = 24000*6800 / (24000 + 6800) = 5298.7Ω //Return_R = 24000*15000 / (24000 + 15000) = 9230.77Ω //Up_R = 24000*1200 / (24000 + 1200) = 1142.86Ω //Down_R = 24000*3300 / (24000 + 3300) = 2901.1Ω //Menu_R = 16000*470 / (16000 + 470) = 456.59Ω //Enter_R = 16000*6800 / (16000 + 6800) = 4771.9Ω //Return_R = 16000*15000 / (16000 + 15000) = 7741.94Ω //Up_R = 16000*1200 / (16000 + 1200) = 1116.28Ω //Down_R = 16000*3300 / (16000 + 3300) = 2736Ω //实际按键测试 //无操作 21000~24000Ω //Menu_R 640~680Ω //Enter_R 5300~5700Ω //Return_R 9000~9500Ω //Up_R 1300~1400Ω //Down_R 3000~3200Ω Key_Real_Status_en_t Key_Real_Status_Read_Menu(void) { Key_Real_Status_en_t enKeyRealStatus = KEY_LINE_LOOSEN; uint16_t Key_R = 0; Key_R = (uint16_t)RTE_Read_KEY_R(); if(RTE_Read_KEY_R_Valid() == 0) { enKeyRealStatus = KEY_LINE_LOOSEN; } else { if((Key_R >= (460 - 300))&&(Key_R <= (460 + 300))) { enKeyRealStatus = KEY_LINE_PRESS; } else { enKeyRealStatus = KEY_LINE_LOOSEN; } } return enKeyRealStatus; } Key_Real_Status_en_t Key_Real_Status_Read_Enter(void) { Key_Real_Status_en_t enKeyRealStatus = KEY_LINE_LOOSEN; uint16_t Key_R = 0; Key_R = (uint16_t)RTE_Read_KEY_R(); if(RTE_Read_KEY_R_Valid() == 0) { enKeyRealStatus = KEY_LINE_LOOSEN; } else { if((Key_R >= (5298 - 300))&&(Key_R <= (5298 + 300))) { enKeyRealStatus = KEY_LINE_PRESS; } else { enKeyRealStatus = KEY_LINE_LOOSEN; } } return enKeyRealStatus; } Key_Real_Status_en_t Key_Real_Status_Read_Return(void) { Key_Real_Status_en_t enKeyRealStatus = KEY_LINE_LOOSEN; uint16_t Key_R = 0; Key_R = (uint16_t)RTE_Read_KEY_R(); if(RTE_Read_KEY_R_Valid() == 0) { enKeyRealStatus = KEY_LINE_LOOSEN; } else { if((Key_R >= (9230 - 300))&&(Key_R <= (9230 + 300))) { enKeyRealStatus = KEY_LINE_PRESS; } else { enKeyRealStatus = KEY_LINE_LOOSEN; } } return enKeyRealStatus; } Key_Real_Status_en_t Key_Real_Status_Read_Up(void) { Key_Real_Status_en_t enKeyRealStatus = KEY_LINE_LOOSEN; uint16_t Key_R = 0; Key_R = (uint16_t)RTE_Read_KEY_R(); if(RTE_Read_KEY_R_Valid() == 0) { enKeyRealStatus = KEY_LINE_LOOSEN; } else { if((Key_R >= (1142 - 300))&&(Key_R <= (1142 + 300))) { enKeyRealStatus = KEY_LINE_PRESS; } else { enKeyRealStatus = KEY_LINE_LOOSEN; } } return enKeyRealStatus; } Key_Real_Status_en_t Key_Real_Status_Read_Down(void) { Key_Real_Status_en_t enKeyRealStatus = KEY_LINE_LOOSEN; uint16_t Key_R = 0; Key_R = (uint16_t)RTE_Read_KEY_R(); if(RTE_Read_KEY_R_Valid() == 0) { enKeyRealStatus = KEY_LINE_LOOSEN; } else { if((Key_R >= (2901 - 300))&&(Key_R <= (2901 + 300))) { enKeyRealStatus = KEY_LINE_PRESS; } else { enKeyRealStatus = KEY_LINE_LOOSEN; } } return enKeyRealStatus; } /*---------------------------------------------------------------------------------------*/ const Key_Attribute_st_t stKeyAttribute[KEY_NUM_MAX] = { {KEY_NEED_DEBOUNCE_NORMAL, Key_Real_Status_Read_Up, Key_Operation_Up}, {KEY_NEED_DEBOUNCE_NORMAL, Key_Real_Status_Read_Down, Key_Operation_Down}, {KEY_NEED_DEBOUNCE_NORMAL, Key_Real_Status_Read_Enter, Key_Operation_Enter}, {KEY_NEED_DEBOUNCE_NORMAL, Key_Real_Status_Read_Return, Key_Operation_Return}, {KEY_NEED_DEBOUNCE_NORMAL, Key_Real_Status_Read_Menu, Key_Operation_Menu}, }; Key_IGN_en_t Key_Get_IGN_Status(void) { Key_IGN_en_t ret = KEY_IG_INVALID; if (SYS_OPR_STAT_IGN_ON) { ret = KEY_IG_ON; } else { ret = KEY_IG_OFF; } return ret; }