Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запуск нескольких задач 
:(
    Опции темы
mrprim
Дата 8.8.2016, 17:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 7.6.2016

Репутация: нет
Всего: нет



Работаю на камне ti cc2650em
Есть класс 123.c 
в нём 2 задачи переключающиеся по вызову семафора, пример:
Код

#define TASKSTACKSIZE   768
Task_Struct task0Struct, task1Struct;
Char task0Stack[TASKSTACKSIZE], task1Stack[TASKSTACKSIZE];
Task_Handle uartTask, vmTask;
Semaphore_Struct sem0Struct;
Semaphore_Handle vmSem;


Void uartFxn(UArg a0, UArg a1){
    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){
Semaphore_pend(vmSem, BIOS_WAIT_FOREVER);
    while(1){
        System_flush();
        System_printf("asdasdasdasd");
        break;
    }
}

int main(void)
{
    Task_Params taskParams;
    Semaphore_Params semParams;

    Board_initGeneral();

    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);

    BIOS_start();
    return (0);
}


оно работает на отлично, выводит 1 2 3 4 потом переключается на другую задачу, выводит asdasdasdasd, и потом дальше 5 6 7...

вопрос следующий в первой по приоритету задаче я включаю UART

Код
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");
    }


опять же всё хорошо но при переключении задачи юарт отключается и не включается, где бы я его заново не запускал

может кто сталкивался?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0376 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.