/* Standard Include Files. */ #include #include #include #include #include #include /* BIOS/XDC Include Files. */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include /* mmWave SDK Include Files: */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include SOC_Handle socHandle; Event_Handle event; uint8_t period = 0; uint8_t buffer = 0; uint8_t metka = 0; UInt eventMask1 = Event_Id_00; UInt eventMask2 = Event_Id_01; UInt eventMask3 = Event_Id_02; uint32_t BAUDRATE = 115200; uint8_t STOPBITS = 1; uint8_t DATALEN = 8; uint8_t PARITY_VALUE = 4; uint8_t gMCPIUARTPollingModeEnable = 0; Event_Handle event1; uint32_t gCPUClockFrequency = (200 * 1000000); uint8_t uartDataLenths [] = { 0, // Padding 0, 0, 0, 0, (uint8_t) UART_LEN_5, (uint8_t) UART_LEN_6, (uint8_t) UART_LEN_7, (uint8_t) UART_LEN_8 }; uint8_t uartParityTypes [] = { (uint8_t) UART_PAR_ZERO, (uint8_t) UART_PAR_ONE, (uint8_t) UART_PAR_EVEN, (uint8_t) UART_PAR_ODD, (uint8_t) UART_PAR_NONE }; uint8_t uartStopBits [] = { 0, // Padding (uint8_t) UART_STOP_ONE, (uint8_t) UART_STOP_TWO }; void Flashing_LED(UArg arg0, UArg arg1) { UInt flag; while (TRUE) { flag = Event_pend(event1, Event_Id_NONE, eventMask1 + eventMask2 + eventMask3, BIOS_WAIT_FOREVER); if(flag & eventMask1) { GPIO_write(arg0, 1U); continue; } else if(flag & eventMask3) { GPIO_write(arg0, 0U); continue; } while(TRUE){ GPIO_toggle(arg0); if(Event_pend(event1, Event_Id_NONE, eventMask1 + eventMask3, period)) { break; } } } } void Work_UART(UArg arg0, UArg arg1) { uint8_t index[128]; UART_Params params; UART_Handle handle; uint8_t len; /* Setup the default UART Parameters */ UART_Params_init(¶ms); params.writeDataMode = UART_DATA_TEXT; params.readDataMode = UART_DATA_TEXT; params.readReturnMode = UART_RETURN_NEWLINE; params.isPinMuxDone = 1; params.baudRate = BAUDRATE; params.dataLength = (UART_LEN) uartDataLenths[DATALEN]; handle = UART_open(0, ¶ms); if (handle == NULL) { printf("Error: Unable to open the UART Instance\n"); return; } while(TRUE) { len = UART_read(handle, index, sizeof(index)/sizeof(uint8_t)) - 1; if(len <= 13) { if(memcmp(index, "On", 2) == 0) { Event_post(event1, eventMask1); UART_write(handle, "\nOk\n", 4); } else if(memcmp(index, "Off", 3) == 0) { Event_post(event1, eventMask3); UART_write(handle, "\nOk\n", 4); } else if(memcmp(index, "Period ", 7) == 0) { int i; for(i = 7; i < len; i++) { if(index[i] >= '0' && index[i] <= '9') { buffer = buffer * 10 + (index[i] - '0'); } else { metka = 1; break; } } if(metka == 1 || buffer == 0) { UART_write(handle, "\nError\n", 7); metka = 0; continue; } UART_write(handle, "\nOk\n", 4); period = buffer; buffer = 0; Event_post(event1, eventMask2); } else { UART_write(handle, "\nError\n", 7); } } else { UART_write(handle, "\nError\n", 7); } } } static void InitTask(UArg arg0, UArg arg1) { Task_Params taskParamsUART; Task_Params taskParamsLED; Task_Params_init(&taskParamsLED); taskParamsLED.stackSize = 4*1024; taskParamsLED.priority = 1; taskParamsLED.arg0 = (UArg)SOC_XWR16XX_GPIO_2; Task_create(Flashing_LED, &taskParamsLED, NULL); Event_Params eventParams; Event_Params_init(&eventParams); event1 = Event_create(&eventParams, NULL); /* Initialize the GPIO */ GPIO_init (); /* Initialize the UART */ UART_init(); /* Test the GPIO Output: Configure pin K13 as GPIO_2 output */ Pinmux_Set_OverrideCtrl(SOC_XWR16XX_PINK13_PADAZ, PINMUX_OUTEN_RETAIN_HW_CTRL, PINMUX_INPEN_RETAIN_HW_CTRL); Pinmux_Set_FuncSel(SOC_XWR16XX_PINK13_PADAZ, SOC_XWR16XX_PINK13_PADAZ_GPIO_2); GPIO_setConfig (SOC_XWR16XX_GPIO_2, GPIO_CFG_OUTPUT); /* Setup the PINMUX to bring out the MSS UART-1 */ Pinmux_Set_FuncSel(SOC_XWR16XX_PINN5_PADBE, SOC_XWR16XX_PINN5_PADBE_MSS_UARTA_TX); Pinmux_Set_OverrideCtrl(SOC_XWR16XX_PINN5_PADBE, PINMUX_OUTEN_RETAIN_HW_CTRL, PINMUX_INPEN_RETAIN_HW_CTRL); Pinmux_Set_FuncSel(SOC_XWR16XX_PINN4_PADBD, SOC_XWR16XX_PINN4_PADBD_MSS_UARTA_RX); Pinmux_Set_OverrideCtrl(SOC_XWR16XX_PINN4_PADBD, PINMUX_OUTEN_RETAIN_HW_CTRL, PINMUX_INPEN_RETAIN_HW_CTRL); /* Initialize the Task Parameters. */ Task_Params_init(&taskParamsUART); taskParamsUART.stackSize = 4*1024; taskParamsUART.priority = 2; Task_create(Work_UART, &taskParamsUART, NULL); return; } int main (void) { int32_t errCode; Task_Params taskParams; SOC_Cfg socCfg; Error_Block eb; /* Initialize the ESM: Dont clear errors as TI RTOS does it */ ESM_init(0U); /* Initialize the SOC confiugration: */ memset ((void *)&socCfg, 0, sizeof(SOC_Cfg)); /* Populate the SOC configuration: */ socCfg.clockCfg = SOC_SysClock_INIT; /* Initialize the SOC Module: This is done as soon as the application is started * to ensure that the MPU is correctly configured. */ socHandle = SOC_init (&socCfg, &errCode); if (socHandle == NULL) { System_printf ("Error: SOC Module Initialization failed [Error code %d]\n", errCode); return -1; } event = Event_create(NULL, &eb); if (event == NULL) { System_printf ("Error: Event not create\n"); return -1; } /* Initialize the Task Parameters. */ Task_Params_init(&taskParams); taskParams.stackSize = 2*1024; Task_create(InitTask, &taskParams, NULL); /* Start BIOS */ BIOS_start(); return 0; }