// ---------------------------------------------------------------------------- // Copyright (c) 2020-2025 RVX contributors // // This work is licensed under the MIT License, see LICENSE file for details. // SPDX-License-Identifier: MIT // ---------------------------------------------------------------------------- #include "libsteel.h" #define DEFAULT_UART (UartController *)0x80000000 // UART interrupt signal is connected to Fast IRQ #0 __NAKED void fast0_irq_handler(void) { char rx = uart_read(DEFAULT_UART); if (rx == '\r') // Enter key uart_write_string(DEFAULT_UART, "\n\nType something else and press enter: "); else if (rx < 127) uart_write(DEFAULT_UART, rx); __ASM_VOLATILE("mret"); } void main(void) { uart_write_string(DEFAULT_UART, "RVX - UART demo"); uart_write_string(DEFAULT_UART, "\n\nType something and press Enter:\n"); csr_enable_vectored_mode_irq(); CSR_SET(CSR_MIE, MIP_MIE_MASK_F0I); csr_global_enable_irq(); while (1) ; }