mux.h 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. #ifndef __MUX_H
  2. #define __MUX_H
  3. #include <stdbool.h>
  4. //
  5. #define LED_NUMBER 28
  6. #define LINE_0_SET GPIOE->scr = GPIO_PINS_3
  7. #define LINE_0_RESET GPIOE->clr = GPIO_PINS_3
  8. #define LINE_1_SET GPIOE->scr = GPIO_PINS_2
  9. #define LINE_1_RESET GPIOE->clr = GPIO_PINS_2
  10. #define LINE_2_SET GPIOB->scr = GPIO_PINS_9
  11. #define LINE_2_RESET GPIOB->clr = GPIO_PINS_9
  12. #define COL_1_SET GPIOD->scr = GPIO_PINS_6
  13. #define COL_1_RESET GPIOD->clr = GPIO_PINS_6
  14. #define COL_2_SET GPIOD->scr = GPIO_PINS_7
  15. #define COL_2_RESET GPIOD->clr = GPIO_PINS_7
  16. #define COL_3_SET GPIOB->scr = GPIO_PINS_6
  17. #define COL_3_RESET GPIOB->clr = GPIO_PINS_6
  18. #define COL_4_SET GPIOB->scr = GPIO_PINS_7
  19. #define COL_4_RESET GPIOB->clr = GPIO_PINS_7
  20. typedef enum
  21. {
  22. INP_1 = 0,
  23. INP_2,
  24. INP_3,
  25. INP_4,
  26. INP_5,
  27. INP_6,
  28. INP_7,
  29. INP_8,
  30. OUT_1_G,
  31. OUT_2_G,
  32. OUT_3_G,
  33. OUT_4_G,
  34. OUT_1_R,
  35. OUT_2_R,
  36. OUT_3_R,
  37. OUT_4_R,
  38. STATUS_G,
  39. STATUS_R,
  40. RX_G,
  41. TX_R,
  42. OUT_5_R,
  43. OUT_6_R,
  44. OUT_7_R,
  45. OUT_8_R,
  46. OUT_5_G,
  47. OUT_6_G,
  48. OUT_7_G,
  49. OUT_8_G,
  50. } led_t;
  51. typedef enum
  52. {
  53. LED_OFF = 0,
  54. LED_ON,
  55. LED_BLINK,
  56. } led_state_t;
  57. typedef struct
  58. {
  59. led_t name;
  60. uint8_t line[3]; // [line_0, line_1, line_2]
  61. led_state_t state;
  62. uint32_t cnt;
  63. } mux_channel_t;
  64. //
  65. void mux_led_init(mux_channel_t *ch);
  66. //
  67. void mux_gpio_init(void);
  68. //
  69. void mux_led_proc(void);
  70. //
  71. void mux_led_blink(void);
  72. //
  73. void mux_led_test_init(void);
  74. //
  75. void mux_led_test_toggle(void);
  76. //
  77. void mux_led_status(bool state);
  78. extern mux_channel_t leds[];
  79. #endif // __MUX_H