#define xQueueSendToBack(xQueue, pvItemToQueue, xTicksToWait) \
xQueueGenericSend((xQueue),(pvItemToQueue),(xTicksToWait), queueSEND_TO_BACK)
Question:如何理解参数xTicksToWait,表示的什么意思,如果我分别给0、50,forever都代表了什么含义?
Answer:参数xTicksToWait表示发送操作在队列已满时的等待时间。具体含义如下:
如果给定的值是0,则表示不等待队列可用空间,如果队列已满,则立即返回一个错误值。
如果给定的值是非零的值,表示等待队列可用空间的时间,单位为时钟节拍。如果队列已满,则任务将被阻塞,直到等待时间耗尽或者队列有可用空间。
如果给定的值是portMAX_DELAY,则表示等待队列可用空间的时间将无限期地延长,直到队列有可用空间。
换句话说:
xTicksToWait = 0:表示非阻塞操作,如果队列已满则立即返回错误;
xTicksToWait > 0:表示有限期等待,等待xTicksToWait个时钟节拍时间,如果队列仍然满,则返回错误;
xTicksToWait = portMAX_DELAY:表示无限期等待,直到队列有可用空间。
所以给定不同的xTicksToWait值可以在队列满时控制发送操作的行为。
NVIC管理的中断,优先级号越大,优先级越小;
FREERTOS的任务优先级,数值越小,优先级越小。