예제 #1
0
void UART_init(void) {

    // Habilito la llave general de las interrupciones

    NVICISER0 |= NVIC_ISER_SETENA(1<<31);

    //Habilito los cuatro modulos de UART
    SIM_SCGC4 |= SIM_SCGC4_UART0_MASK;
    SIM_SCGC5 |= SIM_SCGC5_PORTB_MASK;
    // Habilito el pin PTC1 como salida del canal 0
    PORTB_PCR16 = (PORT_PCR_ISF_MASK |
                   PORT_PCR_MUX(0x03));	//Tx
    PORTB_PCR17 = (PORT_PCR_ISF_MASK |
                   PORT_PCR_MUX(0x03)); //Rx

    //Habilito por interrupcion, un bit de stop y baudrate
    UART_C1_REG(UART0_BASE_PTR) = 0x00;

    UART_BDH_REG(UART0_BASE_PTR) = /*UART_BDH_RXEDGIE_MASK | */UART_BDH_SBR(BAUDRATEHIGH);
    UART_BDL_REG(UART0_BASE_PTR) = UART_BDL_SBR(BAUDRATELOW);

    UART_C2_REG(UART0_BASE_PTR) = UART_C2_TIE_MASK | UART_C2_TE_MASK | UART_C2_RE_MASK | UART_C2_RIE_MASK;
    UART_C3_REG(UART0_BASE_PTR) = UART_C3_TXDIR_MASK;
    UART_PFIFO_REG(UART0_BASE_PTR) = UART_PFIFO_TXFE_MASK | UART_PFIFO_TXFIFOSIZE(0x06) | UART_PFIFO_RXFE_MASK | UART_PFIFO_RXFIFOSIZE(0x01);
    UART_S2_REG(UART0_BASE_PTR) = 0x00;
}
예제 #2
0
void UART2_init(uint32_t BAUD_RATE)
{
	uint16_t sbr=0; 															// auxiliary variable to store SBR register value
	
	/* PORT CONFIG */
	SIM->SCGC5 |= SIM_SCGC5_PORTA_MASK						// clock gating for UART module pins
						 |  SIM_SCGC5_PORTB_MASK
						 |  SIM_SCGC5_PORTC_MASK
						 |  SIM_SCGC5_PORTD_MASK
						 |  SIM_SCGC5_PORTE_MASK;
	
	SIM->SCGC4 |= SIM_SCGC4_UART2_MASK;						// clock gating for UART module
	
	UART_GPIO_init(UART2_TX);
	UART_GPIO_init(UART2_RX);
	
	/* SBR */
	sbr = (BUS_CLOCK)/(16*BAUD_RATE);
	
	/* UART MODULE CONFIG */
	UART2->BDH |= UART_BDH_SBR(sbr>>8);						// writing to higher register 
	UART2->BDL = UART_BDL_SBR(sbr);								// writing to lower register

	UART2->C2 |= UART_C2_TIE_MASK;								// enabling transmit interrupt									
	UART2->C2 |= UART_C2_RIE_MASK;								// enabling receiver interrupt
	UART2_ENABLE_TX;															// enabling transmiter
	UART2->C2 |= UART_C2_RE_MASK;									// enabling receiver
	
	/* INTERRUPT CONFIG */
	NVIC_ClearPendingIRQ(UART2_IRQn);
	NVIC_SetPriority(UART2_IRQn,3);
	NVIC_EnableIRQ(UART2_IRQn);
}