Esempio n. 1
0
 static inline void _uart0_peripheral_init(void){
     USCI_A_UART_initParam param = {0};
     param.selectClockSource =   USCI_A_UART_CLOCKSOURCE_SMCLK;
     param.clockPrescalar =      _UART0_DIV_INT;
     param.firstModReg =         0;
     param.secondModReg =        (uint8_t)_UART0_BRS_VAL;
     param.parity =              USCI_A_UART_NO_PARITY;
     param.msborLsbFirst =       USCI_A_UART_LSB_FIRST;
     param.numberofStopBits =    USCI_A_UART_ONE_STOP_BIT;
     param.uartMode =            USCI_A_UART_MODE;
     param.overSampling =        USCI_A_UART_LOW_FREQUENCY_BAUDRATE_GENERATION;
     
     USCI_A_UART_init(uC_UART0_BASE, &param);
     USCI_A_UART_enable(uC_UART0_BASE);  
     USCI_A_UART_clearInterrupt(uC_UART0_BASE, USCI_A_UART_RECEIVE_INTERRUPT);
     USCI_A_UART_enableInterrupt(uC_UART0_BASE, USCI_A_UART_RECEIVE_INTERRUPT);
 }
void msp430_uart_init(unsigned long baud)
{
	unsigned long divider;
	unsigned long _smclk;

	_smclk = msp430_get_smclk_freq();

    /**Configure UART pins
     * Set P4.4 and P4.5 as Secondary Module Function Input.
     * Select Port 4
     * Set Pin 4, 5 to input Secondary Module Function, (UCA1TXD/UCA1SIMO, UCA1RXD/UCA1SOMI).
     **/
    GPIO_setAsPeripheralModuleFunctionInputPin(
        GPIO_PORT_P4,
        GPIO_PIN4 + GPIO_PIN5
        );

    divider=(_smclk<<3)/baud;   //fixed-point number: q3

    // Configure UART
    USCI_A_UART_initParam param = {0};
    param.selectClockSource = USCI_A_UART_CLOCKSOURCE_SMCLK;
    param.clockPrescalar = divider>>3;
    param.firstModReg = 0;
    param.secondModReg = (divider & 0x07);
    param.parity = USCI_A_UART_NO_PARITY;
    param.msborLsbFirst = USCI_A_UART_LSB_FIRST;
    param.numberofStopBits = USCI_A_UART_ONE_STOP_BIT;
    param.uartMode = USCI_A_UART_MODE;
    param.overSampling = USCI_A_UART_LOW_FREQUENCY_BAUDRATE_GENERATION;

    USCI_A_UART_init(USCI_A1_BASE, &param);
    USCI_A_UART_enable(USCI_A1_BASE);
    USCI_A_UART_clearInterrupt(USCI_A1_BASE,
    		                   USCI_A_UART_RECEIVE_INTERRUPT_FLAG);

    // Enable USCI_A1 RX interrupt
    USCI_A_UART_enableInterrupt(USCI_A1_BASE,
    		                    USCI_A_UART_RECEIVE_INTERRUPT); // Enable interrupt
}
Esempio n. 3
0
/*P5.6 P5.7 串口屏*/
int UartScreenInit(void){
	GPIO_setAsPeripheralModuleFunctionInputPin(
		GPIO_PORT_P5,
		GPIO_PIN6 + GPIO_PIN7
		);

	//Initialize UART module in auto baudrate detection multiprocessor mode
	//Baudrate = 9600, clock freq = 1.048MHz
	//UCBRx = 6, UCBRFx = 13, UCBRSx = 0, UCOS16 = 1
	USCI_A_UART_initParam param = {0};
	param.selectClockSource = USCI_A_UART_CLOCKSOURCE_SMCLK;
	param.clockPrescalar = 6;
	param.firstModReg = 13;
	param.secondModReg = 0;
	param.parity = USCI_A_UART_NO_PARITY;
	param.msborLsbFirst = USCI_A_UART_LSB_FIRST;
	param.numberofStopBits = USCI_A_UART_ONE_STOP_BIT;
	param.uartMode = USCI_A_UART_AUTOMATIC_BAUDRATE_DETECTION_MODE;
	param.overSampling = USCI_A_UART_OVERSAMPLING_BAUDRATE_GENERATION;
	if(STATUS_FAIL == USCI_A_UART_init(USCI_A1_BASE, &param))
	{
		return 0;
	}

	//Enable UART module for operation
	USCI_A_UART_enable(USCI_A1_BASE);

	//Put UART to sleep/dormant mode toreceive break/sync first
//	USCI_A_UART_setDormant(USCI_A1_BASE);
    USCI_A_UART_transmitBreak(USCI_A1_BASE);

	//Enable Receive Interrupt
	USCI_A_UART_clearInterrupt(USCI_A1_BASE,
							   USCI_A_UART_RECEIVE_INTERRUPT);
	USCI_A_UART_enableInterrupt(USCI_A1_BASE,
								USCI_A_UART_RECEIVE_INTERRUPT);
	return 1;
}