struct UART_module* UART_newModule(unsigned char moduleNumber, unsigned int baudRate, unsigned char wordLength, FIFOLevelSelect RxFullAt, FIFOLevelSelect TxFullAt) { struct UART_module* retVal = malloc(sizeof *retVal); if(moduleNumber <NUM_UART_MODULES){ retVal->moduleNumber = moduleNumber; retVal->baudRate = baudRate; retVal->wordLength = wordLength; retVal->port = UART_portMap[moduleNumber]; retVal->pinMap = UART_pinMap[moduleNumber]; if(wordLength >4 && wordLength <=8) retVal->encodedWordLength = wordLength - 5; else retVal->encodedWordLength = 3; retVal->UART_port = UART_getUARTAddress(moduleNumber); retVal->GPIO_port = UART_getGPIOAddress(moduleNumber); retVal->RxFullAt = RxFullAt; retVal->TxFullAt = TxFullAt; UART_initModule(retVal); return retVal; }else{ free(retVal); return NULL; } }
void InitUart(uint32_t uartModuleBaseAdress,uint8_t uartPort,uint8_t pin1Uart,uint8_t pin2Uart,uint8_t pin3Uart, eUSCI_UART_Config uartConfiguration,uint8_t primaryModuleFunction) { /* Selecting P1.2 and P1.3 in UART mode */ GPIO_setAsPeripheralModuleFunctionInputPin(uartPort, pin1Uart | pin2Uart | pin3Uart, primaryModuleFunction); /* Setting DCO to 12MHz */ CS_setDCOCenteredFrequency(CS_DCO_FREQUENCY_12); /* Configuring UART Module */ UART_initModule(uartModuleBaseAdress, &uartConfiguration); /* Enable UART module */ UART_enableModule(uartModuleBaseAdress); }
struct UART_module* UART_initialize(unsigned char moduleNumber, unsigned int baudRate, unsigned char wordLength, FIFOLevelSelect RxFullAt, FIFOLevelSelect TxFullAt) { struct UART_module* module = UART_newModule(moduleNumber, baudRate, wordLength, RxFullAt, TxFullAt); UART_initModule(module); return module; }