mux.h 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. #ifndef __MUX_H
  2. #define __MUX_H
  3. #include <stdbool.h>
  4. //
  5. #define LED_NUMBER 4
  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. STATUS_G = 0,
  23. STATUS_R,
  24. RX_G,
  25. TX_R,
  26. } led_t;
  27. typedef enum
  28. {
  29. LED_OFF = 0,
  30. LED_ON,
  31. LED_BLINK,
  32. } led_state_t;
  33. typedef struct
  34. {
  35. led_t name;
  36. uint8_t line[3]; // [line_0, line_1, line_2]
  37. led_state_t state;
  38. uint32_t cnt;
  39. } mux_channel_t;
  40. //
  41. void mux_led_init(mux_channel_t *ch);
  42. //
  43. void mux_gpio_init(void);
  44. //
  45. void mux_led_proc(void);
  46. //
  47. void mux_led_blink(void);
  48. //
  49. void mux_led_test_init(void);
  50. //
  51. void mux_led_test_toggle(void);
  52. //
  53. void mux_led_status(bool state);
  54. extern mux_channel_t leds[];
  55. #endif // __MUX_H