Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Микроконтроллеры (MCU) и микропроцессоры (MPU) > Task construct UART cc2650em


Автор: mrprim 9.8.2016, 20:32
Есть небольшая проблема с уартом при смене задач
Код

Task_Struct task0Struct, task1Struct;
Char task0Stack[TASKSTACKSIZE], task1Stack[TASKSTACKSIZE];
Task_Handle uartTask, vmTask;
Semaphore_Struct sem0Struct;
Semaphore_Handle vmSem;
UART_Handle hUART;
UART_Params params;

Void uartFxn(UArg a0, UArg a1){
        if(!hUART){
        UART_Params_init(&params);
        params.readMode     = UART_MODE_BLOCKING;
        params.writeDataMode= UART_DATA_BINARY;
        params.readTimeout  = 1000;
        params.readCallback = NULL;
        params.readEcho     = UART_ECHO_OFF; //Not needed on CC26XX implementation as not implemented
        params.baudRate     = 9600;
        hUART = UART_open(Board_UART0, &params);
    }
    if (!hUART) {
                System_abort("Error initializing UART\n");
    }
    uint32_t i = 0;
        while(1){
            System_flush();
            System_printf(" %d", i);
            i++;
            if(i==5){
                Semaphore_post(vmSem);
            }
            Task_sleep(1000000 / Clock_tickPeriod);
        }
}
void vmFxn(void){
    while(1){
        Semaphore_pend(vmSem, BIOS_WAIT_FOREVER);
        System_flush();
        System_printf("asdasdasdasd");
        System_flush();
                System_printf("asdasdasdasd");
                break;
    }
}
/*
*  ======== main ========
*/
int main(void)
{
    Task_Params taskParams;
    Semaphore_Params semParams;
    /* Call board init functions */
    Board_initGeneral();
    /* Construct BIOS objects */
    Task_Params_init(&taskParams);
        taskParams.stackSize = TASKSTACKSIZE;
        taskParams.stack = &task0Stack;
        taskParams.priority = 2;
        taskParams.instance->name = "vmFxn";
        Task_construct(&task0Struct, (Task_FuncPtr)vmFxn, &taskParams, NULL);
        vmTask = Task_handle(&task0Struct);
        taskParams.stack = &task1Stack;
        taskParams.priority = 1;
        taskParams.instance->name = "uartFxn";
        Task_construct(&task1Struct, (Task_FuncPtr)uartFxn, &taskParams, NULL);
        uartTask = Task_handle(&task1Struct);
        Semaphore_Params_init(&semParams);
        semParams.mode = Semaphore_Mode_BINARY;
        Semaphore_construct(&sem0Struct, 0, &semParams);
        vmSem = Semaphore_handle(&sem0Struct);

    /* Start BIOS */
    BIOS_start();
    return (0);
}

Когда запускаю проект то Уарт запускается нормально

но после смены задачи непонятно работает УАРТ или нет, но ясно только одно что уже ни послать ни принять ничего нельзя, хоть порт и открыт для коннекта.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)