// >>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<< // ------------------------------------------------------------------ // Copyright (c) 2019-2023 by Lattice Semiconductor Corporation // ALL RIGHTS RESERVED // ------------------------------------------------------------------ // // IMPORTANT: THIS FILE IS USED BY OR GENERATED BY the LATTICE PROPELâ„¢ // DEVELOPMENT SUITE, WHICH INCLUDES PROPEL BUILDER AND PROPEL SDK. // // Lattice grants permission to use this code pursuant to the // terms of the Lattice Propel License Agreement. // // DISCLAIMER: // // LATTICE MAKES NO WARRANTIES ON THIS FILE OR ITS CONTENTS, WHETHER // EXPRESSED, IMPLIED, STATUTORY, OR IN ANY PROVISION OF THE LATTICE // PROPEL LICENSE AGREEMENT OR COMMUNICATION WITH LICENSEE, AND LATTICE // SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF MERCHANTABILITY OR // FITNESS FOR A PARTICULAR PURPOSE. LATTICE DOES NOT WARRANT THAT THE // FUNCTIONS CONTAINED HEREIN WILL MEET LICENSEE'S REQUIREMENTS, OR THAT // LICENSEE'S OPERATION OF ANY DEVICE, SOFTWARE OR SYSTEM USING THIS FILE // OR ITS CONTENTS WILL BE UNINTERRUPTED OR ERROR FREE, OR THAT DEFECTS // HEREIN WILL BE CORRECTED. LICENSEE ASSUMES RESPONSIBILITY FOR // SELECTION OF MATERIALS TO ACHIEVE ITS INTENDED RESULTS, AND FOR THE // PROPER INSTALLATION, USE, AND RESULTS OBTAINED THEREFROM. LICENSEE // ASSUMES THE ENTIRE RISK OF THE FILE AND ITS CONTENTS PROVING DEFECTIVE // OR FAILING TO PERFORM PROPERLY AND IN SUCH EVENT, LICENSEE SHALL // ASSUME THE ENTIRE COST AND RISK OF ANY REPAIR, SERVICE, CORRECTION, OR // ANY OTHER LIABILITIES OR DAMAGES CAUSED BY OR ASSOCIATED WITH THE // SOFTWARE. IN NO EVENT SHALL LATTICE BE LIABLE TO ANY PARTY FOR DIRECT, // INDIRECT,SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST // PROFITS, ARISING OUT OF THE USE OF THIS FILE OR ITS CONTENTS, EVEN IF // LATTICE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. LATTICE'S // SOLE LIABILITY, AND LICENSEE'S SOLE REMEDY, IS SET FORTH ABOVE. // LATTICE DOES NOT WARRANT OR REPRESENT THAT THIS FILE, ITS CONTENTS OR // USE THEREOF DOES NOT INFRINGE ON THIRD PARTIES' INTELLECTUAL PROPERTY // RIGHTS, INCLUDING ANY PATENT. IT IS THE USER'S RESPONSIBILITY TO VERIFY // THE USER SOFTWARE DESIGN FOR CONSISTENCY AND FUNCTIONALITY THROUGH THE // USE OF FORMAL SOFTWARE VALIDATION METHODS. // ------------------------------------------------------------------ #include "uart.h" #include "gpio.h" #include "pic.h" #include "utils.h" #include struct uart_instance uart_core_uart; struct gpio_instance gpio_inst; int main(void) { static uint8_t idx = 0; static uint8_t pin_state = 0xFF; //initialize GPIO gpio_inst.instance_name = GPIO0_INST_NAME; gpio_init(&gpio_inst, GPIO0_INST_BASE_ADDR, GPIO0_INST_LINES_NUM, GPIO0_INST_GPIO_DIRS); #if _UART_ENABLE_INTERRUPTS_ //setup uart IRQ pic_init(CPU0_INST_PICTIMER_START_ADDR); uart_core_uart.intrLevel = UART0_INST_IRQ; pic_isr_register(UART0_INST_IRQ, uart_isr, (void *)&uart_core_uart); #endif //initialize UART uart_init(&uart_core_uart, UART0_INST_BASE_ADDR, CPU_FREQUENCY, UART0_INST_BAUD_RATE, 1, 8); #ifdef LSCC_STDIO_UART_APB extern struct uart_instance *g_stdio_uart; g_stdio_uart = &uart_core_uart; #endif printf("Hello RISC-V world!\r\n"); while (true) { gpio_output_write(&gpio_inst, idx, pin_state); if (++idx == LED_COUNT) { idx = 0; pin_state = ~pin_state; } if (RTL_SIM) { delayMS(1); } else { delayMS(500); } } return 0; }