fe310_hal.c 782 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #include <metal/gpio.h>
  2. #include <metal/uart.h>
  3. #include <metal/machine.h>
  4. #include <metal/drivers/sifive_uart0.h>
  5. #include "fe310_hal.h"
  6. static struct metal_gpio *gpio_device;
  7. void platform_init(void)
  8. {
  9. gpio_device = metal_gpio_get_device(0);
  10. }
  11. void init_uart(void)
  12. {
  13. ;
  14. }
  15. void trigger_setup(void)
  16. {
  17. metal_gpio_enable_output(gpio_device, 13);
  18. }
  19. void trigger_high(void)
  20. {
  21. metal_gpio_set_pin(gpio_device, 13, 1);
  22. }
  23. void trigger_low(void)
  24. {
  25. metal_gpio_set_pin(gpio_device, 13, 0);
  26. }
  27. char getch(void)
  28. {
  29. int c;
  30. do {
  31. metal_uart_getc((struct metal_uart *)&__metal_dt_serial_10013000, &c);
  32. }while(c == -1);
  33. return (char)(c & 0xff);
  34. }
  35. void putch(char c)
  36. {
  37. metal_uart_putc((struct metal_uart *)&__metal_dt_serial_10013000, c);
  38. }