MCUXpresso_LPC55S69/docs/MCUXpresso SDK API Referenc.../a00288.html

341 lines
20 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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.5"/>
<title>MCUXpresso SDK API Reference Manual: OSA BM</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="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="customdoxygen.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="projectlogo"><img alt="Logo" src="fs_logo.gif"/></td>
<td style="padding-left: 0.5em;">
<div id="projectname">MCUXpresso SDK API Reference Manual
&#160;<span id="projectnumber">Rev 2.15.000</span>
</div>
<div id="projectbrief">NXP Semiconductors</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.5 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>API&#160;Reference</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</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">
$(document).ready(function(){initNavTree('a00288.html','');});
</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)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Pages</a></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="summary">
<a href="#define-members">Macros</a> &#124;
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">OSA BM<div class="ingroups"><a class="el" href="a00070.html">OSA_Adapter: Operatin System Abstraction Adapter</a></div></div> </div>
</div><!--header-->
<div class="contents">
<a name="details" id="details"></a><h2 class="groupheader">Overview</h2>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:ga5ffcf301e911e4911ebb33f6d120b79b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00288.html#ga5ffcf301e911e4911ebb33f6d120b79b">FSL_OSA_BM_TIMER_NONE</a>&#160;&#160;&#160;0U</td></tr>
<tr class="memdesc:ga5ffcf301e911e4911ebb33f6d120b79b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Bare Metal does not use timer. <a href="#ga5ffcf301e911e4911ebb33f6d120b79b">More...</a><br/></td></tr>
<tr class="separator:ga5ffcf301e911e4911ebb33f6d120b79b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga96be9550dc07952a225ea70af865e3a4"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00288.html#ga96be9550dc07952a225ea70af865e3a4">FSL_OSA_BM_TIMER_SYSTICK</a>&#160;&#160;&#160;1U</td></tr>
<tr class="memdesc:ga96be9550dc07952a225ea70af865e3a4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Bare Metal uses SYSTICK as timer. <a href="#ga96be9550dc07952a225ea70af865e3a4">More...</a><br/></td></tr>
<tr class="separator:ga96be9550dc07952a225ea70af865e3a4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad95549b5ccdee2644886381c47507d1d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00288.html#gad95549b5ccdee2644886381c47507d1d">FSL_OSA_BM_TIMER_CONFIG</a>&#160;&#160;&#160;<a class="el" href="a00288.html#ga5ffcf301e911e4911ebb33f6d120b79b">FSL_OSA_BM_TIMER_NONE</a></td></tr>
<tr class="memdesc:gad95549b5ccdee2644886381c47507d1d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Configure what timer is used in Bare Metal. <a href="#gad95549b5ccdee2644886381c47507d1d">More...</a><br/></td></tr>
<tr class="separator:gad95549b5ccdee2644886381c47507d1d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5c4bbd97efaa670e198fad62038ba771"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00288.html#ga5c4bbd97efaa670e198fad62038ba771">OSA_WAIT_FOREVER</a>&#160;&#160;&#160;0xFFFFFFFFU</td></tr>
<tr class="memdesc:ga5c4bbd97efaa670e198fad62038ba771"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constant to pass as timeout value in order to wait indefinitely. <a href="#ga5c4bbd97efaa670e198fad62038ba771">More...</a><br/></td></tr>
<tr class="separator:ga5c4bbd97efaa670e198fad62038ba771"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga11a0fb3f79cc6bab55d41a1f2e1789da"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00288.html#ga11a0fb3f79cc6bab55d41a1f2e1789da">TASK_MAX_NUM</a>&#160;&#160;&#160;7</td></tr>
<tr class="memdesc:ga11a0fb3f79cc6bab55d41a1f2e1789da"><td class="mdescLeft">&#160;</td><td class="mdescRight">How many tasks can the bare metal support. <a href="#ga11a0fb3f79cc6bab55d41a1f2e1789da">More...</a><br/></td></tr>
<tr class="separator:ga11a0fb3f79cc6bab55d41a1f2e1789da"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga0b8cb2e5f9f9863520c4c9e4c3c47e3f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00288.html#ga0b8cb2e5f9f9863520c4c9e4c3c47e3f">FSL_OSA_TIME_RANGE</a>&#160;&#160;&#160;0xFFFFFFFFU</td></tr>
<tr class="memdesc:ga0b8cb2e5f9f9863520c4c9e4c3c47e3f"><td class="mdescLeft">&#160;</td><td class="mdescRight">OSA's time range in millisecond, OSA time wraps if exceeds this value. <a href="#ga0b8cb2e5f9f9863520c4c9e4c3c47e3f">More...</a><br/></td></tr>
<tr class="separator:ga0b8cb2e5f9f9863520c4c9e4c3c47e3f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga50f035ff4993767f49ca67b3847bfec4"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00288.html#ga50f035ff4993767f49ca67b3847bfec4">OSA_DEFAULT_INT_HANDLER</a>&#160;&#160;&#160;((osa_int_handler_t)(&amp;<a class="el" href="a00288.html#ga4fcbeb17b7f10e57e297bf6b12a07e7e">DefaultISR</a>))</td></tr>
<tr class="memdesc:ga50f035ff4993767f49ca67b3847bfec4"><td class="mdescLeft">&#160;</td><td class="mdescRight">The default interrupt handler installed in vector table. <a href="#ga50f035ff4993767f49ca67b3847bfec4">More...</a><br/></td></tr>
<tr class="separator:ga50f035ff4993767f49ca67b3847bfec4"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:ga90774a4d1708f3e210d94c829b44eb86"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga90774a4d1708f3e210d94c829b44eb86"></a>
typedef void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00288.html#ga90774a4d1708f3e210d94c829b44eb86">task_param_t</a></td></tr>
<tr class="memdesc:ga90774a4d1708f3e210d94c829b44eb86"><td class="mdescLeft">&#160;</td><td class="mdescRight">Type for task parameter. <br/></td></tr>
<tr class="separator:ga90774a4d1708f3e210d94c829b44eb86"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga79a78f74479544e6d60e4ecaedf83752"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga79a78f74479544e6d60e4ecaedf83752"></a>
typedef uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00288.html#ga79a78f74479544e6d60e4ecaedf83752">event_flags_t</a></td></tr>
<tr class="memdesc:ga79a78f74479544e6d60e4ecaedf83752"><td class="mdescLeft">&#160;</td><td class="mdescRight">Type for an event flags group, bit 32 is reserved. <br/></td></tr>
<tr class="separator:ga79a78f74479544e6d60e4ecaedf83752"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga4fcbeb17b7f10e57e297bf6b12a07e7e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00288.html#ga4fcbeb17b7f10e57e297bf6b12a07e7e">DefaultISR</a> (void)</td></tr>
<tr class="memdesc:ga4fcbeb17b7f10e57e297bf6b12a07e7e"><td class="mdescLeft">&#160;</td><td class="mdescRight">The default interrupt handler installed in vector table. <a href="#ga4fcbeb17b7f10e57e297bf6b12a07e7e">More...</a><br/></td></tr>
<tr class="separator:ga4fcbeb17b7f10e57e297bf6b12a07e7e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa985fd33d7f21b6b635d34d505776138"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00288.html#gaa985fd33d7f21b6b635d34d505776138">OSA_ProcessTasks</a> (void)</td></tr>
<tr class="memdesc:gaa985fd33d7f21b6b635d34d505776138"><td class="mdescLeft">&#160;</td><td class="mdescRight">Process OSA tasks. <a href="#gaa985fd33d7f21b6b635d34d505776138">More...</a><br/></td></tr>
<tr class="separator:gaa985fd33d7f21b6b635d34d505776138"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaeea3f69dc67de7cd4a1019a1648ca3c2"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00288.html#gaeea3f69dc67de7cd4a1019a1648ca3c2">OSA_TaskShouldYield</a> (void)</td></tr>
<tr class="memdesc:gaeea3f69dc67de7cd4a1019a1648ca3c2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check OSA Task Should Yield. <a href="#gaeea3f69dc67de7cd4a1019a1648ca3c2">More...</a><br/></td></tr>
<tr class="separator:gaeea3f69dc67de7cd4a1019a1648ca3c2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga749ebf3744162d55cfb55758a491662b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00288.html#ga749ebf3744162d55cfb55758a491662b">OSA_UpdateSysTickCounter</a> (uint32_t corr)</td></tr>
<tr class="memdesc:ga749ebf3744162d55cfb55758a491662b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Correct OSA tick counter for when exiting sleep. <a href="#ga749ebf3744162d55cfb55758a491662b">More...</a><br/></td></tr>
<tr class="separator:ga749ebf3744162d55cfb55758a491662b"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="member-group"></a>
Thread management</h2></td></tr>
<tr class="memitem:ga115e0f268febab4a227d3c84e74c1d63"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga115e0f268febab4a227d3c84e74c1d63"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00288.html#ga115e0f268febab4a227d3c84e74c1d63">PRIORITY_OSA_TO_RTOS</a>(osa_prio)&#160;&#160;&#160;(osa_prio)</td></tr>
<tr class="memdesc:ga115e0f268febab4a227d3c84e74c1d63"><td class="mdescLeft">&#160;</td><td class="mdescRight">To provide unified priority for upper layer, OSA layer makes conversation. <br/></td></tr>
<tr class="separator:ga115e0f268febab4a227d3c84e74c1d63"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2804a1d44c9ba08a46e9dd9d0ddfa36d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga2804a1d44c9ba08a46e9dd9d0ddfa36d"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>PRIORITY_RTOS_TO_OSA</b>(rtos_prio)&#160;&#160;&#160;(rtos_prio)</td></tr>
<tr class="separator:ga2804a1d44c9ba08a46e9dd9d0ddfa36d"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="ga5ffcf301e911e4911ebb33f6d120b79b"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define FSL_OSA_BM_TIMER_NONE&#160;&#160;&#160;0U</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="ga96be9550dc07952a225ea70af865e3a4"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define FSL_OSA_BM_TIMER_SYSTICK&#160;&#160;&#160;1U</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="gad95549b5ccdee2644886381c47507d1d"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define FSL_OSA_BM_TIMER_CONFIG&#160;&#160;&#160;<a class="el" href="a00288.html#ga5ffcf301e911e4911ebb33f6d120b79b">FSL_OSA_BM_TIMER_NONE</a></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="ga5c4bbd97efaa670e198fad62038ba771"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define OSA_WAIT_FOREVER&#160;&#160;&#160;0xFFFFFFFFU</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="ga11a0fb3f79cc6bab55d41a1f2e1789da"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define TASK_MAX_NUM&#160;&#160;&#160;7</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="ga0b8cb2e5f9f9863520c4c9e4c3c47e3f"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define FSL_OSA_TIME_RANGE&#160;&#160;&#160;0xFFFFFFFFU</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="ga50f035ff4993767f49ca67b3847bfec4"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define OSA_DEFAULT_INT_HANDLER&#160;&#160;&#160;((osa_int_handler_t)(&amp;<a class="el" href="a00288.html#ga4fcbeb17b7f10e57e297bf6b12a07e7e">DefaultISR</a>))</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="ga4fcbeb17b7f10e57e297bf6b12a07e7e"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void DefaultISR </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="gaa985fd33d7f21b6b635d34d505776138"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void OSA_ProcessTasks </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function is used to process registered tasks.</p>
<p>Example below shows how to use this API in baremetal.</p>
<div class="fragment"><div class="line">* <span class="keywordflow">while</span>(1) {</div>
<div class="line">* <a class="code" href="a00288.html#gaa985fd33d7f21b6b635d34d505776138">OSA_ProcessTasks</a>();</div>
<div class="line">* }</div>
<div class="line">* </div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="gaeea3f69dc67de7cd4a1019a1648ca3c2"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8_t OSA_TaskShouldYield </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function is used to check task should yield, When this function returns 1, an OSA task has to run. This function is typically used with Interrupt disabled before executing WFI instruction. </p>
</div>
</div>
<a class="anchor" id="ga749ebf3744162d55cfb55758a491662b"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void OSA_UpdateSysTickCounter </td>
<td>(</td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>corr</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function allows the tick counter used by the OSA functions for time keeping to be corrected with the sleep duration (taken from a low power timer. This is available only in BM context and only if the systick is used as a time source for the OSA. </p>
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- HTML footer for doxygen 1.8.5-->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul class="foot">
<li class="footer">&copy; 2016 NXP Semiconductors. All rights reserved.
</li>
</ul>
</div>
</body>
</html>