/* Open the UART module */ cc_hndl uart_open(u32 module_id) { struct uart_rtos_driver *rtos_drv = NULL; i32 retval; /* Check if the driver has already been loaded */ rtos_drv = check_uart_rtosdrv_inuse(module_id); if(NULL == rtos_drv) { /* Driver not loaded, return error */ goto exit; } if(rtos_drv->lock_obj) { RTOS_MUTEX_ACQUIRE(&rtos_drv->lock_obj); } else { /* Create the lock and sync objects */ retval = RTOS_SEM_CREATE(&rtos_drv->sync_obj); if(retval < 0) { goto exit1; } retval = RTOS_MUTEX_CREATE(&rtos_drv->lock_obj); if(retval < 0) { goto exit2; } RTOS_MUTEX_ACQUIRE(&rtos_drv->lock_obj); } /* increment the reference count */ rtos_drv->ref_cnt++; RTOS_MUTEX_RELEASE(&rtos_drv->lock_obj); return rtos_drv; exit2: RTOS_MUTEX_DELETE(&rtos_drv->lock_obj); exit1: RTOS_SEM_DELETE(&rtos_drv->sync_obj); rtos_drv->lock_obj = NULL; rtos_drv->sync_obj = NULL; exit: return NULL; }
void CLI_Configure(void) { #ifdef _USE_CLI_ P4SEL |= BIT5 + BIT4; /* P4.4,5 = USCI_A1 TXD/RXD */ UCA1CTL1 |= UCSWRST; /* Put state machine in reset */ UCA1CTL0 = 0x00; UCA1CTL1 = UCSSEL__SMCLK + UCSWRST; /* Use SMCLK, keep RESET */ UCA1BR0 = 0xD9; /* 25MHz/115200= 217.01 =0xD9 (see User's Guide) */ UCA1BR1 = 0x0; /* 25MHz/9600= 2604 =0xA2C (see User's Guide) */ UCA1MCTL = UCBRS_3 + UCBRF_0; /* Modulation UCBRSx=3, UCBRFx=0 */ UCA1CTL1 &= ~UCSWRST; /* Initialize USCI state machine */ /* Disable RX Interrupt on UART */ UCA1IFG &= ~ (UCRXIFG | UCRXIFG); UCA1IE &= ~UCRXIE; RTOS_MUTEX_CREATE(&g_printLock); setHandler(&CLI_Put); #endif }