How to create task in suspended state ?
Posted by Malloy1980
on May 10, 2012
How to ctreate task in suspended state ?
It is necessary that, after creating a task was suspended state.
void MyTask(void* arg)
This option is not suitable, since the problem may be a low priority and "vTaskResume" for this task will be called before than it takes control.
RE: How to create task in suspended state ?
Posted by Richard
on May 10, 2012
Before the scheduler has started it is possible to create a task, then suspend it, using the standard FreeRTOS API functions. Then, when the kernel is started, the created task will already be in the suspended state. There is no way of doing this after the scheduler has been started though.
However, if the scheduler is already running, and task A creates task B, then task B will not run if it has a priority below task A until task A blocks. Therefore task A can create task B and put task B into the suspended state, knowing there is no way that task B could have executed. If necessary, task A could temporarily raise its priority before creating task B to ensure its priority is above that of B, then lower its own priority back to its original value once task B was created and safely suspended.
Hope that helps.
Copyright (C) 2004-2010 Richard Barry. Copyright (C) 2010-2016 Real Time Engineers Ltd.
Any and all data, files, source code, html content and documentation included in the FreeRTOSTM distribution or available on this site are the exclusive property of Real Time Engineers Ltd..
See the files license.txt (included in the distribution) and this copyright notice for more information. FreeRTOSTM and FreeRTOS.orgTM are trade marks of Real Time Engineers Ltd.