Keys.c 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. #include "include.h"
  2. #include "multi_button.h"
  3. pKeyState GROUP_KEY = {0};
  4. struct Button kCS,kJS;
  5. void ScanKey ( void ) //5ms
  6. {
  7. button_ticks();
  8. }
  9. uint8_t Read_CS_GPIO()
  10. {
  11. return (bool)GET_KEY_CS;
  12. }
  13. uint8_t Read_JS_GPIO()
  14. {
  15. return (bool)GET_KEY_JS;
  16. }
  17. void Keys_SIG(void* btn)
  18. {
  19. int event;
  20. if(btn == &kCS){
  21. event = get_button_event(btn);
  22. switch(event)
  23. {
  24. case SINGLE_CLICK: GROUP_KEY.CS=1; break; //测试
  25. case LONG_RRESS_START: GROUP_KEY.CS_L=1; break; //长按测试
  26. }
  27. }else if(btn == &kJS){
  28. event = get_button_event(btn);
  29. switch(event)
  30. {
  31. case SINGLE_CLICK: GROUP_KEY.JS=1; break; //计时
  32. case LONG_RRESS_START: GROUP_KEY.JS_L=1; break; //长按计时
  33. }
  34. }
  35. }
  36. void Keys_Init(void)
  37. {
  38. button_init_Head();
  39. button_init(&kCS, Read_CS_GPIO, 0); //低电平触发
  40. button_init(&kJS, Read_JS_GPIO, 0); //低电平触发
  41. button_attach(&kCS, SINGLE_CLICK, Keys_SIG);
  42. button_attach(&kCS, LONG_RRESS_START, Keys_SIG);
  43. button_attach(&kJS, SINGLE_CLICK, Keys_SIG);
  44. button_attach(&kJS, LONG_RRESS_START, Keys_SIG);
  45. button_start(&kCS);
  46. button_start(&kJS);
  47. //make the timer invoking the button_ticks() interval 5ms.
  48. //This function is implemented by yourself.
  49. //__timer_start(button_ticks, 0, 5);
  50. }
  51. static bool JS_On = true;
  52. void Key_JS_Hanlder ( void* btn )
  53. {
  54. #if 0
  55. if ( SysRunType == SysRun_Norm )
  56. {
  57. StopBeep();
  58. }
  59. #endif
  60. Smg_Display_Next();
  61. }
  62. void Key_CS_Hanlder ( void* btn )
  63. {
  64. #if 0
  65. switch ( SysRunType )
  66. {
  67. case SysRun_Norm:
  68. SysRunType = SysRun_Test;
  69. sysLed_Set ( LED_MODE_TEST_RUN );
  70. break;
  71. case SysRun_Test:
  72. SysRunType = SysRun_Norm;
  73. sysLed_Set ( LED_MODE_WORK_RUN );
  74. break;
  75. }
  76. Fas_Param_Of_Mode_Change ( SysRunType );
  77. #endif
  78. }
  79. void Key_JS_Long_Hanlder ( void* btn )
  80. {
  81. //WaitKey_GotoTest();
  82. JS_On = !JS_On;
  83. Smg_Display_OnOff(JS_On);
  84. }
  85. void Key_CS_Long_Hanlder ( void* btn )
  86. {
  87. }
  88. void WaitKey_GotoTest ( void )
  89. {
  90. #if 0
  91. static bool Can_enter_Factory = TRUE;
  92. if ( sys_rtc_time <= 10 ) //启动10秒内,按下Key_CS
  93. {
  94. if ( Can_enter_Factory )
  95. {
  96. Can_enter_Factory = FALSE;
  97. SysRunType = SysRun_Test;
  98. sysLed_Set ( LED_MODE_TEST_RUN );
  99. }
  100. }
  101. #endif
  102. }
  103. void Keys_All_Handler(void)
  104. {
  105. if(GROUP_KEY.CS)
  106. {
  107. GROUP_KEY.CS = 0;
  108. Key_CS_Hanlder(&kCS);
  109. }
  110. if(GROUP_KEY.JS)
  111. {
  112. GROUP_KEY.JS = 0;
  113. Key_JS_Hanlder(&kJS);
  114. }
  115. if(GROUP_KEY.CS_L)
  116. {
  117. GROUP_KEY.CS_L = 0;
  118. Key_CS_Long_Hanlder(&kCS);
  119. }
  120. if(GROUP_KEY.JS_L)
  121. {
  122. GROUP_KEY.JS_L = 0;
  123. Key_JS_Long_Hanlder(&kJS);
  124. }
  125. }