bsp_V8M_YY_led.c 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. #include <stdint.h>
  2. #include "board.h"
  3. #include "hpm_gpio_drv.h"
  4. #include "hpm_gpiom_drv.h"
  5. #include "bsp_V8M_YY_led.h"
  6. #include "test.h"
  7. #define RGB_R_GPIO_CTRL HPM_GPIO0
  8. #define RGB_G_GPIO_CTRL HPM_GPIO0
  9. #define RGB_B_GPIO_CTRL HPM_GPIO0
  10. #define RGB_R_GPIO_INDEX GPIO_DI_GPIOB
  11. #define RGB_G_GPIO_INDEX GPIO_DI_GPIOB
  12. #define RGB_B_GPIO_INDEX GPIO_DI_GPIOB
  13. #define RGB_R_GPIO_PIN 29
  14. #define RGB_G_GPIO_PIN 30
  15. #define RGB_B_GPIO_PIN 31
  16. static void v8m_yy_led_all_off(void);
  17. static void v8m_yy_led_all_on(void);
  18. void v8m_yy_led_init(void)
  19. {
  20. /* 配置GPIO */
  21. HPM_IOC->PAD[IOC_PAD_PB28].FUNC_CTL = IOC_PB29_FUNC_CTL_GPIO_B_29;
  22. gpiom_set_pin_controller(HPM_GPIOM, GPIOM_ASSIGN_GPIOB, 29, gpiom_soc_gpio0);
  23. gpio_set_pin_output(HPM_GPIO0, GPIO_OE_GPIOB, 29);
  24. HPM_IOC->PAD[IOC_PAD_PB29].FUNC_CTL = IOC_PB30_FUNC_CTL_GPIO_B_30;
  25. gpiom_set_pin_controller(HPM_GPIOM, GPIOM_ASSIGN_GPIOB, 30, gpiom_soc_gpio0);
  26. gpio_set_pin_output(HPM_GPIO0, GPIO_OE_GPIOB, 30);
  27. HPM_IOC->PAD[IOC_PAD_PB30].FUNC_CTL = IOC_PB31_FUNC_CTL_GPIO_B_31;
  28. gpiom_set_pin_controller(HPM_GPIOM, GPIOM_ASSIGN_GPIOB, 31, gpiom_soc_gpio0);
  29. gpio_set_pin_output(HPM_GPIO0, GPIO_OE_GPIOB, 31);
  30. /* 全灭*/
  31. v8m_yy_led_all_off();
  32. }
  33. void v8m_yy_led_on(uint8_t color)
  34. {
  35. if (color & V8M_YY_LED_R)
  36. {
  37. gpio_write_pin(RGB_R_GPIO_CTRL, RGB_R_GPIO_INDEX, RGB_R_GPIO_PIN, 1);
  38. }
  39. if (color & V8M_YY_LED_G)
  40. {
  41. gpio_write_pin(RGB_G_GPIO_CTRL, RGB_G_GPIO_INDEX, RGB_G_GPIO_PIN, 1);
  42. }
  43. if (color & V8M_YY_LED_B)
  44. {
  45. gpio_write_pin(RGB_B_GPIO_CTRL, RGB_B_GPIO_INDEX, RGB_B_GPIO_PIN, 1);
  46. }
  47. }
  48. void v8m_yy_led_off(uint8_t color)
  49. {
  50. if (color & V8M_YY_LED_R)
  51. {
  52. gpio_write_pin(RGB_R_GPIO_CTRL, RGB_R_GPIO_INDEX, RGB_R_GPIO_PIN, 0);
  53. }
  54. if (color & V8M_YY_LED_G)
  55. {
  56. gpio_write_pin(RGB_G_GPIO_CTRL, RGB_G_GPIO_INDEX, RGB_G_GPIO_PIN, 0);
  57. }
  58. if (color & V8M_YY_LED_B)
  59. {
  60. gpio_write_pin(RGB_B_GPIO_CTRL, RGB_B_GPIO_INDEX, RGB_B_GPIO_PIN, 0);
  61. }
  62. }
  63. static void v8m_yy_led_all_off(void)
  64. {
  65. gpio_write_pin(RGB_R_GPIO_CTRL, RGB_R_GPIO_INDEX, RGB_R_GPIO_PIN, 0);
  66. gpio_write_pin(RGB_G_GPIO_CTRL, RGB_G_GPIO_INDEX, RGB_G_GPIO_PIN, 0);
  67. gpio_write_pin(RGB_B_GPIO_CTRL, RGB_B_GPIO_INDEX, RGB_B_GPIO_PIN, 0);
  68. }
  69. static void v8m_yy_led_all_on(void)
  70. {
  71. gpio_write_pin(RGB_R_GPIO_CTRL, RGB_R_GPIO_INDEX, RGB_R_GPIO_PIN, 1);
  72. gpio_write_pin(RGB_G_GPIO_CTRL, RGB_G_GPIO_INDEX, RGB_G_GPIO_PIN, 1);
  73. gpio_write_pin(RGB_B_GPIO_CTRL, RGB_B_GPIO_INDEX, RGB_B_GPIO_PIN, 1);
  74. }
  75. void v8m_yy_led_toggle(uint8_t color)
  76. {
  77. if (color & V8M_YY_LED_R)
  78. {
  79. gpio_toggle_pin(RGB_R_GPIO_CTRL, RGB_R_GPIO_INDEX, RGB_R_GPIO_PIN);
  80. }
  81. if (color & V8M_YY_LED_G)
  82. {
  83. gpio_toggle_pin(RGB_G_GPIO_CTRL, RGB_G_GPIO_INDEX, RGB_G_GPIO_PIN);
  84. }
  85. if (color & V8M_YY_LED_B)
  86. {
  87. gpio_toggle_pin(RGB_B_GPIO_CTRL, RGB_B_GPIO_INDEX, RGB_B_GPIO_PIN);
  88. }
  89. }
  90. #ifdef LED_TEST
  91. /* 2026/03/13 demo测试通过*/
  92. void v8m_yy_led_test(void)
  93. {
  94. v8m_yy_led_init();
  95. while(1)
  96. {
  97. board_delay_ms(1000);
  98. v8m_yy_led_all_off();
  99. board_delay_ms(1000);
  100. v8m_yy_led_all_on();
  101. }
  102. }
  103. #endif