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

900 lines
59 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: Button</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('a00009.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">Button</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:a00300"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00009.html#a00300">_button_callback_message_struct</a></td></tr>
<tr class="memdesc:a00300"><td class="mdescLeft">&#160;</td><td class="mdescRight">The callback message struct of button. <a href="a00009.html#a00300">More...</a><br/></td></tr>
<tr class="separator:a00300"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a00302"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00009.html#a00302">_button_gpio_config</a></td></tr>
<tr class="memdesc:a00302"><td class="mdescLeft">&#160;</td><td class="mdescRight">The button gpio config structure. <a href="a00009.html#a00302">More...</a><br/></td></tr>
<tr class="separator:a00302"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a00301"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00009.html#a00301">_button_config</a></td></tr>
<tr class="memdesc:a00301"><td class="mdescLeft">&#160;</td><td class="mdescRight">The button config structure. <a href="a00009.html#a00301">More...</a><br/></td></tr>
<tr class="separator:a00301"><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:gaf2aaed1c1bbe1a51c86e4da6787ee0aa"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00009.html#gaf2aaed1c1bbe1a51c86e4da6787ee0aa">BUTTON_EVENT_ONECLICK_ENABLE</a>&#160;&#160;&#160;(1)</td></tr>
<tr class="memdesc:gaf2aaed1c1bbe1a51c86e4da6787ee0aa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Definition of feature 'one click' enable macro. <a href="#gaf2aaed1c1bbe1a51c86e4da6787ee0aa">More...</a><br/></td></tr>
<tr class="separator:gaf2aaed1c1bbe1a51c86e4da6787ee0aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae3086fe30056117c881bf2b6d517cf50"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00009.html#gae3086fe30056117c881bf2b6d517cf50">BUTTON_EVENT_DOUBLECLICK_ENABLE</a>&#160;&#160;&#160;(1)</td></tr>
<tr class="memdesc:gae3086fe30056117c881bf2b6d517cf50"><td class="mdescLeft">&#160;</td><td class="mdescRight">Definition of feature 'double click' enable macro. <a href="#gae3086fe30056117c881bf2b6d517cf50">More...</a><br/></td></tr>
<tr class="separator:gae3086fe30056117c881bf2b6d517cf50"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gabd760b441edc387bd7a9c6359aa3c701"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00009.html#gabd760b441edc387bd7a9c6359aa3c701">BUTTON_EVENT_SHORTPRESS_ENABLE</a>&#160;&#160;&#160;(1)</td></tr>
<tr class="memdesc:gabd760b441edc387bd7a9c6359aa3c701"><td class="mdescLeft">&#160;</td><td class="mdescRight">Definition of feature 'short press' enable macro. <a href="#gabd760b441edc387bd7a9c6359aa3c701">More...</a><br/></td></tr>
<tr class="separator:gabd760b441edc387bd7a9c6359aa3c701"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga86148f4ddfbf8442c75ef89cf103c35c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00009.html#ga86148f4ddfbf8442c75ef89cf103c35c">BUTTON_EVENT_LONGPRESS_ENABLE</a>&#160;&#160;&#160;(1)</td></tr>
<tr class="memdesc:ga86148f4ddfbf8442c75ef89cf103c35c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Definition of feature 'long press' enable macro. <a href="#ga86148f4ddfbf8442c75ef89cf103c35c">More...</a><br/></td></tr>
<tr class="separator:ga86148f4ddfbf8442c75ef89cf103c35c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae9a6512570512f2d2dedc0a55dc718d9"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00009.html#gae9a6512570512f2d2dedc0a55dc718d9">BUTTON_ALL_ENTER_EXIT_LOWPOWER_HANDLE</a>&#160;&#160;&#160;((uint32_t *)0xffffffffU) /* MISRA C-2012 Rule 11.6 */</td></tr>
<tr class="memdesc:gae9a6512570512f2d2dedc0a55dc718d9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Definition of all buttons enter/exit lowpower handle macro. <a href="#gae9a6512570512f2d2dedc0a55dc718d9">More...</a><br/></td></tr>
<tr class="separator:gae9a6512570512f2d2dedc0a55dc718d9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gafef8e8e41587b7d9add929f4aee41f9c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00009.html#gafef8e8e41587b7d9add929f4aee41f9c">BUTTON_HANDLE_SIZE</a>&#160;&#160;&#160;(16U + 24U)</td></tr>
<tr class="memdesc:gafef8e8e41587b7d9add929f4aee41f9c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Definition of button handle size as HAL_GPIO_HANDLE_SIZE + button dedicated size. <a href="#gafef8e8e41587b7d9add929f4aee41f9c">More...</a><br/></td></tr>
<tr class="separator:gafef8e8e41587b7d9add929f4aee41f9c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaac9470723d0f6a561278fbe67be9c33a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00009.html#gaac9470723d0f6a561278fbe67be9c33a">BUTTON_HANDLE_DEFINE</a>(name)&#160;&#160;&#160;uint32_t name[((<a class="el" href="a00009.html#gafef8e8e41587b7d9add929f4aee41f9c">BUTTON_HANDLE_SIZE</a> + sizeof(uint32_t) - 1U) / sizeof(uint32_t))]</td></tr>
<tr class="memdesc:gaac9470723d0f6a561278fbe67be9c33a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Defines the button handle. <a href="#gaac9470723d0f6a561278fbe67be9c33a">More...</a><br/></td></tr>
<tr class="separator:gaac9470723d0f6a561278fbe67be9c33a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad05e5b84002802c3e978698343efe978"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00009.html#gad05e5b84002802c3e978698343efe978">BUTTON_HANDLE_ARRAY_DEFINE</a>(name, count)&#160;&#160;&#160;uint32_t name[count][((<a class="el" href="a00009.html#gafef8e8e41587b7d9add929f4aee41f9c">BUTTON_HANDLE_SIZE</a> + sizeof(uint32_t) - 1U) / sizeof(uint32_t))]</td></tr>
<tr class="memdesc:gad05e5b84002802c3e978698343efe978"><td class="mdescLeft">&#160;</td><td class="mdescRight">Defines the button handle array. <a href="#gad05e5b84002802c3e978698343efe978">More...</a><br/></td></tr>
<tr class="separator:gad05e5b84002802c3e978698343efe978"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga56f117a44ed962789c1f4916d61ef092"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00009.html#ga56f117a44ed962789c1f4916d61ef092">BUTTON_TIMER_INTERVAL</a>&#160;&#160;&#160;(25U)</td></tr>
<tr class="memdesc:ga56f117a44ed962789c1f4916d61ef092"><td class="mdescLeft">&#160;</td><td class="mdescRight">Definition of button timer interval,unit is ms. <a href="#ga56f117a44ed962789c1f4916d61ef092">More...</a><br/></td></tr>
<tr class="separator:ga56f117a44ed962789c1f4916d61ef092"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7f8d7d8e8d31a99c47dd4e77daa6487f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00009.html#ga7f8d7d8e8d31a99c47dd4e77daa6487f">BUTTON_SHORT_PRESS_THRESHOLD</a>&#160;&#160;&#160;(200U)</td></tr>
<tr class="memdesc:ga7f8d7d8e8d31a99c47dd4e77daa6487f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Definition of button short press threshold,unit is ms. <a href="#ga7f8d7d8e8d31a99c47dd4e77daa6487f">More...</a><br/></td></tr>
<tr class="separator:ga7f8d7d8e8d31a99c47dd4e77daa6487f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga27c44cf8a736b2f4804884a612aec039"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00009.html#ga27c44cf8a736b2f4804884a612aec039">BUTTON_LONG_PRESS_THRESHOLD</a>&#160;&#160;&#160;(500U)</td></tr>
<tr class="memdesc:ga27c44cf8a736b2f4804884a612aec039"><td class="mdescLeft">&#160;</td><td class="mdescRight">Definition of button long press threshold,unit is ms. <a href="#ga27c44cf8a736b2f4804884a612aec039">More...</a><br/></td></tr>
<tr class="separator:ga27c44cf8a736b2f4804884a612aec039"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab9c680f3e07eed6a724fc5fce44a9201"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00009.html#gab9c680f3e07eed6a724fc5fce44a9201">BUTTON_DOUBLE_CLICK_THRESHOLD</a>&#160;&#160;&#160;(200U)</td></tr>
<tr class="memdesc:gab9c680f3e07eed6a724fc5fce44a9201"><td class="mdescLeft">&#160;</td><td class="mdescRight">Definition of button double click threshold,unit is ms. <a href="#gab9c680f3e07eed6a724fc5fce44a9201">More...</a><br/></td></tr>
<tr class="separator:gab9c680f3e07eed6a724fc5fce44a9201"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga73bfe006f7ca2b88fe910174f1b0cfb2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00009.html#ga73bfe006f7ca2b88fe910174f1b0cfb2">BUTTON_USE_COMMON_TASK</a>&#160;&#160;&#160;(0U)</td></tr>
<tr class="memdesc:ga73bfe006f7ca2b88fe910174f1b0cfb2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Definition to determine whether use common task. <a href="#ga73bfe006f7ca2b88fe910174f1b0cfb2">More...</a><br/></td></tr>
<tr class="separator:ga73bfe006f7ca2b88fe910174f1b0cfb2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga94dea431a1c059625b45f816ab129043"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00009.html#ga94dea431a1c059625b45f816ab129043">BUTTON_TASK_PRIORITY</a>&#160;&#160;&#160;(7U)</td></tr>
<tr class="memdesc:ga94dea431a1c059625b45f816ab129043"><td class="mdescLeft">&#160;</td><td class="mdescRight">Definition of button task priority. <a href="#ga94dea431a1c059625b45f816ab129043">More...</a><br/></td></tr>
<tr class="separator:ga94dea431a1c059625b45f816ab129043"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gadbb9d0dfbf98763aa25c6a52814f0bf8"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00009.html#gadbb9d0dfbf98763aa25c6a52814f0bf8">BUTTON_TASK_STACK_SIZE</a>&#160;&#160;&#160;(1000U)</td></tr>
<tr class="memdesc:gadbb9d0dfbf98763aa25c6a52814f0bf8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Definition of button task stack size. <a href="#gadbb9d0dfbf98763aa25c6a52814f0bf8">More...</a><br/></td></tr>
<tr class="separator:gadbb9d0dfbf98763aa25c6a52814f0bf8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf9f746f940d6fcf6cac0f6feaefb2108"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00009.html#gaf9f746f940d6fcf6cac0f6feaefb2108">BUTTON_EVENT_BUTTON</a>&#160;&#160;&#160;(1U)</td></tr>
<tr class="memdesc:gaf9f746f940d6fcf6cac0f6feaefb2108"><td class="mdescLeft">&#160;</td><td class="mdescRight">Definition of button event. <a href="#gaf9f746f940d6fcf6cac0f6feaefb2108">More...</a><br/></td></tr>
<tr class="separator:gaf9f746f940d6fcf6cac0f6feaefb2108"><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:gacef6d632127df591a861222e28033be2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gacef6d632127df591a861222e28033be2"></a>
typedef void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00009.html#gacef6d632127df591a861222e28033be2">button_handle_t</a></td></tr>
<tr class="memdesc:gacef6d632127df591a861222e28033be2"><td class="mdescLeft">&#160;</td><td class="mdescRight">The handle of button. <br/></td></tr>
<tr class="separator:gacef6d632127df591a861222e28033be2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad36848ab174c6efe33d211ee4edfe470"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gad36848ab174c6efe33d211ee4edfe470"></a>
typedef enum <a class="el" href="a00009.html#ga0020fa30530864f95f5f4146aa953af4">_button_status</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00009.html#gad36848ab174c6efe33d211ee4edfe470">button_status_t</a></td></tr>
<tr class="memdesc:gad36848ab174c6efe33d211ee4edfe470"><td class="mdescLeft">&#160;</td><td class="mdescRight">The status type of button. <br/></td></tr>
<tr class="separator:gad36848ab174c6efe33d211ee4edfe470"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaaba5738b1b548850485fe34ffe239c93"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaaba5738b1b548850485fe34ffe239c93"></a>
typedef enum <a class="el" href="a00009.html#gac85f9f7163842c14f9b7232961c4f9ff">_button_event</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00009.html#gaaba5738b1b548850485fe34ffe239c93">button_event_t</a></td></tr>
<tr class="memdesc:gaaba5738b1b548850485fe34ffe239c93"><td class="mdescLeft">&#160;</td><td class="mdescRight">The event type of button. <br/></td></tr>
<tr class="separator:gaaba5738b1b548850485fe34ffe239c93"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga417355db6474eb75c4ffae1afeac0ced"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga417355db6474eb75c4ffae1afeac0ced"></a>
typedef struct <br class="typebreak"/>
<a class="el" href="a00009.html#a00300">_button_callback_message_struct</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00009.html#ga417355db6474eb75c4ffae1afeac0ced">button_callback_message_t</a></td></tr>
<tr class="memdesc:ga417355db6474eb75c4ffae1afeac0ced"><td class="mdescLeft">&#160;</td><td class="mdescRight">The callback message struct of button. <br/></td></tr>
<tr class="separator:ga417355db6474eb75c4ffae1afeac0ced"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2152e851fbba610c96061d35a0fc2149"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga2152e851fbba610c96061d35a0fc2149"></a>
typedef <a class="el" href="a00009.html#gad36848ab174c6efe33d211ee4edfe470">button_status_t</a>(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00009.html#ga2152e851fbba610c96061d35a0fc2149">button_callback_t</a> )(void *buttonHandle, <a class="el" href="a00009.html#ga417355db6474eb75c4ffae1afeac0ced">button_callback_message_t</a> *message, void *callbackParam)</td></tr>
<tr class="memdesc:ga2152e851fbba610c96061d35a0fc2149"><td class="mdescLeft">&#160;</td><td class="mdescRight">The callback function of button. <br/></td></tr>
<tr class="separator:ga2152e851fbba610c96061d35a0fc2149"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gadfbc9f81d7fcfcdc7815159bd0ecef2a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gadfbc9f81d7fcfcdc7815159bd0ecef2a"></a>
typedef struct <a class="el" href="a00009.html#a00302">_button_gpio_config</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00009.html#gadfbc9f81d7fcfcdc7815159bd0ecef2a">button_gpio_config_t</a></td></tr>
<tr class="memdesc:gadfbc9f81d7fcfcdc7815159bd0ecef2a"><td class="mdescLeft">&#160;</td><td class="mdescRight">The button gpio config structure. <br/></td></tr>
<tr class="separator:gadfbc9f81d7fcfcdc7815159bd0ecef2a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaed10949768f8a42ea328c4ea52f3c882"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaed10949768f8a42ea328c4ea52f3c882"></a>
typedef struct <a class="el" href="a00009.html#a00301">_button_config</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00009.html#gaed10949768f8a42ea328c4ea52f3c882">button_config_t</a></td></tr>
<tr class="memdesc:gaed10949768f8a42ea328c4ea52f3c882"><td class="mdescLeft">&#160;</td><td class="mdescRight">The button config structure. <br/></td></tr>
<tr class="separator:gaed10949768f8a42ea328c4ea52f3c882"><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:ga0020fa30530864f95f5f4146aa953af4"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00009.html#ga0020fa30530864f95f5f4146aa953af4">_button_status</a> { <br/>
&#160;&#160;<a class="el" href="a00009.html#gga0020fa30530864f95f5f4146aa953af4a9df0d56e70b21e51a159a18930574ad6">kStatus_BUTTON_Success</a> = kStatus_Success,
<br/>
&#160;&#160;<a class="el" href="a00009.html#gga0020fa30530864f95f5f4146aa953af4a4ba4ac2b75bfb65a975873bf294af420">kStatus_BUTTON_Error</a> = MAKE_STATUS(kStatusGroup_BUTTON, 1),
<br/>
&#160;&#160;<a class="el" href="a00009.html#gga0020fa30530864f95f5f4146aa953af4a30734bda949362586c403d2b02c1bf37">kStatus_BUTTON_LackSource</a> = MAKE_STATUS(kStatusGroup_BUTTON, 2)
<br/>
}</td></tr>
<tr class="memdesc:ga0020fa30530864f95f5f4146aa953af4"><td class="mdescLeft">&#160;</td><td class="mdescRight">The status type of button. <a href="a00009.html#ga0020fa30530864f95f5f4146aa953af4">More...</a><br/></td></tr>
<tr class="separator:ga0020fa30530864f95f5f4146aa953af4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac85f9f7163842c14f9b7232961c4f9ff"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00009.html#gac85f9f7163842c14f9b7232961c4f9ff">_button_event</a> { <br/>
&#160;&#160;<a class="el" href="a00009.html#ggac85f9f7163842c14f9b7232961c4f9ffacda8422ae32e958eed0173804118a4b0">kBUTTON_EventOneClick</a> = 0x01U,
<br/>
&#160;&#160;<a class="el" href="a00009.html#ggac85f9f7163842c14f9b7232961c4f9ffa6f550e9d94024674d594b37c6c17306b">kBUTTON_EventDoubleClick</a>,
<br/>
&#160;&#160;<a class="el" href="a00009.html#ggac85f9f7163842c14f9b7232961c4f9ffa7587107b399e8c89f4bae0a141f83a9e">kBUTTON_EventShortPress</a>,
<br/>
&#160;&#160;<a class="el" href="a00009.html#ggac85f9f7163842c14f9b7232961c4f9ffa45191a6e7a3c414a1d17b2b7bce403ce">kBUTTON_EventLongPress</a>,
<br/>
&#160;&#160;<a class="el" href="a00009.html#ggac85f9f7163842c14f9b7232961c4f9ffabfda2cf195b36408bf9266faa6f10775">kBUTTON_EventError</a>
<br/>
}</td></tr>
<tr class="memdesc:gac85f9f7163842c14f9b7232961c4f9ff"><td class="mdescLeft">&#160;</td><td class="mdescRight">The event type of button. <a href="a00009.html#gac85f9f7163842c14f9b7232961c4f9ff">More...</a><br/></td></tr>
<tr class="separator:gac85f9f7163842c14f9b7232961c4f9ff"><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:ga6ea4552de91b238d080c840e16f95504"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00009.html#gad36848ab174c6efe33d211ee4edfe470">button_status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00009.html#ga6ea4552de91b238d080c840e16f95504">BUTTON_Deinit</a> (<a class="el" href="a00009.html#gacef6d632127df591a861222e28033be2">button_handle_t</a> buttonHandle)</td></tr>
<tr class="memdesc:ga6ea4552de91b238d080c840e16f95504"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deinitializes a button instance. <a href="#ga6ea4552de91b238d080c840e16f95504">More...</a><br/></td></tr>
<tr class="separator:ga6ea4552de91b238d080c840e16f95504"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga315197b8b446fe61aa98c78debd8d403"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00009.html#gad36848ab174c6efe33d211ee4edfe470">button_status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00009.html#ga315197b8b446fe61aa98c78debd8d403">BUTTON_GetInput</a> (<a class="el" href="a00009.html#gacef6d632127df591a861222e28033be2">button_handle_t</a> buttonHandle, uint8_t *pinState)</td></tr>
<tr class="memdesc:ga315197b8b446fe61aa98c78debd8d403"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get button pin input. <a href="#ga315197b8b446fe61aa98c78debd8d403">More...</a><br/></td></tr>
<tr class="separator:ga315197b8b446fe61aa98c78debd8d403"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga33f30b24edd2ed005ec17ea8af58636b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00009.html#gad36848ab174c6efe33d211ee4edfe470">button_status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00009.html#ga33f30b24edd2ed005ec17ea8af58636b">BUTTON_WakeUpSetting</a> (<a class="el" href="a00009.html#gacef6d632127df591a861222e28033be2">button_handle_t</a> buttonHandle, uint8_t enable)</td></tr>
<tr class="memdesc:ga33f30b24edd2ed005ec17ea8af58636b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enables or disables the button wake-up feature. <a href="#ga33f30b24edd2ed005ec17ea8af58636b">More...</a><br/></td></tr>
<tr class="separator:ga33f30b24edd2ed005ec17ea8af58636b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac3c18e01c72182d8f399f94a2252dbae"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00009.html#gad36848ab174c6efe33d211ee4edfe470">button_status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00009.html#gac3c18e01c72182d8f399f94a2252dbae">BUTTON_EnterLowpower</a> (<a class="el" href="a00009.html#gacef6d632127df591a861222e28033be2">button_handle_t</a> buttonHandle)</td></tr>
<tr class="memdesc:gac3c18e01c72182d8f399f94a2252dbae"><td class="mdescLeft">&#160;</td><td class="mdescRight">Prepares to enter low power consumption. <a href="#gac3c18e01c72182d8f399f94a2252dbae">More...</a><br/></td></tr>
<tr class="separator:gac3c18e01c72182d8f399f94a2252dbae"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa60fa09dbadfeb4816f979d6c9147b19"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00009.html#gad36848ab174c6efe33d211ee4edfe470">button_status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00009.html#gaa60fa09dbadfeb4816f979d6c9147b19">BUTTON_ExitLowpower</a> (<a class="el" href="a00009.html#gacef6d632127df591a861222e28033be2">button_handle_t</a> buttonHandle)</td></tr>
<tr class="memdesc:gaa60fa09dbadfeb4816f979d6c9147b19"><td class="mdescLeft">&#160;</td><td class="mdescRight">Restores from low power consumption. <a href="#gaa60fa09dbadfeb4816f979d6c9147b19">More...</a><br/></td></tr>
<tr class="separator:gaa60fa09dbadfeb4816f979d6c9147b19"><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>
Initialization</h2></td></tr>
<tr class="memitem:ga21bc086974d62b9d1ab06ade228b643e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00009.html#gad36848ab174c6efe33d211ee4edfe470">button_status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00009.html#ga21bc086974d62b9d1ab06ade228b643e">BUTTON_Init</a> (<a class="el" href="a00009.html#gacef6d632127df591a861222e28033be2">button_handle_t</a> buttonHandle, <a class="el" href="a00009.html#gaed10949768f8a42ea328c4ea52f3c882">button_config_t</a> *buttonConfig)</td></tr>
<tr class="memdesc:ga21bc086974d62b9d1ab06ade228b643e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes a button with the button handle and the user configuration structure. <a href="#ga21bc086974d62b9d1ab06ade228b643e">More...</a><br/></td></tr>
<tr class="separator:ga21bc086974d62b9d1ab06ade228b643e"><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>
Install callback</h2></td></tr>
<tr class="memitem:ga877fdaf67de1960b444d3edc95e0b0c4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00009.html#gad36848ab174c6efe33d211ee4edfe470">button_status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00009.html#ga877fdaf67de1960b444d3edc95e0b0c4">BUTTON_InstallCallback</a> (<a class="el" href="a00009.html#gacef6d632127df591a861222e28033be2">button_handle_t</a> buttonHandle, <a class="el" href="a00009.html#ga2152e851fbba610c96061d35a0fc2149">button_callback_t</a> callback, void *callbackParam)</td></tr>
<tr class="memdesc:ga877fdaf67de1960b444d3edc95e0b0c4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Installs a callback and callback parameter. <a href="#ga877fdaf67de1960b444d3edc95e0b0c4">More...</a><br/></td></tr>
<tr class="separator:ga877fdaf67de1960b444d3edc95e0b0c4"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<hr/><h2 class="groupheader">Data Structure Documentation</h2>
<a name="a00300" id="a00300"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct _button_callback_message_struct</td>
</tr>
</table>
</div><div class="memdoc">
<div class="textblock"></div>
</div>
</div>
<a name="a00302" id="a00302"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct _button_gpio_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:a83a827514d80173d494699f8fd39585a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a83a827514d80173d494699f8fd39585a"></a>
hal_gpio_direction_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00009.html#a83a827514d80173d494699f8fd39585a">direction</a></td></tr>
<tr class="memdesc:a83a827514d80173d494699f8fd39585a"><td class="mdescLeft">&#160;</td><td class="mdescRight">GPIO Pin direction (0 - In, 1 - Out) <br/></td></tr>
<tr class="separator:a83a827514d80173d494699f8fd39585a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3736760cb6c92d7fb788e5b0549f969d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3736760cb6c92d7fb788e5b0549f969d"></a>
uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00009.html#a3736760cb6c92d7fb788e5b0549f969d">pinStateDefault</a></td></tr>
<tr class="memdesc:a3736760cb6c92d7fb788e5b0549f969d"><td class="mdescLeft">&#160;</td><td class="mdescRight">GPIO Pin voltage when button is not pressed (0 - low level, 1 - high level) <br/></td></tr>
<tr class="separator:a3736760cb6c92d7fb788e5b0549f969d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9903fef7f74034d2477e8e79b3ff1346"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9903fef7f74034d2477e8e79b3ff1346"></a>
uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00009.html#a9903fef7f74034d2477e8e79b3ff1346">port</a></td></tr>
<tr class="memdesc:a9903fef7f74034d2477e8e79b3ff1346"><td class="mdescLeft">&#160;</td><td class="mdescRight">GPIO Port. <br/></td></tr>
<tr class="separator:a9903fef7f74034d2477e8e79b3ff1346"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a762130d93c30b4af0deda1a8be93397c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a762130d93c30b4af0deda1a8be93397c"></a>
uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00009.html#a762130d93c30b4af0deda1a8be93397c">pin</a></td></tr>
<tr class="memdesc:a762130d93c30b4af0deda1a8be93397c"><td class="mdescLeft">&#160;</td><td class="mdescRight">GPIO Pin. <br/></td></tr>
<tr class="separator:a762130d93c30b4af0deda1a8be93397c"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div>
</div>
<a name="a00301" id="a00301"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct _button_config</td>
</tr>
</table>
</div><div class="memdoc">
<div class="textblock"></div>
</div>
</div>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="gaf2aaed1c1bbe1a51c86e4da6787ee0aa"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define BUTTON_EVENT_ONECLICK_ENABLE&#160;&#160;&#160;(1)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="gae3086fe30056117c881bf2b6d517cf50"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define BUTTON_EVENT_DOUBLECLICK_ENABLE&#160;&#160;&#160;(1)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="gabd760b441edc387bd7a9c6359aa3c701"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define BUTTON_EVENT_SHORTPRESS_ENABLE&#160;&#160;&#160;(1)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="ga86148f4ddfbf8442c75ef89cf103c35c"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define BUTTON_EVENT_LONGPRESS_ENABLE&#160;&#160;&#160;(1)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="gae9a6512570512f2d2dedc0a55dc718d9"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define BUTTON_ALL_ENTER_EXIT_LOWPOWER_HANDLE&#160;&#160;&#160;((uint32_t *)0xffffffffU) /* MISRA C-2012 Rule 11.6 */</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="gafef8e8e41587b7d9add929f4aee41f9c"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define BUTTON_HANDLE_SIZE&#160;&#160;&#160;(16U + 24U)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="gaac9470723d0f6a561278fbe67be9c33a"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define BUTTON_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="a00009.html#gafef8e8e41587b7d9add929f4aee41f9c">BUTTON_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 button handle. Then use "(button_handle_t)name" to get the button handle.</p>
<p>The macro should be global and could be optional. You could also define button handle by yourself.</p>
<p>This is an example, </p>
<div class="fragment"><div class="line">* <a class="code" href="a00009.html#gaac9470723d0f6a561278fbe67be9c33a">BUTTON_HANDLE_DEFINE</a>(buttonHandle);</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 button handle. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gad05e5b84002802c3e978698343efe978"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define BUTTON_HANDLE_ARRAY_DEFINE</td>
<td>(</td>
<td class="paramtype">&#160;</td>
<td class="paramname">name, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">&#160;</td>
<td class="paramname">count&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td>&#160;&#160;&#160;uint32_t name[count][((<a class="el" href="a00009.html#gafef8e8e41587b7d9add929f4aee41f9c">BUTTON_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 button handle array. Then use "(button_handle_t)name[0]" to get the first button handle.</p>
<p>The macro should be global and could be optional. You could also define these button handle by yourself.</p>
<p>This is an example, </p>
<div class="fragment"><div class="line">* <a class="code" href="a00009.html#gaac9470723d0f6a561278fbe67be9c33a">BUTTON_HANDLE_DEFINE</a>(buttonHandleArray, 1);</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 button handle array. </td></tr>
<tr><td class="paramname">count</td><td>The amount of button handle. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga56f117a44ed962789c1f4916d61ef092"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define BUTTON_TIMER_INTERVAL&#160;&#160;&#160;(25U)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="ga7f8d7d8e8d31a99c47dd4e77daa6487f"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define BUTTON_SHORT_PRESS_THRESHOLD&#160;&#160;&#160;(200U)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="ga27c44cf8a736b2f4804884a612aec039"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define BUTTON_LONG_PRESS_THRESHOLD&#160;&#160;&#160;(500U)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="gab9c680f3e07eed6a724fc5fce44a9201"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define BUTTON_DOUBLE_CLICK_THRESHOLD&#160;&#160;&#160;(200U)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="ga73bfe006f7ca2b88fe910174f1b0cfb2"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define BUTTON_USE_COMMON_TASK&#160;&#160;&#160;(0U)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="ga94dea431a1c059625b45f816ab129043"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define BUTTON_TASK_PRIORITY&#160;&#160;&#160;(7U)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="gadbb9d0dfbf98763aa25c6a52814f0bf8"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define BUTTON_TASK_STACK_SIZE&#160;&#160;&#160;(1000U)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="gaf9f746f940d6fcf6cac0f6feaefb2108"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define BUTTON_EVENT_BUTTON&#160;&#160;&#160;(1U)</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<h2 class="groupheader">Enumeration Type Documentation</h2>
<a class="anchor" id="ga0020fa30530864f95f5f4146aa953af4"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="a00009.html#ga0020fa30530864f95f5f4146aa953af4">_button_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="gga0020fa30530864f95f5f4146aa953af4a9df0d56e70b21e51a159a18930574ad6"></a>kStatus_BUTTON_Success</em>&nbsp;</td><td class="fielddoc">
<p>Success. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga0020fa30530864f95f5f4146aa953af4a4ba4ac2b75bfb65a975873bf294af420"></a>kStatus_BUTTON_Error</em>&nbsp;</td><td class="fielddoc">
<p>Failed. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="gga0020fa30530864f95f5f4146aa953af4a30734bda949362586c403d2b02c1bf37"></a>kStatus_BUTTON_LackSource</em>&nbsp;</td><td class="fielddoc">
<p>Lack of sources. </p>
</td></tr>
</table>
</div>
</div>
<a class="anchor" id="gac85f9f7163842c14f9b7232961c4f9ff"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="a00009.html#gac85f9f7163842c14f9b7232961c4f9ff">_button_event</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="ggac85f9f7163842c14f9b7232961c4f9ffacda8422ae32e958eed0173804118a4b0"></a>kBUTTON_EventOneClick</em>&nbsp;</td><td class="fielddoc">
<p>One click with short time, the duration of key down and key up is less than <a class="el" href="a00009.html#ga7f8d7d8e8d31a99c47dd4e77daa6487f" title="Definition of button short press threshold,unit is ms. ">BUTTON_SHORT_PRESS_THRESHOLD</a>. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggac85f9f7163842c14f9b7232961c4f9ffa6f550e9d94024674d594b37c6c17306b"></a>kBUTTON_EventDoubleClick</em>&nbsp;</td><td class="fielddoc">
<p>Double click with short time, the duration of key down and key up is less than <a class="el" href="a00009.html#ga7f8d7d8e8d31a99c47dd4e77daa6487f" title="Definition of button short press threshold,unit is ms. ">BUTTON_SHORT_PRESS_THRESHOLD</a>. </p>
<p>And the duration of the two button actions does not exceed <a class="el" href="a00009.html#gab9c680f3e07eed6a724fc5fce44a9201" title="Definition of button double click threshold,unit is ms. ">BUTTON_DOUBLE_CLICK_THRESHOLD</a>. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggac85f9f7163842c14f9b7232961c4f9ffa7587107b399e8c89f4bae0a141f83a9e"></a>kBUTTON_EventShortPress</em>&nbsp;</td><td class="fielddoc">
<p>Press with short time, the duration of key down and key up is no less than <a class="el" href="a00009.html#ga7f8d7d8e8d31a99c47dd4e77daa6487f" title="Definition of button short press threshold,unit is ms. ">BUTTON_SHORT_PRESS_THRESHOLD</a> and less than <a class="el" href="a00009.html#ga27c44cf8a736b2f4804884a612aec039" title="Definition of button long press threshold,unit is ms. ">BUTTON_LONG_PRESS_THRESHOLD</a>. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggac85f9f7163842c14f9b7232961c4f9ffa45191a6e7a3c414a1d17b2b7bce403ce"></a>kBUTTON_EventLongPress</em>&nbsp;</td><td class="fielddoc">
<p>Press with long time, the duration of key down and key up is no less than <a class="el" href="a00009.html#ga27c44cf8a736b2f4804884a612aec039" title="Definition of button long press threshold,unit is ms. ">BUTTON_LONG_PRESS_THRESHOLD</a>. </p>
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="ggac85f9f7163842c14f9b7232961c4f9ffabfda2cf195b36408bf9266faa6f10775"></a>kBUTTON_EventError</em>&nbsp;</td><td class="fielddoc">
<p>Error event if the button actions cannot be identified. </p>
</td></tr>
</table>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="ga21bc086974d62b9d1ab06ade228b643e"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00009.html#gad36848ab174c6efe33d211ee4edfe470">button_status_t</a> BUTTON_Init </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00009.html#gacef6d632127df591a861222e28033be2">button_handle_t</a>&#160;</td>
<td class="paramname"><em>buttonHandle</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="a00009.html#gaed10949768f8a42ea328c4ea52f3c882">button_config_t</a> *&#160;</td>
<td class="paramname"><em>buttonConfig</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function configures the button with user-defined settings. The user can configure the configuration structure. The parameter buttonHandle is a pointer to point to a memory space of size <a class="el" href="a00009.html#gafef8e8e41587b7d9add929f4aee41f9c" title="Definition of button handle size as HAL_GPIO_HANDLE_SIZE + button dedicated size. ...">BUTTON_HANDLE_SIZE</a> allocated by the caller.</p>
<p>Example below shows how to use this API to configure the button. For one button, </p>
<div class="fragment"><div class="line">* <span class="keyword">static</span> <a class="code" href="a00009.html#gaac9470723d0f6a561278fbe67be9c33a">BUTTON_HANDLE_DEFINE</a>(s_buttonHandle);</div>
<div class="line">* <a class="code" href="a00009.html#a00301">button_config_t</a> buttonConfig;</div>
<div class="line">* buttonConfig.gpio.<a class="code" href="a00009.html#a9903fef7f74034d2477e8e79b3ff1346">port</a> = 0;</div>
<div class="line">* buttonConfig.gpio.<a class="code" href="a00009.html#a762130d93c30b4af0deda1a8be93397c">pin</a> = 1;</div>
<div class="line">* buttonConfig.gpio.<a class="code" href="a00009.html#a3736760cb6c92d7fb788e5b0549f969d">pinStateDefault</a> = 0;</div>
<div class="line">* <a class="code" href="a00009.html#ga21bc086974d62b9d1ab06ade228b643e">BUTTON_Init</a>((<a class="code" href="a00009.html#gacef6d632127df591a861222e28033be2">button_handle_t</a>)s_buttonHandle, &amp;buttonConfig);</div>
<div class="line">* </div>
</div><!-- fragment --><p> For multiple buttons, </p>
<div class="fragment"><div class="line">* <span class="keyword">static</span> <a class="code" href="a00009.html#gad05e5b84002802c3e978698343efe978">BUTTON_HANDLE_ARRAY_DEFINE</a>(s_buttonArrayHandle, count);</div>
<div class="line">* <a class="code" href="a00009.html#a00301">button_config_t</a> buttonArrayConfig[count];</div>
<div class="line">* <span class="keywordflow">for</span>(uint8_t i = 0U; i &lt; count; i++)</div>
<div class="line">* {</div>
<div class="line">* buttonArrayConfig[i].gpio.<a class="code" href="a00009.html#a9903fef7f74034d2477e8e79b3ff1346">port</a> = 0;</div>
<div class="line">* buttonArrayConfig[i].gpio.<a class="code" href="a00009.html#a762130d93c30b4af0deda1a8be93397c">pin</a> = 1;</div>
<div class="line">* buttonArrayConfig[i].gpio.<a class="code" href="a00009.html#a3736760cb6c92d7fb788e5b0549f969d">pinStateDefault</a> = 0;</div>
<div class="line">* <a class="code" href="a00009.html#ga21bc086974d62b9d1ab06ade228b643e">BUTTON_Init</a>((<a class="code" href="a00009.html#gacef6d632127df591a861222e28033be2">button_handle_t</a>)s_buttonArrayHandle[i], &amp;buttonArrayConfig[i]);</div>
<div class="line">* }</div>
<div class="line">* </div>
</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">buttonHandle</td><td>Pointer to point to a memory space of size <a class="el" href="a00009.html#gafef8e8e41587b7d9add929f4aee41f9c" title="Definition of button handle size as HAL_GPIO_HANDLE_SIZE + button dedicated size. ...">BUTTON_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 one handle in the following two ways: <a class="el" href="a00009.html#gaac9470723d0f6a561278fbe67be9c33a" title="Defines the button handle. ">BUTTON_HANDLE_DEFINE(buttonHandle)</a>; or uint32_t buttonHandle[((BUTTON_HANDLE_SIZE + sizeof(uint32_t) - 1U) / sizeof(uint32_t))]; You can define multiple handles in the following way: <a class="el" href="a00009.html#gad05e5b84002802c3e978698343efe978" title="Defines the button handle array. ">BUTTON_HANDLE_ARRAY_DEFINE(buttonHandleArray, count)</a>; </td></tr>
<tr><td class="paramname">buttonConfig</td><td>Pointer to user-defined configuration structure. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Indicates whether initialization was successful or not. </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">kStatus_BUTTON_Error</td><td>An error occurred. </td></tr>
<tr><td class="paramname">kStatus_BUTTON_Success</td><td>Button initialization succeed. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga877fdaf67de1960b444d3edc95e0b0c4"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00009.html#gad36848ab174c6efe33d211ee4edfe470">button_status_t</a> BUTTON_InstallCallback </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00009.html#gacef6d632127df591a861222e28033be2">button_handle_t</a>&#160;</td>
<td class="paramname"><em>buttonHandle</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="a00009.html#ga2152e851fbba610c96061d35a0fc2149">button_callback_t</a>&#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">
<p>This function is used to install the callback and callback parameter for button module. Once the button is pressed, the button driver will identify the behavior and notify the upper layer with the button event by the installed callback function. Currently, the Button supports the three types of event, click, double click and long press. Detail information refer to <a class="el" href="a00009.html#gaaba5738b1b548850485fe34ffe239c93" title="The event type of button. ">button_event_t</a>.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">buttonHandle</td><td>Button handle pointer. </td></tr>
<tr><td class="paramname">callback</td><td>The callback function. </td></tr>
<tr><td class="paramname">callbackParam</td><td>The parameter of the callback function. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Indicates whether callback install was successful or not. </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">kStatus_BUTTON_Success</td><td>Successfully install the callback. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga6ea4552de91b238d080c840e16f95504"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00009.html#gad36848ab174c6efe33d211ee4edfe470">button_status_t</a> BUTTON_Deinit </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00009.html#gacef6d632127df591a861222e28033be2">button_handle_t</a>&#160;</td>
<td class="paramname"><em>buttonHandle</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function deinitializes the button instance.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">buttonHandle</td><td>button handle pointer. </td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">kStatus_BUTTON_Success</td><td>button de-initialization succeed. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga315197b8b446fe61aa98c78debd8d403"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00009.html#gad36848ab174c6efe33d211ee4edfe470">button_status_t</a> BUTTON_GetInput </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00009.html#gacef6d632127df591a861222e28033be2">button_handle_t</a>&#160;</td>
<td class="paramname"><em>buttonHandle</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t *&#160;</td>
<td class="paramname"><em>pinState</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function is used for get the button pin input.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">buttonHandle</td><td>button handle pointer. </td></tr>
<tr><td class="paramname">pinState</td><td>a pointer to save the pin state. </td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">kStatus_BUTTON_Error</td><td>An error occurred. </td></tr>
<tr><td class="paramname">kStatus_BUTTON_Success</td><td>Set successfully. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga33f30b24edd2ed005ec17ea8af58636b"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00009.html#gad36848ab174c6efe33d211ee4edfe470">button_status_t</a> BUTTON_WakeUpSetting </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00009.html#gacef6d632127df591a861222e28033be2">button_handle_t</a>&#160;</td>
<td class="paramname"><em>buttonHandle</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>enable</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function enables or disables the button wake-up feature.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">buttonHandle</td><td>button handle pointer. </td></tr>
<tr><td class="paramname">enable</td><td>enable or disable (0 - disable, 1 - enable). </td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">kStatus_BUTTON_Error</td><td>An error occurred. </td></tr>
<tr><td class="paramname">kStatus_BUTTON_Success</td><td>Set successfully. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gac3c18e01c72182d8f399f94a2252dbae"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00009.html#gad36848ab174c6efe33d211ee4edfe470">button_status_t</a> BUTTON_EnterLowpower </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00009.html#gacef6d632127df591a861222e28033be2">button_handle_t</a>&#160;</td>
<td class="paramname"><em>buttonHandle</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function is used to prepare to enter low power consumption.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">buttonHandle</td><td>button handle pointer. </td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">kStatus_BUTTON_Success</td><td>Successful operation. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gaa60fa09dbadfeb4816f979d6c9147b19"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00009.html#gad36848ab174c6efe33d211ee4edfe470">button_status_t</a> BUTTON_ExitLowpower </td>
<td>(</td>
<td class="paramtype"><a class="el" href="a00009.html#gacef6d632127df591a861222e28033be2">button_handle_t</a>&#160;</td>
<td class="paramname"><em>buttonHandle</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function is used to restore from low power consumption.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">buttonHandle</td><td>button handle pointer. </td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">kStatus_BUTTON_Success</td><td>Successful operation. </td></tr>
</table>
</dd>
</dl>
</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>