Advertisement
Guest User

Untitled

a guest
Mar 31st, 2020
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.96 KB | None | 0 0
  1. #include "uart.h"
  2.  
  3. #define UART0 ((volatile uint32_t *)0x40000000)
  4. #define DATA 0
  5. #define STATE 1
  6. #define CTRL 2
  7. #define INTSTAT 3
  8. #define BAUDDIV 4
  9. #define PID4 1012
  10. #define PID0 1016
  11. #define PID1 1017
  12. #define PID2 1018
  13. #define PID3 1019
  14. #define CID0 1020
  15. #define CID1 1021
  16. #define CID2 1022
  17. #define CID3 1023
  18.  
  19. #define CTRL_TX_EN 0x01
  20. #define CTRL_RX_EN 0x02
  21. #define CTRL_TXINT_EN 0x04
  22. #define CTRL_RXINT_EN 0x08
  23. #define CTRL_TXOR_EN 0x10
  24. #define CTRL_RXOR_EN 0x20
  25. #define CTRL_HISPEEDTEST_EN 0x40
  26.  
  27. #include "vga.h"
  28.  
  29. void uart_isr() {
  30.     vga_terminal_printf("UART ISR!\n");
  31. }
  32.  
  33. void uart_init() {
  34.     UART0[BAUDDIV] = 0xff;
  35.     UART0[CTRL] = CTRL_TX_EN | CTRL_RX_EN | CTRL_TXINT_EN | CTRL_RXINT_EN;
  36.     interrupt_enable(IRQnum_UART0_RX);
  37.     interrupt_enable(IRQnum_UART0_TX);
  38.  
  39.     void **irq = IRQ(IRQnum_UART0_RX);
  40.     *irq = &uart_isr;
  41.     irq = IRQ(IRQnum_UART0_TX);
  42.         *irq = &uart_isr;
  43. }
  44.  
  45. char uart_read() {
  46.     return 0;
  47. }
  48.  
  49. void uart_write(char data) {
  50.  
  51. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement