реклама на сайте
подробности

 
 
> Можно ли разблокровать задачу раньше времени?
Мусатов Констант...
сообщение Mar 10 2013, 23:29
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 188
Регистрация: 10-10-06
Пользователь №: 21 172



Некая задача послала себя в ожидание вызвав vTaskDelay
Можно ли сделать так, что бы она была разблокирована раньше времени?
Судя по графу состояний ее можно сначала отправить в suspend через vTaskSuspend, а потом разбудить через vTaskResume.
Но попытка такой функции
Код
void UnblockDisplayTask( void )
{
  if( !xTaskIsTaskSuspended( DisplayTaskHandle) ) vTaskSuspend( DisplayTaskHandle );
  vTaskResume( DisplayTaskHandle );
}

приводит к зависанию на vTaskSuspend

В теории, можно изменить архитектуру приложения и не пользоваться этим функционалом. Но просто прототип устройства работает под виндами и написан на пяти таймерах, обработчики которых общаются с периферией, будят друг друга, меняют задержки и т.п.

----------------------------------------------------

А похоже получилось, просто один из вызовов этой функции оказался от имени самой же этой задачи и, естественно, себя она уже замораживала навечно.

Сообщение отредактировал Мусатов Константин - Mar 10 2013, 23:30
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 09:28
Рейтинг@Mail.ru


Страница сгенерированна за 0.01367 секунд с 7
ELECTRONIX ©2004-2016