led.c 877 B

12345678910111213141516171819202122232425262728293031323334353637383940
  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. * 2011-01-13 weety first version
  9. */
  10. #include <rtthread.h>
  11. #include <at91sam9g45.h>
  12. #include "led.h"
  13. // BYHX A-Plus Board
  14. #define LED0 (1UL << 30)
  15. #define LED1 (1UL << 31)
  16. #define LED2 (1UL << 29)
  17. #define LED3 (1UL << 28)
  18. #define LED_ALL (LED0 | LED1 | LED2 | LED3)
  19. void led_init(void)
  20. {
  21. AT91C_BASE_PIOC->PIO_PER = LED_ALL;
  22. AT91C_BASE_PIOC->PIO_OER = LED_ALL;
  23. AT91C_BASE_PIOC->PIO_PPUER = LED_ALL;
  24. AT91C_BASE_PIOC->PIO_SODR = LED_ALL;
  25. }
  26. const static rt_uint32_t m_leds[] = { LED0, LED1, LED2, LED3 };
  27. void led_on(int num)
  28. {
  29. if (num < 4) AT91C_BASE_PIOC->PIO_CODR = m_leds[num];
  30. }
  31. void led_off(int num)
  32. {
  33. if (num < 4) AT91C_BASE_PIOC->PIO_SODR = m_leds[num];
  34. }