Can you please tell me what is the deference between Suspend Task and Block Task ?
They are sort of similar but a few notable differences.
When a task is suspended, it will cease to be eligable to use CPU time until it is resumed, and FreeRTOS basically doesn't need to deal with it until it is resumed.
When a task blocks, it also will cease to be eligable to use CPU time until the condition it blocked on becomes available, or until a timeout has expired. As an implementation detail, a timeout set to portMAX_DELAY can be made indefinite, and a task blocking for this time actually becomes supended, with a resumption condition based on what it blocked on.
Any Task can suspend or resume another (although being arbitrary about this can make you program a lot harder to figure out what is happening). A Task can only block itself, and can set a timeout for the block.
Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.