#include "scr1_csr_encoding.h"
#include "riscv_csr_encoding.h"
#include "mik32_memory_map.h"
#include "power_manager.h"
#include "pad_config.h"
#include "epic.h"
#include "uart.h"
volatile uint32_t ddd;
void trap_handler(void)
{
if (EPIC->RAW_STATUS & (1<FLAGS & UART_FLAGS_RXNE_M)
{
ddd = UART_1->RXDATA;
UART_1->TXDATA = ddd;
}
}
}
int main()
{
PM->CLK_APB_M_SET |= PM_CLOCK_APB_M_EPIC_M;
PM->CLK_APB_P_SET |= PM_CLOCK_APB_P_UART_1_M | PM_CLOCK_APB_P_GPIO_1_M ;
PAD_CONFIG->PORT_1_CFG = (PAD_CONFIG->PORT_1_CFG & ~(PAD_CONFIG_PIN_M(8) | PAD_CONFIG_PIN_M(9))) \
| PAD_CONFIG_PIN(8,0x01) | PAD_CONFIG_PIN(9,0x01);
UART_1->CONTROL1 = 0;
UART_1->DIVIDER = 32000000/115200;
UART_1->CONTROL2 = 0;
UART_1->CONTROL3 = 0;
UART_1->CONTROL1 = UART_CONTROL1_TE_M | UART_CONTROL1_RE_M | UART_CONTROL1_M_8BIT_M | UART_CONTROL1_UE_M;
EPIC->MASK_LEVEL_SET = 1 << EPIC_UART_1_INDEX;
UART_1->CONTROL1 |= UART_CONTROL1_RXNEIE_M;
// global interrupt enable
set_csr(mstatus, MSTATUS_MIE); // Global interrupt enable
set_csr(mie, MIE_MEIE); // Machine External Interrupt Enable
while (1)
{
}
}