led.c 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. /*
  2. * Copyright (c) 2006-2021, RT-Thread Development Team
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. *
  6. * Change Logs:
  7. * Date Author Notes
  8. * 2020-10-28 luhuadong first version
  9. */
  10. #include <rtdevice.h>
  11. #include <hifive1.h>
  12. #include <platform.h>
  13. #include <gpio.h>
  14. #include "led.h"
  15. #define USER_LED_OFFSET 5
  16. static void _led_init(rt_uint8_t offset)
  17. {
  18. GPIO_REG(GPIO_IOF_EN) &= ~(1UL << offset);
  19. GPIO_REG(GPIO_OUTPUT_EN) |= (1UL << offset);
  20. }
  21. static void _led_set(rt_uint8_t offset, rt_uint8_t val)
  22. {
  23. switch (val)
  24. {
  25. case LED_ON:
  26. GPIO_REG(GPIO_OUTPUT_VAL) |= (1UL << offset);
  27. break;
  28. case LED_OFF:
  29. GPIO_REG(GPIO_OUTPUT_VAL) &= ~(1UL << offset);
  30. break;
  31. default:
  32. break;
  33. }
  34. }
  35. static void _led_toggle(rt_uint8_t offset)
  36. {
  37. GPIO_REG(GPIO_OUTPUT_VAL) ^= (1UL << offset);
  38. }
  39. void led_init(void)
  40. {
  41. _led_init(USER_LED_OFFSET);
  42. }
  43. void led_set(rt_uint8_t val)
  44. {
  45. _led_set(USER_LED_OFFSET, val);
  46. }
  47. void led_toggle(void)
  48. {
  49. _led_toggle(USER_LED_OFFSET);
  50. }