#include "multi_button.h" #include "Keys.h" #include "N76E003.h" pKeyState GROUP_KEY = {0}; struct Button kCS, kJS; void ScanKey ( void ) //5ms { button_ticks(); } uint8_t Read_CS_GPIO() { return ( bool ) P04; } void Keys_SIG ( void* btn ) { int event; if ( btn == &kCS ) { event = get_button_event ( btn ); switch ( event ) { case SINGLE_CLICK: GROUP_KEY.CS = 1; break; //测试 case LONG_RRESS_START: GROUP_KEY.CS_L = 1; break; //长按测试 } } else if ( btn == &kJS ) { event = get_button_event ( btn ); switch ( event ) { case SINGLE_CLICK: GROUP_KEY.JS = 1; break; //计时 case LONG_RRESS_START: GROUP_KEY.JS_L = 1; break; //长按计时 } } } void Keys_Init ( void ) { button_init_Head(); button_init ( &kCS, Read_CS_GPIO, 0 ); //低电平触发 button_attach ( &kCS, SINGLE_CLICK, Keys_SIG ); button_attach ( &kCS, LONG_RRESS_START, Keys_SIG ); button_start ( &kCS ); //make the timer invoking the button_ticks() interval 5ms. //This function is implemented by yourself. //__timer_start(button_ticks, 0, 5); } void Key_CS_Hanlder ( void* btn ) { if ( btn ) {} } void Key_CS_Long_Hanlder ( void* btn ) { if ( btn ) {} } void Keys_All_Handler ( void ) { if ( GROUP_KEY.CS ) { GROUP_KEY.CS = 0; Key_CS_Hanlder ( &kCS ); } if ( GROUP_KEY.CS_L ) { GROUP_KEY.CS_L = 0; Key_CS_Long_Hanlder ( &kCS ); } }