void uart1_init( void ) { uart_periph_init(&uart1); uart1.reg_addr = UART1_BASE; #ifdef USE_UART1_RX_ONLY // only use the RX1 P0.9 pin, no TX PINSEL0 = (PINSEL0 & ~U1_PINMASK_RX) | U1_PINSEL_RX; #else // set port pins for UART1 PINSEL0 = (PINSEL0 & ~U1_PINMASK) | U1_PINSEL; #endif uart_disable_interrupts(&uart1); uart_set_baudrate(&uart1, UART1_BAUD); // initialize the interrupt vector VICIntSelect &= ~VIC_BIT(VIC_UART1); // UART1 selected as IRQ VICIntEnable = VIC_BIT(VIC_UART1); // UART1 interrupt enabled _VIC_CNTL(UART1_VIC_SLOT) = VIC_ENABLE | VIC_UART1; _VIC_ADDR(UART1_VIC_SLOT) = (uint32_t)uart1_ISR; // address of the ISR // enable receiver interrupts uart_enable_interrupts(&uart1); }
void uart0_init( void ) { uart_periph_init(&uart0); uart0.reg_addr = UART0_BASE; #ifdef USE_UART0_RX_ONLY // only use the RX0 P0.1 pin, no TX PINSEL0 = (PINSEL0 & ~U0_PINMASK_RX) | U0_PINSEL_RX; #else // set port pins for UART0 PINSEL0 = (PINSEL0 & ~U0_PINMASK) | U0_PINSEL; #endif // initialize uart parameters uart_disable_interrupts(&uart0); uart_set_baudrate(&uart0, UART0_BAUD); // initialize the interrupt vector VICIntSelect &= ~VIC_BIT(VIC_UART0); // UART0 selected as IRQ VICIntEnable = VIC_BIT(VIC_UART0); // UART0 interrupt enabled _VIC_CNTL(UART0_VIC_SLOT) = VIC_ENABLE | VIC_UART0; _VIC_ADDR(UART0_VIC_SLOT) = (uint32_t)uart0_ISR; // address of the ISR uart_enable_interrupts(&uart0); }
/// Set interrupts to a previous state int chip_uart_int_set(void* device, int state) { int rc = chip_uart_int_enabled(device); if ( state ) uart_enable_interrupts(device); else uart_disable_interrupts(device); return rc; }
void uart_periph_set_baudrate(struct uart_periph* p, uint32_t baud, bool_t hw_flow_control __attribute__ ((unused))) { uart_disable_interrupts(p); uart_set_baudrate(p, baud); uart_enable_interrupts(p); }
void uart_periph_set_baudrate(struct uart_periph* p, uint32_t baud) { uart_disable_interrupts(p); uart_set_baudrate(p, baud); uart_enable_interrupts(p); }