This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TI-RTOS UART

Other Parts Discussed in Thread: SYSBIOS

Hi   all

        MCU: TM4C1294NCPDT

        TI-RTOS: v2.01.00.36

        NDK: v2.23.01.01

        CCS: v6.0.1.0040

        SYS/BIOS    6.4..02.27  GA  Release  Note

      When the program is running, I would like to modify uart configuration parameters (baud rate, data bits, stop bits, parity), another task I whether use this function (UARTConfigSetExpClk (UART0_BASE, 120000000, uart_bate, (UART_CONFIG_WLEN_8 UART_CONFIG_STOP_ONE  |UART_CONFIG_PAR_EVEN))  to achieve this function .

/*
* ======== uartecho.c ========
*/

/* XDCtools Header files */
#include <xdc/std.h>
#include <xdc/cfg/global.h>
#include <xdc/runtime/System.h>

/* BIOS Header files */
#include <ti/sysbios/BIOS.h>

/* TI-RTOS Header files */
#include <ti/drivers/GPIO.h>
#include <ti/drivers/UART.h>

/* Example/Board Header files */
#include "Board.h"

#include <stdint.h>

/*
* ======== echoFxn ========
* Task for this function is created statically. See the project's .cfg file.
*/
Void echoFxn(UArg arg0, UArg arg1)
{
char input;
UART_Handle uart;
UART_Params uartParams;
const char echoPrompt[] = "\fEchoing characters:\r\n";

/* Create a UART with data processing off. */
UART_Params_init(&uartParams);
uartParams.writeDataMode = UART_DATA_BINARY;
uartParams.readDataMode = UART_DATA_BINARY;
uartParams.readReturnMode = UART_RETURN_FULL;
uartParams.readEcho = UART_ECHO_OFF;
uartParams.baudRate = 9600;

uartParams.dataLength = UART_LEN_8;
uartParams.stopBits = UART_STOP_ONE;
uartParams.parityType = UART_PAR_NONE;


uart = UART_open(Board_UART0, &uartParams);

if (uart == NULL) {
System_abort("Error opening the UART");
}

UART_write(uart, echoPrompt, sizeof(echoPrompt));

/* Loop forever echoing */
while (1) {
UART_read(uart, &input, 1);
UART_write(uart, &input, 1);
}
}

Void   changeFxn(UArg arg0, UArg arg1)
{

UARTConfigSetExpClk (UART0_BASE, 120000000, uart_bate, (UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE  |UART_CONFIG_PAR_EVEN));

}

/*
* ======== main ========
*/
int main(void)
{
/* Call board init functions */
Board_initGeneral();
Board_initGPIO();
Board_initUART();

/* Turn on user LED */
GPIO_write(Board_LED0, Board_LED_ON);

/* This example has logging and many other debug capabilities enabled */
System_printf("This example does not attempt to minimize code or data ""footprint\n");
System_flush();

System_printf("Starting the UART Echo example\nSystem provider is set to ""SysMin. Halt the target to view any SysMin contents in ""ROV.\n");
/* SysMin will only print to the console when you call flush or exit */
System_flush();

/* Start BIOS */
BIOS_start();

return (0);
}

  • Hi Lewis,

    We recommend you to call UART_close() and then call UART_open() with new UART configuration parameters for a safe operation. Having said that, it may be possible to use UARTConfigSetExpClk() to modify parameters but I am not sure if it would break anything.

    Vikram