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

992 lines
56 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: Timer_Manager</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('a00061.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="#nested-classes">Data Structures</a> &#124;
<a href="#define-members">Macros</a> &#124;
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#enum-members">Enumerations</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">Timer_Manager</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="nested-classes"></a>
Data Structures</h2></td></tr>
<tr class="memitem:a00432"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html#a00432">_timer_config</a></td></tr>
<tr class="memdesc:a00432"><td class="mdescLeft">&#160;</td><td class="mdescRight">Timer config. <a href="a00061.html#a00432">More...</a><br/></td></tr>
<tr class="separator:a00432"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:ga72f8843b02aa54036e14ec25bd440442"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html#ga72f8843b02aa54036e14ec25bd440442">TM_COMMON_TASK_ENABLE</a>&#160;&#160;&#160;(0)</td></tr>
<tr class="memdesc:ga72f8843b02aa54036e14ec25bd440442"><td class="mdescLeft">&#160;</td><td class="mdescRight">The timer manager component. <a href="#ga72f8843b02aa54036e14ec25bd440442">More...</a><br/></td></tr>
<tr class="separator:ga72f8843b02aa54036e14ec25bd440442"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf8b81a12c751492d009ab401934018df"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html#gaf8b81a12c751492d009ab401934018df">TIMER_HANDLE_SIZE</a>&#160;&#160;&#160;(32U)</td></tr>
<tr class="memdesc:gaf8b81a12c751492d009ab401934018df"><td class="mdescLeft">&#160;</td><td class="mdescRight">Definition of timer manager handle size. <a href="#gaf8b81a12c751492d009ab401934018df">More...</a><br/></td></tr>
<tr class="separator:gaf8b81a12c751492d009ab401934018df"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac4539ca9cd54b6b88c2613f01396c39e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html#gac4539ca9cd54b6b88c2613f01396c39e">TIMER_MANAGER_HANDLE_DEFINE</a>(name)&#160;&#160;&#160;uint32_t name[(<a class="el" href="a00061.html#gaf8b81a12c751492d009ab401934018df">TIMER_HANDLE_SIZE</a> + sizeof(uint32_t) - 1U) / sizeof(uint32_t)]</td></tr>
<tr class="memdesc:gac4539ca9cd54b6b88c2613f01396c39e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Defines the timer manager handle. <a href="#gac4539ca9cd54b6b88c2613f01396c39e">More...</a><br/></td></tr>
<tr class="separator:gac4539ca9cd54b6b88c2613f01396c39e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaaf2e52a0273bdc298c5758308e996e4b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html#gaaf2e52a0273bdc298c5758308e996e4b">kTimerModeSingleShot</a>&#160;&#160;&#160;0x01U</td></tr>
<tr class="memdesc:gaaf2e52a0273bdc298c5758308e996e4b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Timer modes. <a href="#gaaf2e52a0273bdc298c5758308e996e4b">More...</a><br/></td></tr>
<tr class="separator:gaaf2e52a0273bdc298c5758308e996e4b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga91588951994651d1d17c78d44f81790d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html#ga91588951994651d1d17c78d44f81790d">kTimerModeIntervalTimer</a>&#160;&#160;&#160;0x02U</td></tr>
<tr class="separator:ga91588951994651d1d17c78d44f81790d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1193bc58cd3794c28b8abca31edfcc67"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html#ga1193bc58cd3794c28b8abca31edfcc67">kTimerModeSetMinuteTimer</a>&#160;&#160;&#160;0x04U</td></tr>
<tr class="separator:ga1193bc58cd3794c28b8abca31edfcc67"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7c99c8ee48aa25f77a65593089746c47"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html#ga7c99c8ee48aa25f77a65593089746c47">kTimerModeSetSecondTimer</a>&#160;&#160;&#160;0x08U</td></tr>
<tr class="separator:ga7c99c8ee48aa25f77a65593089746c47"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga79cfea3576a91d37b4cefcdfc6a21a30"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html#ga79cfea3576a91d37b4cefcdfc6a21a30">kTimerModeLowPowerTimer</a>&#160;&#160;&#160;0x10U</td></tr>
<tr class="separator:ga79cfea3576a91d37b4cefcdfc6a21a30"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga338c1ad46cd5ca06ee44fc3798f59925"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html#ga338c1ad46cd5ca06ee44fc3798f59925">kTimerModeSetMicrosTimer</a>&#160;&#160;&#160;0x20U</td></tr>
<tr class="separator:ga338c1ad46cd5ca06ee44fc3798f59925"><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:gabd1aa34f399e8493ed87842ba93f1a84"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gabd1aa34f399e8493ed87842ba93f1a84"></a>
typedef enum <a class="el" href="a00061.html#ga7f276389f10e0027a798a51383d00573">_timer_status</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html#gabd1aa34f399e8493ed87842ba93f1a84">timer_status_t</a></td></tr>
<tr class="memdesc:gabd1aa34f399e8493ed87842ba93f1a84"><td class="mdescLeft">&#160;</td><td class="mdescRight">Timer status. <br/></td></tr>
<tr class="separator:gabd1aa34f399e8493ed87842ba93f1a84"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaef51b9fa2e8cf8d7f9f58b823c5b2ac7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaef51b9fa2e8cf8d7f9f58b823c5b2ac7"></a>
typedef struct <a class="el" href="a00061.html#a00432">_timer_config</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html#gaef51b9fa2e8cf8d7f9f58b823c5b2ac7">timer_config_t</a></td></tr>
<tr class="memdesc:gaef51b9fa2e8cf8d7f9f58b823c5b2ac7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Timer config. <br/></td></tr>
<tr class="separator:gaef51b9fa2e8cf8d7f9f58b823c5b2ac7"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
Enumerations</h2></td></tr>
<tr class="memitem:ga7f276389f10e0027a798a51383d00573"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html#ga7f276389f10e0027a798a51383d00573">_timer_status</a> { <br/>
&#160;&#160;<a class="el" href="a00061.html#gga7f276389f10e0027a798a51383d00573a0c6eb102d94340d3e30612dd8dc8a83f">kStatus_TimerSuccess</a> = kStatus_Success,
<br/>
&#160;&#160;<a class="el" href="a00061.html#gga7f276389f10e0027a798a51383d00573aa57c77145092086b436d82818d5b3a6c">kStatus_TimerInvalidId</a> = MAKE_STATUS(kStatusGroup_TIMERMANAGER, 1),
<br/>
&#160;&#160;<a class="el" href="a00061.html#gga7f276389f10e0027a798a51383d00573a7c83ba44797b43e22345ee2a2eda4194">kStatus_TimerNotSupport</a> = MAKE_STATUS(kStatusGroup_TIMERMANAGER, 2),
<br/>
&#160;&#160;<a class="el" href="a00061.html#gga7f276389f10e0027a798a51383d00573a8f998f90d18ce88604f59d64182e6c18">kStatus_TimerOutOfRange</a> = MAKE_STATUS(kStatusGroup_TIMERMANAGER, 3),
<br/>
&#160;&#160;<a class="el" href="a00061.html#gga7f276389f10e0027a798a51383d00573a8731a5fb9c9c9819477b3f6ff3ebdbe6">kStatus_TimerError</a> = MAKE_STATUS(kStatusGroup_TIMERMANAGER, 4)
<br/>
}</td></tr>
<tr class="memdesc:ga7f276389f10e0027a798a51383d00573"><td class="mdescLeft">&#160;</td><td class="mdescRight">Timer status. <a href="a00061.html#ga7f276389f10e0027a798a51383d00573">More...</a><br/></td></tr>
<tr class="separator:ga7f276389f10e0027a798a51383d00573"><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:ga0148c33d19e346e64c82090406ea23a2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00061.html#gabd1aa34f399e8493ed87842ba93f1a84">timer_status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html#ga0148c33d19e346e64c82090406ea23a2">TM_Init</a> (<a class="el" href="a00061.html#gaef51b9fa2e8cf8d7f9f58b823c5b2ac7">timer_config_t</a> *timerConfig)</td></tr>
<tr class="memdesc:ga0148c33d19e346e64c82090406ea23a2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes timer manager module with the user configuration structure. <a href="#ga0148c33d19e346e64c82090406ea23a2">More...</a><br/></td></tr>
<tr class="separator:ga0148c33d19e346e64c82090406ea23a2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga8e686bfb43bd3b61e49c7fd9b71071af"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga8e686bfb43bd3b61e49c7fd9b71071af"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html#ga8e686bfb43bd3b61e49c7fd9b71071af">TM_Deinit</a> (void)</td></tr>
<tr class="memdesc:ga8e686bfb43bd3b61e49c7fd9b71071af"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deinitialize timer manager module. <br/></td></tr>
<tr class="separator:ga8e686bfb43bd3b61e49c7fd9b71071af"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga526895a57fe8b1a3fbc4c8f00d7bbab7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga526895a57fe8b1a3fbc4c8f00d7bbab7"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html#ga526895a57fe8b1a3fbc4c8f00d7bbab7">TM_ExitLowpower</a> (void)</td></tr>
<tr class="memdesc:ga526895a57fe8b1a3fbc4c8f00d7bbab7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Power up timer manager module. <br/></td></tr>
<tr class="separator:ga526895a57fe8b1a3fbc4c8f00d7bbab7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9b70d887645c0c0b0b777f1ea1bfc69a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga9b70d887645c0c0b0b777f1ea1bfc69a"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html#ga9b70d887645c0c0b0b777f1ea1bfc69a">TM_EnterLowpower</a> (void)</td></tr>
<tr class="memdesc:ga9b70d887645c0c0b0b777f1ea1bfc69a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Power down timer manager module. <br/></td></tr>
<tr class="separator:ga9b70d887645c0c0b0b777f1ea1bfc69a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5236f86dd97dd56dc1869ffe4449ed35"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html#ga5236f86dd97dd56dc1869ffe4449ed35">TM_EnterTickless</a> (timer_handle_t timerHandle, uint64_t timerTimeout)</td></tr>
<tr class="memdesc:ga5236f86dd97dd56dc1869ffe4449ed35"><td class="mdescLeft">&#160;</td><td class="mdescRight">Programs a timer needed for RTOS tickless low power period. <a href="#ga5236f86dd97dd56dc1869ffe4449ed35">More...</a><br/></td></tr>
<tr class="separator:ga5236f86dd97dd56dc1869ffe4449ed35"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab704bf6e8b80685a84058cb67a2a041a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html#gab704bf6e8b80685a84058cb67a2a041a">TM_ExitTickless</a> (timer_handle_t timerHandle)</td></tr>
<tr class="memdesc:gab704bf6e8b80685a84058cb67a2a041a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Resyncs timer manager ressources after tickless low power period. <a href="#gab704bf6e8b80685a84058cb67a2a041a">More...</a><br/></td></tr>
<tr class="separator:gab704bf6e8b80685a84058cb67a2a041a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga83cbe4de899abbcf13df01415d3f69ea"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00061.html#gabd1aa34f399e8493ed87842ba93f1a84">timer_status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html#ga83cbe4de899abbcf13df01415d3f69ea">TM_Open</a> (timer_handle_t timerHandle)</td></tr>
<tr class="memdesc:ga83cbe4de899abbcf13df01415d3f69ea"><td class="mdescLeft">&#160;</td><td class="mdescRight">Open a timer with user handle. <a href="#ga83cbe4de899abbcf13df01415d3f69ea">More...</a><br/></td></tr>
<tr class="separator:ga83cbe4de899abbcf13df01415d3f69ea"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6c8bba53f6c004a54db1765951c8f477"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00061.html#gabd1aa34f399e8493ed87842ba93f1a84">timer_status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html#ga6c8bba53f6c004a54db1765951c8f477">TM_Close</a> (timer_handle_t timerHandle)</td></tr>
<tr class="memdesc:ga6c8bba53f6c004a54db1765951c8f477"><td class="mdescLeft">&#160;</td><td class="mdescRight">Close a timer with user handle. <a href="#ga6c8bba53f6c004a54db1765951c8f477">More...</a><br/></td></tr>
<tr class="separator:ga6c8bba53f6c004a54db1765951c8f477"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaadd4a05bc0e3a7142e6c094885c8d65f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00061.html#gabd1aa34f399e8493ed87842ba93f1a84">timer_status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html#gaadd4a05bc0e3a7142e6c094885c8d65f">TM_InstallCallback</a> (timer_handle_t timerHandle, timer_callback_t callback, void *callbackParam)</td></tr>
<tr class="memdesc:gaadd4a05bc0e3a7142e6c094885c8d65f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Install a specified timer callback. <a href="#gaadd4a05bc0e3a7142e6c094885c8d65f">More...</a><br/></td></tr>
<tr class="separator:gaadd4a05bc0e3a7142e6c094885c8d65f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac6bf06cd5c8f446a3e5f3131c86673fd"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00061.html#gabd1aa34f399e8493ed87842ba93f1a84">timer_status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html#gac6bf06cd5c8f446a3e5f3131c86673fd">TM_Start</a> (timer_handle_t timerHandle, uint8_t timerType, uint32_t timerTimeout)</td></tr>
<tr class="memdesc:gac6bf06cd5c8f446a3e5f3131c86673fd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Start a specified timer. <a href="#gac6bf06cd5c8f446a3e5f3131c86673fd">More...</a><br/></td></tr>
<tr class="separator:gac6bf06cd5c8f446a3e5f3131c86673fd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga706aca27c7deb38262e872855cb54f69"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00061.html#gabd1aa34f399e8493ed87842ba93f1a84">timer_status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html#ga706aca27c7deb38262e872855cb54f69">TM_Stop</a> (timer_handle_t timerHandle)</td></tr>
<tr class="memdesc:ga706aca27c7deb38262e872855cb54f69"><td class="mdescLeft">&#160;</td><td class="mdescRight">Stop a specified timer. <a href="#ga706aca27c7deb38262e872855cb54f69">More...</a><br/></td></tr>
<tr class="separator:ga706aca27c7deb38262e872855cb54f69"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga97a7edac7168e680c3360ac0c1fc1f70"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html#ga97a7edac7168e680c3360ac0c1fc1f70">TM_IsTimerActive</a> (timer_handle_t timerHandle)</td></tr>
<tr class="memdesc:ga97a7edac7168e680c3360ac0c1fc1f70"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check if a specified timer is active. <a href="#ga97a7edac7168e680c3360ac0c1fc1f70">More...</a><br/></td></tr>
<tr class="separator:ga97a7edac7168e680c3360ac0c1fc1f70"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab558fb1d349c1908cff276062ecbdbce"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html#gab558fb1d349c1908cff276062ecbdbce">TM_IsTimerReady</a> (timer_handle_t timerHandle)</td></tr>
<tr class="memdesc:gab558fb1d349c1908cff276062ecbdbce"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check if a specified timer is ready. <a href="#gab558fb1d349c1908cff276062ecbdbce">More...</a><br/></td></tr>
<tr class="separator:gab558fb1d349c1908cff276062ecbdbce"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa2d0a054ca4545f0fc5c5f9693840609"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html#gaa2d0a054ca4545f0fc5c5f9693840609">TM_GetRemainingTime</a> (timer_handle_t timerHandle)</td></tr>
<tr class="memdesc:gaa2d0a054ca4545f0fc5c5f9693840609"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the remaining time until timeout. <a href="#gaa2d0a054ca4545f0fc5c5f9693840609">More...</a><br/></td></tr>
<tr class="separator:gaa2d0a054ca4545f0fc5c5f9693840609"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9bdf6fdecd9fbe46b7a3ce37a966a8d4"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html#ga9bdf6fdecd9fbe46b7a3ce37a966a8d4">TM_GetFirstExpireTime</a> (uint8_t timerType)</td></tr>
<tr class="memdesc:ga9bdf6fdecd9fbe46b7a3ce37a966a8d4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the first expire time of timer. <a href="#ga9bdf6fdecd9fbe46b7a3ce37a966a8d4">More...</a><br/></td></tr>
<tr class="separator:ga9bdf6fdecd9fbe46b7a3ce37a966a8d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga3a92dc62171b1086958ed06f6a88b031"><td class="memItemLeft" align="right" valign="top">timer_handle_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html#ga3a92dc62171b1086958ed06f6a88b031">TM_GetFirstTimerWithParam</a> (void *param)</td></tr>
<tr class="memdesc:ga3a92dc62171b1086958ed06f6a88b031"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the handle of the timer of the first allocated timer that has the specified parameter. <a href="#ga3a92dc62171b1086958ed06f6a88b031">More...</a><br/></td></tr>
<tr class="separator:ga3a92dc62171b1086958ed06f6a88b031"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6c4ba7d6d092adcd5b2625a81206b791"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html#ga6c4ba7d6d092adcd5b2625a81206b791">TM_AreAllTimersOff</a> (void)</td></tr>
<tr class="memdesc:ga6c4ba7d6d092adcd5b2625a81206b791"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check if all timers except the LP timers are OFF. <a href="#ga6c4ba7d6d092adcd5b2625a81206b791">More...</a><br/></td></tr>
<tr class="separator:ga6c4ba7d6d092adcd5b2625a81206b791"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab319932675c3473d78a73b58044fe203"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html#gab319932675c3473d78a73b58044fe203">TM_NotCountedTimeBeforeSleep</a> (void)</td></tr>
<tr class="memdesc:gab319932675c3473d78a73b58044fe203"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns not counted time before system entering in sleep, This function is called by Low Power module. <a href="#gab319932675c3473d78a73b58044fe203">More...</a><br/></td></tr>
<tr class="separator:gab319932675c3473d78a73b58044fe203"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gacb82f7c1d665d4be22e7ce414fc301ae"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html#gacb82f7c1d665d4be22e7ce414fc301ae">TM_SyncLpmTimers</a> (uint32_t sleepDurationTmrUs)</td></tr>
<tr class="memdesc:gacb82f7c1d665d4be22e7ce414fc301ae"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sync low power timer in sleep mode, This function is called by Low Power module;. <a href="#gacb82f7c1d665d4be22e7ce414fc301ae">More...</a><br/></td></tr>
<tr class="separator:gacb82f7c1d665d4be22e7ce414fc301ae"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5935a99ee1f2e0e329b51be5b0c8e03e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html#ga5935a99ee1f2e0e329b51be5b0c8e03e">TM_MakeTimerTaskReady</a> (void)</td></tr>
<tr class="memdesc:ga5935a99ee1f2e0e329b51be5b0c8e03e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Make timer task ready after wakeup from lowpower mode, This function is called by Low Power module;. <a href="#ga5935a99ee1f2e0e329b51be5b0c8e03e">More...</a><br/></td></tr>
<tr class="separator:ga5935a99ee1f2e0e329b51be5b0c8e03e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7ccfa8bdd9b20f1636bd4c62c4798418"><td class="memItemLeft" align="right" valign="top">uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html#ga7ccfa8bdd9b20f1636bd4c62c4798418">TM_GetTimestamp</a> (void)</td></tr>
<tr class="memdesc:ga7ccfa8bdd9b20f1636bd4c62c4798418"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a time-stamp value. <a href="#ga7ccfa8bdd9b20f1636bd4c62c4798418">More...</a><br/></td></tr>
<tr class="separator:ga7ccfa8bdd9b20f1636bd4c62c4798418"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<hr/><h2 class="groupheader">Data Structure Documentation</h2>
<a name="a00432" id="a00432"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct _timer_config</td>
</tr>
</table>
</div><div class="memdoc">
<div class="textblock"></div><table class="memberdecls">
<tr><td colspan="2"><h3>Data Fields</h3></td></tr>
<tr class="memitem:a061bc26fa72643fd9212d6b3c88746c1"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html#a061bc26fa72643fd9212d6b3c88746c1">srcClock_Hz</a></td></tr>
<tr class="separator:a061bc26fa72643fd9212d6b3c88746c1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afb92bf20edc998588b461ab920132e4d"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html#afb92bf20edc998588b461ab920132e4d">instance</a></td></tr>
<tr class="memdesc:afb92bf20edc998588b461ab920132e4d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Hardware timer module instance, for example: if you want use FTM0,then the instance is configured to 0, if you want use FTM2 hardware timer, then configure the instance to 2, detail information please refer to the SOC corresponding RM. <a href="#afb92bf20edc998588b461ab920132e4d">More...</a><br/></td></tr>
<tr class="separator:afb92bf20edc998588b461ab920132e4d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a03414354d01435513606b3286eb0e037"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00061.html#a03414354d01435513606b3286eb0e037">clockSrcSelect</a></td></tr>
<tr class="memdesc:a03414354d01435513606b3286eb0e037"><td class="mdescLeft">&#160;</td><td class="mdescRight">Select clock source. <a href="#a03414354d01435513606b3286eb0e037">More...</a><br/></td></tr>
<tr class="separator:a03414354d01435513606b3286eb0e037"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h4 class="groupheader">Field Documentation</h4>
<a class="anchor" id="a061bc26fa72643fd9212d6b3c88746c1"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32_t _timer_config::srcClock_Hz</td>
</tr>
</table>
</div><div class="memdoc">
<p>The timer source clock frequency. </p>
</div>
</div>
<a class="anchor" id="afb92bf20edc998588b461ab920132e4d"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8_t _timer_config::instance</td>
</tr>
</table>
</div><div class="memdoc">
<p>Invalid instance value will cause initialization failure. </p>
</div>
</div>
<a class="anchor" id="a03414354d01435513606b3286eb0e037"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8_t _timer_config::clockSrcSelect</td>
</tr>
</table>
</div><div class="memdoc">
<p>It is timer clock select, if the lptmr does not to use the default clock source </p>
</div>
</div>
</div>
</div>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="ga72f8843b02aa54036e14ec25bd440442"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define TM_COMMON_TASK_ENABLE&#160;&#160;&#160;(0)</td>
</tr>
</table>
</div><div class="memdoc">
<p>The timer manager is built based on the timer adapter component provided by the NXP MCUXpresso SDK. It could provide bellow features: shall support SingleShot,repeater,one minute timer,one second timer and low power mode shall support timer open ,close, start and stop operation, and support callback function install And provide 1ms accuracy timers</p>
<p>The timer manager would be used with different HW timer modules like FTM, PIT, LPTMR. But at the same time, only one HW timer module could be used. On different platforms,different HW timer module would be used. For the platforms which have multiple HW timer modules, one HW timer module would be selected as the default, but it is easy to change the default HW timer module to another. Just two steps to switch the HW timer module: 1.Remove the default HW timer module source file from the project 2.Add the expected HW timer module source file to the project. For example, in platform FRDM-K64F, there are two HW timer modules available, FTM and PIT. FTM is used as the default HW timer, so ftm_adapter.c and timer.h is included in the project by default.If PIT is expected to be used as the HW timer, ftm_adapter.c need to be removed from the project and pit_adapter.c should be included in the project </p>
</div>
</div>
<a class="anchor" id="gaf8b81a12c751492d009ab401934018df"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define TIMER_HANDLE_SIZE&#160;&#160;&#160;(32U)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="gac4539ca9cd54b6b88c2613f01396c39e"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define TIMER_MANAGER_HANDLE_DEFINE</td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname">name</td><td>)</td>
<td>&#160;&#160;&#160;uint32_t name[(<a class="el" href="a00061.html#gaf8b81a12c751492d009ab401934018df">TIMER_HANDLE_SIZE</a> + sizeof(uint32_t) - 1U) / sizeof(uint32_t)]</td>
</tr>
</table>
</div><div class="memdoc">
<p>This macro is used to define a 4 byte aligned timer manager handle. Then use "(eeprom_handle_t)name" to get the timer manager handle.</p>
<p>The macro should be global and could be optional. You could also define timer manager handle by yourself.</p>
<p>This is an example, </p>
<div class="fragment"><div class="line">* <a class="code" href="a00061.html#gac4539ca9cd54b6b88c2613f01396c39e">TIMER_MANAGER_HANDLE_DEFINE</a>(timerManagerHandle);</div>
<div class="line">* </div>
</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">name</td><td>The name string of the timer manager handle. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gaaf2e52a0273bdc298c5758308e996e4b"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define kTimerModeSingleShot&#160;&#160;&#160;0x01U</td>
</tr>
</table>
</div><div class="memdoc">
<p>The timer will expire only once. </p>
</div>
</div>
<a class="anchor" id="ga91588951994651d1d17c78d44f81790d"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define kTimerModeIntervalTimer&#160;&#160;&#160;0x02U</td>
</tr>
</table>
</div><div class="memdoc">
<p>The timer will restart each time it expires. </p>
</div>
</div>
<a class="anchor" id="ga1193bc58cd3794c28b8abca31edfcc67"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define kTimerModeSetMinuteTimer&#160;&#160;&#160;0x04U</td>
</tr>
</table>
</div><div class="memdoc">
<p>The timer will one minute timer. </p>
</div>
</div>
<a class="anchor" id="ga7c99c8ee48aa25f77a65593089746c47"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define kTimerModeSetSecondTimer&#160;&#160;&#160;0x08U</td>
</tr>
</table>
</div><div class="memdoc">
<p>The timer will one second timer. </p>
</div>
</div>
<a class="anchor" id="ga79cfea3576a91d37b4cefcdfc6a21a30"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define kTimerModeLowPowerTimer&#160;&#160;&#160;0x10U</td>
</tr>
</table>
</div><div class="memdoc">
<p>The timer will low power mode timer. </p>
</div>
</div>
<a class="anchor" id="ga338c1ad46cd5ca06ee44fc3798f59925"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define kTimerModeSetMicrosTimer&#160;&#160;&#160;0x20U</td>
</tr>
</table>
</div><div class="memdoc">
<p>The timer will low power mode timer with microsecond unit. </p>
</div>
</div>
<h2 class="groupheader">Enumeration Type Documentation</h2>
<a class="anchor" id="ga7f276389f10e0027a798a51383d00573"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="a00061.html#ga7f276389f10e0027a798a51383d00573">_timer_status</a></td>
</tr>
</table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><em><a class="anchor" id="gga7f276389f10e0027a798a51383d00573a0c6eb102d94340d3e30612dd8dc8a83f"></a>kStatus_TimerSuccess</em>&nbsp;</td><td class="fielddoc">
<p>Success. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga7f276389f10e0027a798a51383d00573aa57c77145092086b436d82818d5b3a6c"></a>kStatus_TimerInvalidId</em>&nbsp;</td><td class="fielddoc">
<p>Invalid Id. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga7f276389f10e0027a798a51383d00573a7c83ba44797b43e22345ee2a2eda4194"></a>kStatus_TimerNotSupport</em>&nbsp;</td><td class="fielddoc">
<p>Not Support. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga7f276389f10e0027a798a51383d00573a8f998f90d18ce88604f59d64182e6c18"></a>kStatus_TimerOutOfRange</em>&nbsp;</td><td class="fielddoc">
<p>Out Of Range. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga7f276389f10e0027a798a51383d00573a8731a5fb9c9c9819477b3f6ff3ebdbe6"></a>kStatus_TimerError</em>&nbsp;</td><td class="fielddoc">
<p>Fail. </p>
</td></tr>
</table>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="ga0148c33d19e346e64c82090406ea23a2"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00061.html#gabd1aa34f399e8493ed87842ba93f1a84">timer_status_t</a> TM_Init </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00061.html#gaef51b9fa2e8cf8d7f9f58b823c5b2ac7">timer_config_t</a> *&#160;</td>
<td class="paramname"><em>timerConfig</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>For Initializes timer manager, </p>
<div class="fragment"><div class="line">* <a class="code" href="a00061.html#a00432">timer_config_t</a> timerConfig;</div>
<div class="line">* timerConfig.<a class="code" href="a00061.html#afb92bf20edc998588b461ab920132e4d">instance</a> = 0;</div>
<div class="line">* timerConfig.<a class="code" href="a00061.html#a061bc26fa72643fd9212d6b3c88746c1">srcClock_Hz</a> = BOARD_GetTimerSrcClock();</div>
<div class="line">* <a class="code" href="a00061.html#ga0148c33d19e346e64c82090406ea23a2">TM_Init</a>(&amp;timerConfig);</div>
<div class="line">* </div>
</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">timerConfig</td><td>Pointer to user-defined timer configuration structure. </td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">kStatus_TimerSuccess</td><td>Timer manager initialization succeed. </td></tr>
<tr><td class="paramname">kStatus_TimerError</td><td>An error occurred. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga5236f86dd97dd56dc1869ffe4449ed35"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void TM_EnterTickless </td>
<td>(</td>
<td class="paramtype">timer_handle_t&#160;</td>
<td class="paramname"><em>timerHandle</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint64_t&#160;</td>
<td class="paramname"><em>timerTimeout</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Starts a timer and sync all timer manager ressources before programming HW timer module. Everything is done by bypassing the timer manager task as this function is usually called under masked interrupts (no context switch).</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">timerHandle</td><td>the handle of the timer </td></tr>
<tr><td class="paramname">timerTimeout</td><td>The timer timeout in microseconds unit </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gab704bf6e8b80685a84058cb67a2a041a"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void TM_ExitTickless </td>
<td>(</td>
<td class="paramtype">timer_handle_t&#160;</td>
<td class="paramname"><em>timerHandle</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Makes sure to stop the tickless timer and resync all existing timers. Everything is done by bypassing the timer manager task as this function is usually called under masked interrupts (no context switch).</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">timerHandle</td><td>the handle of the timer </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga83cbe4de899abbcf13df01415d3f69ea"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00061.html#gabd1aa34f399e8493ed87842ba93f1a84">timer_status_t</a> TM_Open </td>
<td>(</td>
<td class="paramtype">timer_handle_t&#160;</td>
<td class="paramname"><em>timerHandle</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">timerHandle</td><td>Pointer to a memory space of size <a class="el" href="a00061.html#gaf8b81a12c751492d009ab401934018df" title="Definition of timer manager handle size. ">TIMER_HANDLE_SIZE</a> allocated by the caller. The handle should be 4 byte aligned, because unaligned access doesn't be supported on some devices. You can define the handle in the following two ways: <a class="el" href="a00061.html#gac4539ca9cd54b6b88c2613f01396c39e" title="Defines the timer manager handle. ">TIMER_MANAGER_HANDLE_DEFINE(timerHandle)</a>; or uint32_t timerHandle[((TIMER_HANDLE_SIZE + sizeof(uint32_t) - 1U) / sizeof(uint32_t))]; </td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">kStatus_TimerSuccess</td><td>Timer open succeed. </td></tr>
<tr><td class="paramname">kStatus_TimerError</td><td>An error occurred. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga6c8bba53f6c004a54db1765951c8f477"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00061.html#gabd1aa34f399e8493ed87842ba93f1a84">timer_status_t</a> TM_Close </td>
<td>(</td>
<td class="paramtype">timer_handle_t&#160;</td>
<td class="paramname"><em>timerHandle</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">timerHandle</td><td>the handle of the timer</td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">kStatus_TimerSuccess</td><td>Timer close succeed. </td></tr>
<tr><td class="paramname">kStatus_TimerError</td><td>An error occurred. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gaadd4a05bc0e3a7142e6c094885c8d65f"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00061.html#gabd1aa34f399e8493ed87842ba93f1a84">timer_status_t</a> TM_InstallCallback </td>
<td>(</td>
<td class="paramtype">timer_handle_t&#160;</td>
<td class="paramname"><em>timerHandle</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">timer_callback_t&#160;</td>
<td class="paramname"><em>callback</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>callbackParam</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section note"><dt>Note</dt><dd>Application need call the function to install specified timer callback before start a timer .</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">timerHandle</td><td>the handle of the timer </td></tr>
<tr><td class="paramname">callback</td><td>callback function </td></tr>
<tr><td class="paramname">callbackParam</td><td>parameter to callback function</td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">kStatus_TimerSuccess</td><td>Timer install callback succeed. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gac6bf06cd5c8f446a3e5f3131c86673fd"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00061.html#gabd1aa34f399e8493ed87842ba93f1a84">timer_status_t</a> TM_Start </td>
<td>(</td>
<td class="paramtype">timer_handle_t&#160;</td>
<td class="paramname"><em>timerHandle</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>timerType</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>timerTimeout</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p><a class="el" href="a00061.html#gac6bf06cd5c8f446a3e5f3131c86673fd" title="Start a specified timer. ">TM_Start()</a> starts a specified timer that was previously opened using the <a class="el" href="a00061.html#ga83cbe4de899abbcf13df01415d3f69ea" title="Open a timer with user handle. ">TM_Open()</a> API function. The function is a non-blocking API, the funciton will return at once. And the callback function that was previously installed by using the <a class="el" href="a00061.html#gaadd4a05bc0e3a7142e6c094885c8d65f" title="Install a specified timer callback. ">TM_InstallCallback()</a> API function will be called if timer is expired.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">timerHandle</td><td>the handle of the timer </td></tr>
<tr><td class="paramname">timerType</td><td>The mode of the timer, for example: kTimerModeSingleShot for the timer will expire only once, kTimerModeIntervalTimer, the timer will restart each time it expires. If low power mode is used at the same time. It should be set like this: kTimerModeSingleShot | kTimerModeLowPowerTimer. kTimerModeSetMicosTimer is microsecond unit, and please note the timer Manager can't make sure the high resolution accuracy than 1ms with kTimerModeSetMicosTimer support, for example if timer manager use 32K OSC timer as clock source, actually the precision of timer is about 31us. </td></tr>
<tr><td class="paramname">timerTimeout</td><td>The timer timeout in milliseconds unit for kTimerModeSingleShot, kTimerModeIntervalTimer and kTimerModeLowPowerTimer,if kTimerModeSetMinuteTimer timeout for minutes unit, if kTimerModeSetSecondTimer the timeout for seconds unit. the timeout is in microseconds if kTimerModeSetMicrosTimer is used.</td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">kStatus_TimerSuccess</td><td>Timer start succeed. </td></tr>
<tr><td class="paramname">kStatus_TimerError</td><td>An error occurred. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga706aca27c7deb38262e872855cb54f69"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00061.html#gabd1aa34f399e8493ed87842ba93f1a84">timer_status_t</a> TM_Stop </td>
<td>(</td>
<td class="paramtype">timer_handle_t&#160;</td>
<td class="paramname"><em>timerHandle</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">timerHandle</td><td>the handle of the timer</td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">kStatus_TimerSuccess</td><td>Timer stop succeed. </td></tr>
<tr><td class="paramname">kStatus_TimerError</td><td>An error occurred. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga97a7edac7168e680c3360ac0c1fc1f70"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8_t TM_IsTimerActive </td>
<td>(</td>
<td class="paramtype">timer_handle_t&#160;</td>
<td class="paramname"><em>timerHandle</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">timerHandle</td><td>the handle of the timer</td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">return</td><td>1 if timer is active, return 0 if timer is not active. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gab558fb1d349c1908cff276062ecbdbce"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8_t TM_IsTimerReady </td>
<td>(</td>
<td class="paramtype">timer_handle_t&#160;</td>
<td class="paramname"><em>timerHandle</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">timerHandle</td><td>the handle of the timer</td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">return</td><td>1 if timer is ready, return 0 if timer is not ready. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gaa2d0a054ca4545f0fc5c5f9693840609"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32_t TM_GetRemainingTime </td>
<td>(</td>
<td class="paramtype">timer_handle_t&#160;</td>
<td class="paramname"><em>timerHandle</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">timerHandle</td><td>the handle of the timer</td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">remaining</td><td>time in microseconds until first timer timeouts. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga9bdf6fdecd9fbe46b7a3ce37a966a8d4"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32_t TM_GetFirstExpireTime </td>
<td>(</td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>timerType</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">timerType</td><td>The mode of the timer, for example: kTimerModeSingleShot for the timer will expire only once, kTimerModeIntervalTimer, the timer will restart each time it expires.</td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">return</td><td>the first expire time of all timer. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga3a92dc62171b1086958ed06f6a88b031"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">timer_handle_t TM_GetFirstTimerWithParam </td>
<td>(</td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>param</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">param</td><td>specified parameter of timer</td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">return</td><td>the handle of the timer if success. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga6c4ba7d6d092adcd5b2625a81206b791"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8_t TM_AreAllTimersOff </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">return</td><td>1 there are no active non-low power timers, 0 otherwise. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gab319932675c3473d78a73b58044fe203"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32_t TM_NotCountedTimeBeforeSleep </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">return</td><td>microseconds that wasn't counted before entering in sleep. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gacb82f7c1d665d4be22e7ce414fc301ae"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void TM_SyncLpmTimers </td>
<td>(</td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>sleepDurationTmrUs</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">sleepDurationTmrUs</td><td>sleep duration in microseconds unit </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga5935a99ee1f2e0e329b51be5b0c8e03e"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void TM_MakeTimerTaskReady </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="ga7ccfa8bdd9b20f1636bd4c62c4798418"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint64_t TM_GetTimestamp </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>
</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>