1867ca34a5e2c5628ca06f17a8ec80d5c920a45e.svn-base 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. #include "multi_button.h"
  2. #include "Keys.h"
  3. #include "N76E003.h"
  4. pKeyState GROUP_KEY = {0};
  5. struct Button kCS, kJS;
  6. void ScanKey ( void ) //5ms
  7. {
  8. button_ticks();
  9. }
  10. uint8_t Read_CS_GPIO()
  11. {
  12. return ( bool ) P04;
  13. }
  14. void Keys_SIG ( void* btn )
  15. {
  16. int event;
  17. if ( btn == &kCS )
  18. {
  19. event = get_button_event ( btn );
  20. switch ( event )
  21. {
  22. case SINGLE_CLICK:
  23. GROUP_KEY.CS = 1;
  24. break; //测试
  25. case LONG_RRESS_START:
  26. GROUP_KEY.CS_L = 1;
  27. break; //长按测试
  28. }
  29. }
  30. else if ( btn == &kJS )
  31. {
  32. event = get_button_event ( btn );
  33. switch ( event )
  34. {
  35. case SINGLE_CLICK:
  36. GROUP_KEY.JS = 1;
  37. break; //计时
  38. case LONG_RRESS_START:
  39. GROUP_KEY.JS_L = 1;
  40. break; //长按计时
  41. }
  42. }
  43. }
  44. void Keys_Init ( void )
  45. {
  46. button_init_Head();
  47. button_init ( &kCS, Read_CS_GPIO, 0 ); //低电平触发
  48. button_attach ( &kCS, SINGLE_CLICK, Keys_SIG );
  49. button_attach ( &kCS, LONG_RRESS_START, Keys_SIG );
  50. button_start ( &kCS );
  51. //make the timer invoking the button_ticks() interval 5ms.
  52. //This function is implemented by yourself.
  53. //__timer_start(button_ticks, 0, 5);
  54. }
  55. void Key_CS_Hanlder ( void* btn )
  56. {
  57. if ( btn )
  58. {}
  59. }
  60. void Key_CS_Long_Hanlder ( void* btn )
  61. {
  62. if ( btn )
  63. {}
  64. }
  65. void Keys_All_Handler ( void )
  66. {
  67. if ( GROUP_KEY.CS )
  68. {
  69. GROUP_KEY.CS = 0;
  70. Key_CS_Hanlder ( &kCS );
  71. }
  72. if ( GROUP_KEY.CS_L )
  73. {
  74. GROUP_KEY.CS_L = 0;
  75. Key_CS_Long_Hanlder ( &kCS );
  76. }
  77. }