MCB1700_Welcome/Doxygen/html/group__x_task_notify_wait.html

149 lines
12 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.20"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Labor04: xTaskNotifyWait</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Labor04
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.20 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('group__x_task_notify_wait.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">xTaskNotifyWait</div> </div>
</div><!--header-->
<div class="contents">
<p>task. h </p><pre>BaseType_t <a class="el" href="task_8h.html#a0475fcda9718f403521c270a7270ff93">xTaskNotifyWait( uint32_t ulBitsToClearOnEntry, uint32_t ulBitsToClearOnExit, uint32_t *pulNotificationValue, TickType_t xTicksToWait )</a>;</pre><p>configUSE_TASK_NOTIFICATIONS must be undefined or defined as 1 for this function to be available.</p>
<p>When configUSE_TASK_NOTIFICATIONS is set to one each task has its own private "notification value", which is a 32-bit unsigned integer (uint32_t).</p>
<p>Events can be sent to a task using an intermediary object. Examples of such objects are queues, semaphores, mutexes and event groups. Task notifications are a method of sending an event directly to a task without the need for such an intermediary object.</p>
<p>A notification sent to a task can optionally perform an action, such as update, overwrite or increment the task's notification value. In that way task notifications can be used to send data to a task, or be used as light weight and fast binary or counting semaphores.</p>
<p>A notification sent to a task will remain pending until it is cleared by the task calling <a class="el" href="task_8h.html#a0475fcda9718f403521c270a7270ff93">xTaskNotifyWait()</a> or <a class="el" href="task_8h.html#a66540bef602522a01a519f776e4c07d8">ulTaskNotifyTake()</a>. If the task was already in the Blocked state to wait for a notification when the notification arrives then the task will automatically be removed from the Blocked state (unblocked) and the notification cleared.</p>
<p>A task can use <a class="el" href="task_8h.html#a0475fcda9718f403521c270a7270ff93">xTaskNotifyWait()</a> to [optionally] block to wait for a notification to be pending, or <a class="el" href="task_8h.html#a66540bef602522a01a519f776e4c07d8">ulTaskNotifyTake()</a> to [optionally] block to wait for its notification value to have a non-zero value. The task does not consume any CPU time while it is in the Blocked state.</p>
<p>See <a href="http://www.FreeRTOS.org/RTOS-task-notifications.html">http://www.FreeRTOS.org/RTOS-task-notifications.html</a> for details.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">ulBitsToClearOnEntry</td><td>Bits that are set in ulBitsToClearOnEntry value will be cleared in the calling task's notification value before the task checks to see if any notifications are pending, and optionally blocks if no notifications are pending. Setting ulBitsToClearOnEntry to ULONG_MAX (if limits.h is included) or 0xffffffffUL (if limits.h is not included) will have the effect of resetting the task's notification value to 0. Setting ulBitsToClearOnEntry to 0 will leave the task's notification value unchanged.</td></tr>
<tr><td class="paramname">ulBitsToClearOnExit</td><td>If a notification is pending or received before the calling task exits the <a class="el" href="task_8h.html#a0475fcda9718f403521c270a7270ff93">xTaskNotifyWait()</a> function then the task's notification value (see the <a class="el" href="task_8h.html#a0d2d54fb8a64011dfbb54983e4ed06bd">xTaskNotify()</a> API function) is passed out using the pulNotificationValue parameter. Then any bits that are set in ulBitsToClearOnExit will be cleared in the task's notification value (note *pulNotificationValue is set before any bits are cleared). Setting ulBitsToClearOnExit to ULONG_MAX (if limits.h is included) or 0xffffffffUL (if limits.h is not included) will have the effect of resetting the task's notification value to 0 before the function exits. Setting ulBitsToClearOnExit to 0 will leave the task's notification value unchanged when the function exits (in which case the value passed out in pulNotificationValue will match the task's notification value).</td></tr>
<tr><td class="paramname">pulNotificationValue</td><td>Used to pass the task's notification value out of the function. Note the value passed out will not be effected by the clearing of any bits caused by ulBitsToClearOnExit being non-zero.</td></tr>
<tr><td class="paramname">xTicksToWait</td><td>The maximum amount of time that the task should wait in the Blocked state for a notification to be received, should a notification not already be pending when <a class="el" href="task_8h.html#a0475fcda9718f403521c270a7270ff93">xTaskNotifyWait()</a> was called. The task will not consume any processing time while it is in the Blocked state. This is specified in kernel ticks, the macro pdMS_TO_TICSK( value_in_ms ) can be used to convert a time specified in milliseconds to a time specified in ticks.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>If a notification was received (including notifications that were already pending when xTaskNotifyWait was called) then pdPASS is returned. Otherwise pdFAIL is returned.</dd></dl>
<p>task. h </p><pre>void <a class="el" href="task_8h.html#a4a4bcf98ad282a596e13f3f30582a11b">vTaskNotifyGiveFromISR( TaskHandle_t xTaskHandle, BaseType_t *pxHigherPriorityTaskWoken )</a>;</pre><pre>configUSE_TASK_NOTIFICATIONS must be undefined or defined as 1 for this macro
to be available.</pre><pre>When configUSE_TASK_NOTIFICATIONS is set to one each task has its own private
"notification value", which is a 32-bit unsigned integer (uint32_t).</pre><pre>A version of <a class="el" href="task_8h.html#ac60cbd05577a3e4f3c3587dd9b213930">xTaskNotifyGive()</a> that can be called from an interrupt service
routine (ISR).</pre><pre>Events can be sent to a task using an intermediary object. Examples of such
objects are queues, semaphores, mutexes and event groups. Task notifications
are a method of sending an event directly to a task without the need for such
an intermediary object.</pre><pre>A notification sent to a task can optionally perform an action, such as
update, overwrite or increment the task's notification value. In that way
task notifications can be used to send data to a task, or be used as light
weight and fast binary or counting semaphores.</pre><pre><a class="el" href="task_8h.html#a4a4bcf98ad282a596e13f3f30582a11b">vTaskNotifyGiveFromISR()</a> is intended for use when task notifications are
used as light weight and faster binary or counting semaphore equivalents.
Actual FreeRTOS semaphores are given from an ISR using the
<a class="el" href="semphr_8h.html#a68aa43df8b2a0dbe17d05fad74670ef0">xSemaphoreGiveFromISR()</a> API function, the equivalent action that instead uses
a task notification is <a class="el" href="task_8h.html#a4a4bcf98ad282a596e13f3f30582a11b">vTaskNotifyGiveFromISR()</a>.</pre><pre>When task notifications are being used as a binary or counting semaphore
equivalent then the task being notified should wait for the notification
using the ulTaskNotificationTake() API function rather than the
<a class="el" href="task_8h.html#a0475fcda9718f403521c270a7270ff93">xTaskNotifyWait()</a> API function.</pre><pre>See <a href="http://www.FreeRTOS.org/RTOS-task-notifications.html">http://www.FreeRTOS.org/RTOS-task-notifications.html</a> for more details.</pre><pre><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">xTaskToNotify</td><td>The handle of the task being notified. The handle to a
task can be returned from the xTaskCreate() API function used to create the
task, and the handle of the currently running task can be obtained by calling
<a class="el" href="task_8h.html#a85a0f9c9f817b18686efbf8f37c72dfc">xTaskGetCurrentTaskHandle()</a>.</td></tr>
<tr><td class="paramname">pxHigherPriorityTaskWoken</td><td><a class="el" href="task_8h.html#a4a4bcf98ad282a596e13f3f30582a11b">vTaskNotifyGiveFromISR()</a> will set
*pxHigherPriorityTaskWoken to pdTRUE if sending the notification caused the
task to which the notification was sent to leave the Blocked state, and the
unblocked task has a priority higher than the currently running task. If
<a class="el" href="task_8h.html#a4a4bcf98ad282a596e13f3f30582a11b">vTaskNotifyGiveFromISR()</a> sets this value to pdTRUE then a context switch
should be requested before the interrupt is exited. How a context switch is
requested from an ISR is dependent on the port - see the documentation page
for the port in use.
</td></tr>
</table>
</dd>
</dl>
</pre></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by <a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.8.20 </li>
</ul>
</div>
</body>
</html>