]> Git Repo - pico-vscode.git/blob - web/docs/group__hardware__timer.html
Merge branch 'main' into main
[pico-vscode.git] / web / docs / group__hardware__timer.html
1 <!-- HTML header for doxygen 1.8.20-->
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml">
4 <head>
5         <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
6         <meta http-equiv="X-UA-Compatible" content="IE=9"/>
7         <meta name="generator" content="Doxygen 1.9.4"/>
8         <meta name="viewport" content="width=device-width, initial-scale=1"/>
9         <title>Raspberry Pi Pico SDK: hardware_timer</title>
10         <!-- <link href="tabs.css" rel="stylesheet" type="text/css"/> -->
11         <script type="text/javascript" src="jquery.js"></script>
12         <script type="text/javascript" src="dynsections.js"></script>
13         <link href="navtree.css" rel="stylesheet" type="text/css"/>
14 <script type="text/javascript" src="resize.js"></script>
15 <script type="text/javascript" src="navtreedata.js"></script>
16 <script type="text/javascript" src="navtree.js"></script>
17         <link href="search/search.css" rel="stylesheet" type="text/css"/>
18 <script type="text/javascript" src="search/searchdata.js"></script>
19 <script type="text/javascript" src="search/search.js"></script>
20     <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500&display=swap" rel="stylesheet">
21         <link href="doxygen.css" rel="stylesheet" type="text/css" />
22         <link href="normalise.css" rel="stylesheet" type="text/css"/>
23 <link href="main.css" rel="stylesheet" type="text/css"/>
24 <link href="styles.css" rel="stylesheet" type="text/css"/>
25 </head>
26 <body>
27         <div class="navigation-mobile">
28                 <div class="logo--mobile">
29                         <a href="/"><img src="logo-mobile.svg" alt="Raspberry Pi"></a>
30                 </div>
31                 <div class="navigation-toggle">
32                         <span class="line-1"></span>
33                         <span class="line-2">
34                                 <p>Menu Toggle</p>
35                         </span>
36                         <span class="line-3"></span>
37                 </div>
38         </div>
39         <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
40                 <div class="logo">
41                         <a href="index.html"> <img src="logo.svg" alt="Raspberry Pi"></a>
42                         <span style="display: inline-block; margin-top: 10px;">
43                                 v2.0.0
44                         </span>
45                 </div>
46                 <div class="navigation-footer">
47                         <img src="logo-mobile.svg" alt="Raspberry Pi">
48                         <a href="https://www.raspberrypi.com/" target="_blank">By Raspberry Pi Ltd</a>
49                 </div>
50 <!--            <div class="search">
51                         <form>
52                                 <input type="search" name="search" id="search" placeholder="Search">
53                                 <input type="submit" value="Search">
54                         </form>
55                 </div> -->
56 <!-- Generated by Doxygen 1.9.4 -->
57 <script type="text/javascript">
58 /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
59 var searchBox = new SearchBox("searchBox", "search",'Search','.html');
60 /* @license-end */
61 </script>
62 <script type="text/javascript" src="menudata.js"></script>
63 <script type="text/javascript" src="menu.js"></script>
64 <script type="text/javascript">
65 /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
66 $(function() {
67   initMenu('',true,false,'search.php','Search');
68   $(document).ready(function() { init_search(); });
69 });
70 /* @license-end */
71 </script>
72 <div id="main-nav"></div>
73 </div><!-- top -->
74 <div id="side-nav" class="ui-resizable side-nav-resizable">
75   <div id="nav-tree">
76     <div id="nav-tree-contents">
77       <div id="nav-sync" class="sync"></div>
78     </div>
79   </div>
80   <div id="splitbar" style="-moz-user-select:none;" 
81        class="ui-resizable-handle">
82   </div>
83 </div>
84 <script type="text/javascript">
85 /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
86 $(document).ready(function(){initNavTree('group__hardware__timer.html',''); initResizable(); });
87 /* @license-end */
88 </script>
89 <div id="doc-content">
90 <!-- window showing the filter options -->
91 <div id="MSearchSelectWindow"
92      onmouseover="return searchBox.OnSearchSelectShow()"
93      onmouseout="return searchBox.OnSearchSelectHide()"
94      onkeydown="return searchBox.OnSearchSelectKey(event)">
95 </div>
96
97 <!-- iframe showing the search results (closed by default) -->
98 <div id="MSearchResultsWindow">
99 <iframe src="javascript:void(0)" frameborder="0" 
100         name="MSearchResults" id="MSearchResults">
101 </iframe>
102 </div>
103
104 <div class="header">
105   <div class="summary">
106 <a href="#define-members">Macros</a> &#124;
107 <a href="#typedef-members">Typedefs</a> &#124;
108 <a href="#func-members">Functions</a>  </div>
109   <div class="headertitle"><div class="title">hardware_timer<div class="ingroups"><a class="el" href="group__hardware.html">Hardware APIs</a></div></div></div>
110 </div><!--header-->
111 <div class="contents">
112
113 <p>Low-level hardware timer API.  
114 <a href="#details">More...</a></p>
115 <table class="memberdecls">
116 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
117 Macros</h2></td></tr>
118 <tr class="memitem:ga7087b84f4fb4ecce424000c90fce84e4"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__timer.html#ga7087b84f4fb4ecce424000c90fce84e4">TIMER_ALARM_IRQ_NUM</a>(timer,  alarm_num)</td></tr>
119 <tr class="memdesc:ga7087b84f4fb4ecce424000c90fce84e4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <a class="el" href="group__hardware__irq.html#gaf30862f51b5994ffd5863176a185d137">irq_num_t</a> for the alarm interrupt from the given alarm on the given timer instance.  <a href="group__hardware__timer.html#ga7087b84f4fb4ecce424000c90fce84e4">More...</a><br /></td></tr>
120 <tr class="separator:ga7087b84f4fb4ecce424000c90fce84e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
121 <tr class="memitem:gad96d6d69599253d1880356a4d71ecf19"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__timer.html#gad96d6d69599253d1880356a4d71ecf19">TIMER_ALARM_NUM_FROM_IRQ</a>(irq_num)</td></tr>
122 <tr class="memdesc:gad96d6d69599253d1880356a4d71ecf19"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the alarm number from an \irq_num_t. See TIMER_INSTANCE_NUM_FROM_IRQ to get the timer instance number.  <a href="group__hardware__timer.html#gad96d6d69599253d1880356a4d71ecf19">More...</a><br /></td></tr>
123 <tr class="separator:gad96d6d69599253d1880356a4d71ecf19"><td class="memSeparator" colspan="2">&#160;</td></tr>
124 <tr class="memitem:gab3d512da219783a171937d52f17c19d4"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__timer.html#gab3d512da219783a171937d52f17c19d4">TIMER_NUM_FROM_IRQ</a>(irq_num)</td></tr>
125 <tr class="memdesc:gab3d512da219783a171937d52f17c19d4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the alarm number from an \irq_num_t. See TIMER_INSTANCE_NUM_FROM_IRQ to get the alarm number.  <a href="group__hardware__timer.html#gab3d512da219783a171937d52f17c19d4">More...</a><br /></td></tr>
126 <tr class="separator:gab3d512da219783a171937d52f17c19d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
127 <tr class="memitem:ga8ab54d1221d9318ac36daa9790660d8b"><td class="memItemLeft" align="right" valign="top"><a id="ga8ab54d1221d9318ac36daa9790660d8b" name="ga8ab54d1221d9318ac36daa9790660d8b"></a>
128 #define&#160;</td><td class="memItemRight" valign="bottom"><b>PICO_DEFAULT_TIMER</b>&#160;&#160;&#160;0</td></tr>
129 <tr class="memdesc:ga8ab54d1221d9318ac36daa9790660d8b"><td class="mdescLeft">&#160;</td><td class="mdescRight">The default timer instance number of the timer instance used for APIs that don't take an explicit timer instance  On RP2040 this must be 0 as there is only one timer instance   On RP2040 this may be set to 0 or 1 . <br /></td></tr>
130 <tr class="separator:ga8ab54d1221d9318ac36daa9790660d8b"><td class="memSeparator" colspan="2">&#160;</td></tr>
131 <tr class="memitem:ga929d2a5b281a0f0321a4273f63ca9ce3"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__timer.html#ga929d2a5b281a0f0321a4273f63ca9ce3">PICO_DEFAULT_TIMER_INSTANCE</a>()</td></tr>
132 <tr class="memdesc:ga929d2a5b281a0f0321a4273f63ca9ce3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the default timer instance on the platform based on the setting of PICO_DEFAULT_TIMER.  <a href="group__hardware__timer.html#ga929d2a5b281a0f0321a4273f63ca9ce3">More...</a><br /></td></tr>
133 <tr class="separator:ga929d2a5b281a0f0321a4273f63ca9ce3"><td class="memSeparator" colspan="2">&#160;</td></tr>
134 </table><table class="memberdecls">
135 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="typedef-members" name="typedef-members"></a>
136 Typedefs</h2></td></tr>
137 <tr class="memitem:gaf2ca140ecc0d1e8087b584ed3707b80a"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__timer.html#gaf2ca140ecc0d1e8087b584ed3707b80a">hardware_alarm_callback_t</a>) (uint alarm_num)</td></tr>
138 <tr class="separator:gaf2ca140ecc0d1e8087b584ed3707b80a"><td class="memSeparator" colspan="2">&#160;</td></tr>
139 </table><table class="memberdecls">
140 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
141 Functions</h2></td></tr>
142 <tr class="memitem:ga2b3cd8f1226824b3a85fb2bca66e70fd"><td class="memItemLeft" align="right" valign="top">static uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__timer.html#ga2b3cd8f1226824b3a85fb2bca66e70fd">timer_time_us_32</a> (<a class="el" href="structtimer__hw__t.html">timer_hw_t</a> *timer)</td></tr>
143 <tr class="memdesc:ga2b3cd8f1226824b3a85fb2bca66e70fd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a 32 bit timestamp value in microseconds for a given timer instance.  <a href="group__hardware__timer.html#ga2b3cd8f1226824b3a85fb2bca66e70fd">More...</a><br /></td></tr>
144 <tr class="separator:ga2b3cd8f1226824b3a85fb2bca66e70fd"><td class="memSeparator" colspan="2">&#160;</td></tr>
145 <tr class="memitem:gabfffa28d8715f71834934f357e7dc091"><td class="memItemLeft" align="right" valign="top">static uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__timer.html#gabfffa28d8715f71834934f357e7dc091">time_us_32</a> (void)</td></tr>
146 <tr class="memdesc:gabfffa28d8715f71834934f357e7dc091"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a 32 bit timestamp value in microseconds for the default timer instance.  <a href="group__hardware__timer.html#gabfffa28d8715f71834934f357e7dc091">More...</a><br /></td></tr>
147 <tr class="separator:gabfffa28d8715f71834934f357e7dc091"><td class="memSeparator" colspan="2">&#160;</td></tr>
148 <tr class="memitem:ga937b4fb64eb4c7cc59464b38365d72d9"><td class="memItemLeft" align="right" valign="top">uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__timer.html#ga937b4fb64eb4c7cc59464b38365d72d9">timer_time_us_64</a> (<a class="el" href="structtimer__hw__t.html">timer_hw_t</a> *timer)</td></tr>
149 <tr class="memdesc:ga937b4fb64eb4c7cc59464b38365d72d9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the current 64 bit timestamp value in microseconds for a given timer instance.  <a href="group__hardware__timer.html#ga937b4fb64eb4c7cc59464b38365d72d9">More...</a><br /></td></tr>
150 <tr class="separator:ga937b4fb64eb4c7cc59464b38365d72d9"><td class="memSeparator" colspan="2">&#160;</td></tr>
151 <tr class="memitem:ga7bbcd996dbd3dd4adc03a80272fb2fc3"><td class="memItemLeft" align="right" valign="top">uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__timer.html#ga7bbcd996dbd3dd4adc03a80272fb2fc3">time_us_64</a> (void)</td></tr>
152 <tr class="memdesc:ga7bbcd996dbd3dd4adc03a80272fb2fc3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the current 64 bit timestamp value in microseconds for the default timer instance.  <a href="group__hardware__timer.html#ga7bbcd996dbd3dd4adc03a80272fb2fc3">More...</a><br /></td></tr>
153 <tr class="separator:ga7bbcd996dbd3dd4adc03a80272fb2fc3"><td class="memSeparator" colspan="2">&#160;</td></tr>
154 <tr class="memitem:ga9eaeafc2c64a5f1d5e0ddef2c7d4bbec"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__timer.html#ga9eaeafc2c64a5f1d5e0ddef2c7d4bbec">timer_busy_wait_us_32</a> (<a class="el" href="structtimer__hw__t.html">timer_hw_t</a> *timer, uint32_t delay_us)</td></tr>
155 <tr class="memdesc:ga9eaeafc2c64a5f1d5e0ddef2c7d4bbec"><td class="mdescLeft">&#160;</td><td class="mdescRight">Busy wait wasting cycles for the given (32 bit) number of microseconds using the given timer instance.  <a href="group__hardware__timer.html#ga9eaeafc2c64a5f1d5e0ddef2c7d4bbec">More...</a><br /></td></tr>
156 <tr class="separator:ga9eaeafc2c64a5f1d5e0ddef2c7d4bbec"><td class="memSeparator" colspan="2">&#160;</td></tr>
157 <tr class="memitem:ga89b0f1dcbbdf81c92ade2930e8e38ab6"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__timer.html#ga89b0f1dcbbdf81c92ade2930e8e38ab6">busy_wait_us_32</a> (uint32_t delay_us)</td></tr>
158 <tr class="memdesc:ga89b0f1dcbbdf81c92ade2930e8e38ab6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Busy wait wasting cycles for the given (32 bit) number of microseconds using the default timer instance.  <a href="group__hardware__timer.html#ga89b0f1dcbbdf81c92ade2930e8e38ab6">More...</a><br /></td></tr>
159 <tr class="separator:ga89b0f1dcbbdf81c92ade2930e8e38ab6"><td class="memSeparator" colspan="2">&#160;</td></tr>
160 <tr class="memitem:gaa129f3464b270d9e820605a7237c422a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__timer.html#gaa129f3464b270d9e820605a7237c422a">timer_busy_wait_us</a> (<a class="el" href="structtimer__hw__t.html">timer_hw_t</a> *timer, uint64_t delay_us)</td></tr>
161 <tr class="memdesc:gaa129f3464b270d9e820605a7237c422a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Busy wait wasting cycles for the given (64 bit) number of microseconds using the given timer instance.  <a href="group__hardware__timer.html#gaa129f3464b270d9e820605a7237c422a">More...</a><br /></td></tr>
162 <tr class="separator:gaa129f3464b270d9e820605a7237c422a"><td class="memSeparator" colspan="2">&#160;</td></tr>
163 <tr class="memitem:gac089d1c42bb7658bb43c798454f66e2f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__timer.html#gac089d1c42bb7658bb43c798454f66e2f">busy_wait_us</a> (uint64_t delay_us)</td></tr>
164 <tr class="memdesc:gac089d1c42bb7658bb43c798454f66e2f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Busy wait wasting cycles for the given (64 bit) number of microseconds using the default timer instance.  <a href="group__hardware__timer.html#gac089d1c42bb7658bb43c798454f66e2f">More...</a><br /></td></tr>
165 <tr class="separator:gac089d1c42bb7658bb43c798454f66e2f"><td class="memSeparator" colspan="2">&#160;</td></tr>
166 <tr class="memitem:gac61c07fc2cc25c340be6e8f6e61fd30a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__timer.html#gac61c07fc2cc25c340be6e8f6e61fd30a">timer_busy_wait_ms</a> (<a class="el" href="structtimer__hw__t.html">timer_hw_t</a> *timer, uint32_t delay_ms)</td></tr>
167 <tr class="memdesc:gac61c07fc2cc25c340be6e8f6e61fd30a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Busy wait wasting cycles for the given number of milliseconds using the given timer instance.  <a href="group__hardware__timer.html#gac61c07fc2cc25c340be6e8f6e61fd30a">More...</a><br /></td></tr>
168 <tr class="separator:gac61c07fc2cc25c340be6e8f6e61fd30a"><td class="memSeparator" colspan="2">&#160;</td></tr>
169 <tr class="memitem:ga17519ddf048fbdf533decf9e77c956d4"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__timer.html#ga17519ddf048fbdf533decf9e77c956d4">busy_wait_ms</a> (uint32_t delay_ms)</td></tr>
170 <tr class="memdesc:ga17519ddf048fbdf533decf9e77c956d4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Busy wait wasting cycles for the given number of milliseconds using the default timer instance.  <a href="group__hardware__timer.html#ga17519ddf048fbdf533decf9e77c956d4">More...</a><br /></td></tr>
171 <tr class="separator:ga17519ddf048fbdf533decf9e77c956d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
172 <tr class="memitem:ga93c8c8020551f0656c3f59335aa823d6"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__timer.html#ga93c8c8020551f0656c3f59335aa823d6">timer_busy_wait_until</a> (<a class="el" href="structtimer__hw__t.html">timer_hw_t</a> *timer, <a class="el" href="group__timestamp.html#ga8b7f3d602cc053f05bacceeacc257ed8">absolute_time_t</a> t)</td></tr>
173 <tr class="memdesc:ga93c8c8020551f0656c3f59335aa823d6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Busy wait wasting cycles until after the specified timestamp using the given timer instance.  <a href="group__hardware__timer.html#ga93c8c8020551f0656c3f59335aa823d6">More...</a><br /></td></tr>
174 <tr class="separator:ga93c8c8020551f0656c3f59335aa823d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
175 <tr class="memitem:gab1c72f391015ff00a96b24477aa327ee"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__timer.html#gab1c72f391015ff00a96b24477aa327ee">busy_wait_until</a> (<a class="el" href="group__timestamp.html#ga8b7f3d602cc053f05bacceeacc257ed8">absolute_time_t</a> t)</td></tr>
176 <tr class="memdesc:gab1c72f391015ff00a96b24477aa327ee"><td class="mdescLeft">&#160;</td><td class="mdescRight">Busy wait wasting cycles until after the specified timestamp using the default timer instance.  <a href="group__hardware__timer.html#gab1c72f391015ff00a96b24477aa327ee">More...</a><br /></td></tr>
177 <tr class="separator:gab1c72f391015ff00a96b24477aa327ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
178 <tr class="memitem:ga2a8c570e4536f0ceab896475ac5cc5e7"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__timer.html#ga2a8c570e4536f0ceab896475ac5cc5e7">timer_time_reached</a> (<a class="el" href="structtimer__hw__t.html">timer_hw_t</a> *timer, <a class="el" href="group__timestamp.html#ga8b7f3d602cc053f05bacceeacc257ed8">absolute_time_t</a> t)</td></tr>
179 <tr class="memdesc:ga2a8c570e4536f0ceab896475ac5cc5e7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check if the specified timestamp has been reached on the given timer instance.  <a href="group__hardware__timer.html#ga2a8c570e4536f0ceab896475ac5cc5e7">More...</a><br /></td></tr>
180 <tr class="separator:ga2a8c570e4536f0ceab896475ac5cc5e7"><td class="memSeparator" colspan="2">&#160;</td></tr>
181 <tr class="memitem:ga1e41eca96d5c1b3b5e69e3b1a00cdf7d"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__timer.html#ga1e41eca96d5c1b3b5e69e3b1a00cdf7d">time_reached</a> (<a class="el" href="group__timestamp.html#ga8b7f3d602cc053f05bacceeacc257ed8">absolute_time_t</a> t)</td></tr>
182 <tr class="memdesc:ga1e41eca96d5c1b3b5e69e3b1a00cdf7d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check if the specified timestamp has been reached on the default timer instance.  <a href="group__hardware__timer.html#ga1e41eca96d5c1b3b5e69e3b1a00cdf7d">More...</a><br /></td></tr>
183 <tr class="separator:ga1e41eca96d5c1b3b5e69e3b1a00cdf7d"><td class="memSeparator" colspan="2">&#160;</td></tr>
184 <tr class="memitem:gaa4e5b9946e1ce19788b46b8bf9987a4b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__timer.html#gaa4e5b9946e1ce19788b46b8bf9987a4b">timer_hardware_alarm_claim</a> (<a class="el" href="structtimer__hw__t.html">timer_hw_t</a> *timer, uint alarm_num)</td></tr>
185 <tr class="memdesc:gaa4e5b9946e1ce19788b46b8bf9987a4b"><td class="mdescLeft">&#160;</td><td class="mdescRight">cooperatively claim the use of this hardware alarm_num on the given timer instance  <a href="group__hardware__timer.html#gaa4e5b9946e1ce19788b46b8bf9987a4b">More...</a><br /></td></tr>
186 <tr class="separator:gaa4e5b9946e1ce19788b46b8bf9987a4b"><td class="memSeparator" colspan="2">&#160;</td></tr>
187 <tr class="memitem:ga51e6919f4f860e59e9d6f5403805cb8f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__timer.html#ga51e6919f4f860e59e9d6f5403805cb8f">hardware_alarm_claim</a> (uint alarm_num)</td></tr>
188 <tr class="memdesc:ga51e6919f4f860e59e9d6f5403805cb8f"><td class="mdescLeft">&#160;</td><td class="mdescRight">cooperatively claim the use of this hardware alarm_num on the default timer instance  <a href="group__hardware__timer.html#ga51e6919f4f860e59e9d6f5403805cb8f">More...</a><br /></td></tr>
189 <tr class="separator:ga51e6919f4f860e59e9d6f5403805cb8f"><td class="memSeparator" colspan="2">&#160;</td></tr>
190 <tr class="memitem:ga8942fc87edfb495a2dd75a4703700642"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__timer.html#ga8942fc87edfb495a2dd75a4703700642">timer_hardware_alarm_claim_unused</a> (<a class="el" href="structtimer__hw__t.html">timer_hw_t</a> *timer, bool required)</td></tr>
191 <tr class="memdesc:ga8942fc87edfb495a2dd75a4703700642"><td class="mdescLeft">&#160;</td><td class="mdescRight">cooperatively claim the use of a hardware alarm_num on the given timer instance  <a href="group__hardware__timer.html#ga8942fc87edfb495a2dd75a4703700642">More...</a><br /></td></tr>
192 <tr class="separator:ga8942fc87edfb495a2dd75a4703700642"><td class="memSeparator" colspan="2">&#160;</td></tr>
193 <tr class="memitem:ga4500581b13256638c00054d85870c1f2"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__timer.html#ga4500581b13256638c00054d85870c1f2">hardware_alarm_claim_unused</a> (bool required)</td></tr>
194 <tr class="memdesc:ga4500581b13256638c00054d85870c1f2"><td class="mdescLeft">&#160;</td><td class="mdescRight">cooperatively claim the use of a hardware alarm_num on the default timer instance  <a href="group__hardware__timer.html#ga4500581b13256638c00054d85870c1f2">More...</a><br /></td></tr>
195 <tr class="separator:ga4500581b13256638c00054d85870c1f2"><td class="memSeparator" colspan="2">&#160;</td></tr>
196 <tr class="memitem:gac8ff547eecf2fd3eb1124cd3a5afe85a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__timer.html#gac8ff547eecf2fd3eb1124cd3a5afe85a">timer_hardware_alarm_unclaim</a> (<a class="el" href="structtimer__hw__t.html">timer_hw_t</a> *timer, uint alarm_num)</td></tr>
197 <tr class="memdesc:gac8ff547eecf2fd3eb1124cd3a5afe85a"><td class="mdescLeft">&#160;</td><td class="mdescRight">cooperatively release the claim on use of this hardware alarm_num on the given timer instance  <a href="group__hardware__timer.html#gac8ff547eecf2fd3eb1124cd3a5afe85a">More...</a><br /></td></tr>
198 <tr class="separator:gac8ff547eecf2fd3eb1124cd3a5afe85a"><td class="memSeparator" colspan="2">&#160;</td></tr>
199 <tr class="memitem:ga0d9ea3c5f1d4ea94812b338afbcef7e5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__timer.html#ga0d9ea3c5f1d4ea94812b338afbcef7e5">hardware_alarm_unclaim</a> (uint alarm_num)</td></tr>
200 <tr class="memdesc:ga0d9ea3c5f1d4ea94812b338afbcef7e5"><td class="mdescLeft">&#160;</td><td class="mdescRight">cooperatively release the claim on use of this hardware alarm_num on the default timer instance  <a href="group__hardware__timer.html#ga0d9ea3c5f1d4ea94812b338afbcef7e5">More...</a><br /></td></tr>
201 <tr class="separator:ga0d9ea3c5f1d4ea94812b338afbcef7e5"><td class="memSeparator" colspan="2">&#160;</td></tr>
202 <tr class="memitem:ga46d3b463f5ea48b21e285fe06e2960fe"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__timer.html#ga46d3b463f5ea48b21e285fe06e2960fe">timer_hardware_alarm_is_claimed</a> (<a class="el" href="structtimer__hw__t.html">timer_hw_t</a> *timer, uint alarm_num)</td></tr>
203 <tr class="memdesc:ga46d3b463f5ea48b21e285fe06e2960fe"><td class="mdescLeft">&#160;</td><td class="mdescRight">Determine if a hardware alarm has been claimed on the given timer instance.  <a href="group__hardware__timer.html#ga46d3b463f5ea48b21e285fe06e2960fe">More...</a><br /></td></tr>
204 <tr class="separator:ga46d3b463f5ea48b21e285fe06e2960fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
205 <tr class="memitem:ga6a5ed8cbc0ddea150ba932810ddef2e0"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__timer.html#ga6a5ed8cbc0ddea150ba932810ddef2e0">hardware_alarm_is_claimed</a> (uint alarm_num)</td></tr>
206 <tr class="memdesc:ga6a5ed8cbc0ddea150ba932810ddef2e0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Determine if a hardware alarm has been claimed on the default timer instance.  <a href="group__hardware__timer.html#ga6a5ed8cbc0ddea150ba932810ddef2e0">More...</a><br /></td></tr>
207 <tr class="separator:ga6a5ed8cbc0ddea150ba932810ddef2e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
208 <tr class="memitem:ga1f7d02607a27915fea3b99a65319d3c1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__timer.html#ga1f7d02607a27915fea3b99a65319d3c1">timer_hardware_alarm_set_callback</a> (<a class="el" href="structtimer__hw__t.html">timer_hw_t</a> *timer, uint alarm_num, <a class="el" href="group__hardware__timer.html#gaf2ca140ecc0d1e8087b584ed3707b80a">hardware_alarm_callback_t</a> callback)</td></tr>
209 <tr class="memdesc:ga1f7d02607a27915fea3b99a65319d3c1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enable/Disable a callback for a hardware alarm for a given timer instance on this core.  <a href="group__hardware__timer.html#ga1f7d02607a27915fea3b99a65319d3c1">More...</a><br /></td></tr>
210 <tr class="separator:ga1f7d02607a27915fea3b99a65319d3c1"><td class="memSeparator" colspan="2">&#160;</td></tr>
211 <tr class="memitem:gaa4c3c72008c100ca25f94b806f13f112"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__timer.html#gaa4c3c72008c100ca25f94b806f13f112">hardware_alarm_set_callback</a> (uint alarm_num, <a class="el" href="group__hardware__timer.html#gaf2ca140ecc0d1e8087b584ed3707b80a">hardware_alarm_callback_t</a> callback)</td></tr>
212 <tr class="memdesc:gaa4c3c72008c100ca25f94b806f13f112"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enable/Disable a callback for a hardware alarm on the default timer instance on this core.  <a href="group__hardware__timer.html#gaa4c3c72008c100ca25f94b806f13f112">More...</a><br /></td></tr>
213 <tr class="separator:gaa4c3c72008c100ca25f94b806f13f112"><td class="memSeparator" colspan="2">&#160;</td></tr>
214 <tr class="memitem:ga8590dbfd69db9c3da5b628cd81efc22d"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__timer.html#ga8590dbfd69db9c3da5b628cd81efc22d">timer_hardware_alarm_set_target</a> (<a class="el" href="structtimer__hw__t.html">timer_hw_t</a> *timer, uint alarm_num, <a class="el" href="group__timestamp.html#ga8b7f3d602cc053f05bacceeacc257ed8">absolute_time_t</a> t)</td></tr>
215 <tr class="memdesc:ga8590dbfd69db9c3da5b628cd81efc22d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the current target for a specific hardware alarm on the given timer instance.  <a href="group__hardware__timer.html#ga8590dbfd69db9c3da5b628cd81efc22d">More...</a><br /></td></tr>
216 <tr class="separator:ga8590dbfd69db9c3da5b628cd81efc22d"><td class="memSeparator" colspan="2">&#160;</td></tr>
217 <tr class="memitem:ga62098633d173c24c56c359df2e886ed2"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__timer.html#ga62098633d173c24c56c359df2e886ed2">hardware_alarm_set_target</a> (uint alarm_num, <a class="el" href="group__timestamp.html#ga8b7f3d602cc053f05bacceeacc257ed8">absolute_time_t</a> t)</td></tr>
218 <tr class="memdesc:ga62098633d173c24c56c359df2e886ed2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the current target for the specified hardware alarm on the default timer instance.  <a href="group__hardware__timer.html#ga62098633d173c24c56c359df2e886ed2">More...</a><br /></td></tr>
219 <tr class="separator:ga62098633d173c24c56c359df2e886ed2"><td class="memSeparator" colspan="2">&#160;</td></tr>
220 <tr class="memitem:gabdb6ba35d83bbf4e3d385821fef7fd05"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__timer.html#gabdb6ba35d83bbf4e3d385821fef7fd05">timer_hardware_alarm_cancel</a> (<a class="el" href="structtimer__hw__t.html">timer_hw_t</a> *timer, uint alarm_num)</td></tr>
221 <tr class="memdesc:gabdb6ba35d83bbf4e3d385821fef7fd05"><td class="mdescLeft">&#160;</td><td class="mdescRight">Cancel an existing target (if any) for a specific hardware_alarm on the given timer instance.  <a href="group__hardware__timer.html#gabdb6ba35d83bbf4e3d385821fef7fd05">More...</a><br /></td></tr>
222 <tr class="separator:gabdb6ba35d83bbf4e3d385821fef7fd05"><td class="memSeparator" colspan="2">&#160;</td></tr>
223 <tr class="memitem:ga5bc42f680998e4c30fb7389fee9aa59f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__timer.html#ga5bc42f680998e4c30fb7389fee9aa59f">hardware_alarm_cancel</a> (uint alarm_num)</td></tr>
224 <tr class="memdesc:ga5bc42f680998e4c30fb7389fee9aa59f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Cancel an existing target (if any) for the specified hardware_alarm on the default timer instance.  <a href="group__hardware__timer.html#ga5bc42f680998e4c30fb7389fee9aa59f">More...</a><br /></td></tr>
225 <tr class="separator:ga5bc42f680998e4c30fb7389fee9aa59f"><td class="memSeparator" colspan="2">&#160;</td></tr>
226 <tr class="memitem:ga638f76034b217ff7f8999ca16b919f63"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__timer.html#ga638f76034b217ff7f8999ca16b919f63">timer_hardware_alarm_force_irq</a> (<a class="el" href="structtimer__hw__t.html">timer_hw_t</a> *timer, uint alarm_num)</td></tr>
227 <tr class="memdesc:ga638f76034b217ff7f8999ca16b919f63"><td class="mdescLeft">&#160;</td><td class="mdescRight">Force and IRQ for a specific hardware alarm on the given timer instance.  <a href="group__hardware__timer.html#ga638f76034b217ff7f8999ca16b919f63">More...</a><br /></td></tr>
228 <tr class="separator:ga638f76034b217ff7f8999ca16b919f63"><td class="memSeparator" colspan="2">&#160;</td></tr>
229 <tr class="memitem:ga5182b9f67e7f878548460f6f57e22ec0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__timer.html#ga5182b9f67e7f878548460f6f57e22ec0">hardware_alarm_force_irq</a> (uint alarm_num)</td></tr>
230 <tr class="memdesc:ga5182b9f67e7f878548460f6f57e22ec0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Force and IRQ for a specific hardware alarm on the default timer instance.  <a href="group__hardware__timer.html#ga5182b9f67e7f878548460f6f57e22ec0">More...</a><br /></td></tr>
231 <tr class="separator:ga5182b9f67e7f878548460f6f57e22ec0"><td class="memSeparator" colspan="2">&#160;</td></tr>
232 <tr class="memitem:ga3531b9148290b15a491cfb6e6aafa850"><td class="memItemLeft" align="right" valign="top">static uint&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__timer.html#ga3531b9148290b15a491cfb6e6aafa850">timer_hardware_alarm_get_irq_num</a> (__unused <a class="el" href="structtimer__hw__t.html">timer_hw_t</a> *timer, uint alarm_num)</td></tr>
233 <tr class="memdesc:ga3531b9148290b15a491cfb6e6aafa850"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <a class="el" href="group__hardware__irq.html#gaf30862f51b5994ffd5863176a185d137">irq_num_t</a> for the alarm interrupt from the given alarm on the given timer instance.  <a href="group__hardware__timer.html#ga3531b9148290b15a491cfb6e6aafa850">More...</a><br /></td></tr>
234 <tr class="separator:ga3531b9148290b15a491cfb6e6aafa850"><td class="memSeparator" colspan="2">&#160;</td></tr>
235 <tr class="memitem:ga4ab38331811cb4dd911385666b5f51a1"><td class="memItemLeft" align="right" valign="top">static uint&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__timer.html#ga4ab38331811cb4dd911385666b5f51a1">hardware_alarm_get_irq_num</a> (<a class="el" href="structtimer__hw__t.html">timer_hw_t</a> *timer, uint alarm_num)</td></tr>
236 <tr class="memdesc:ga4ab38331811cb4dd911385666b5f51a1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <a class="el" href="group__hardware__irq.html#gaf30862f51b5994ffd5863176a185d137">irq_num_t</a> for the alarm interrupt from the given alarm on the default timer instance.  <a href="group__hardware__timer.html#ga4ab38331811cb4dd911385666b5f51a1">More...</a><br /></td></tr>
237 <tr class="separator:ga4ab38331811cb4dd911385666b5f51a1"><td class="memSeparator" colspan="2">&#160;</td></tr>
238 <tr class="memitem:ga6e6a907da0b44a8fb2db2277ad05079c"><td class="memItemLeft" align="right" valign="top">static uint&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__timer.html#ga6e6a907da0b44a8fb2db2277ad05079c">timer_get_index</a> (<a class="el" href="structtimer__hw__t.html">timer_hw_t</a> *timer)</td></tr>
239 <tr class="memdesc:ga6e6a907da0b44a8fb2db2277ad05079c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the timer number for a timer instance.  <a href="group__hardware__timer.html#ga6e6a907da0b44a8fb2db2277ad05079c">More...</a><br /></td></tr>
240 <tr class="separator:ga6e6a907da0b44a8fb2db2277ad05079c"><td class="memSeparator" colspan="2">&#160;</td></tr>
241 <tr class="memitem:ga1a268fc4a0ad01d2879a7a7334cf9984"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="structtimer__hw__t.html">timer_hw_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__timer.html#ga1a268fc4a0ad01d2879a7a7334cf9984">timer_get_instance</a> (uint timer_num)</td></tr>
242 <tr class="memdesc:ga1a268fc4a0ad01d2879a7a7334cf9984"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the timer instance with the given timer number.  <a href="group__hardware__timer.html#ga1a268fc4a0ad01d2879a7a7334cf9984">More...</a><br /></td></tr>
243 <tr class="separator:ga1a268fc4a0ad01d2879a7a7334cf9984"><td class="memSeparator" colspan="2">&#160;</td></tr>
244 </table>
245 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
246 <p >Low-level hardware timer API. </p>
247 <p >This API provides medium level access to the timer HW. See also <a class="el" href="group__pico__time.html">pico_time</a> which provides higher levels functionality using the hardware timer.</p>
248 <p >The timer peripheral on RP-series microcontrollers supports the following features:</p><ul>
249 <li>RP2040 single 64-bit counter, incrementing once per microsecond</li>
250 <li>RP2350 two 64-bit counters, ticks generated from the tick block</li>
251 <li>Latching two-stage read of counter, for race-free read over 32 bit bus</li>
252 <li>Four alarms: match on the lower 32 bits of counter, IRQ on match.</li>
253 </ul>
254 <p >On RP2040, by default the timer uses a one microsecond reference that is generated in the Watchdog (see RP2040 Datasheet Section 4.8.2) which is derived from the clk_ref. </p>
255 <p >On RP2350, by default the timer uses a one microsecond reference that is generated by the tick block (see RP2350 Datasheet Section 8.5) </p>
256 <p >The timer has 4 alarms, and can output a separate interrupt for each alarm. The alarms match on the lower 32 bits of the 64 bit counter which means they can be fired a maximum of 2^32 microseconds into the future. This is equivalent to:</p><ul>
257 <li>2^32 Ã· 10^6: ~4295 seconds</li>
258 <li>4295 Ã· 60: ~72 minutes</li>
259 </ul>
260 <p >The timer is expected to be used for short sleeps, if you want a longer alarm see the <a class="el" href="group__hardware__rtc.html">hardware_rtc</a> functions.</p>
261 <h2><a class="anchor" id="timer_example"></a>
262 Example</h2>
263 <div class="fragment"><div class="line"> </div>
264 <div class="line"><span class="preprocessor">#include &lt;<a class="code" href="stdio_8h.html">stdio.h</a>&gt;</span></div>
265 <div class="line"><span class="preprocessor">#include &quot;<a class="code" href="stdlib_8h.html">pico/stdlib.h</a>&quot;</span></div>
266 <div class="line"> </div>
267 <div class="line"><span class="keyword">volatile</span> <span class="keywordtype">bool</span> timer_fired = <span class="keyword">false</span>;</div>
268 <div class="line"> </div>
269 <div class="line">int64_t alarm_callback(<a class="code hl_typedef" href="group__alarm.html#gaa593548569c182a0d65d2e06a9c3493b">alarm_id_t</a> <span class="keywordtype">id</span>, <span class="keywordtype">void</span> *user_data) {</div>
270 <div class="line">    printf(<span class="stringliteral">&quot;Timer %d fired!\n&quot;</span>, (<span class="keywordtype">int</span>) <span class="keywordtype">id</span>);</div>
271 <div class="line">    timer_fired = <span class="keyword">true</span>;</div>
272 <div class="line">    <span class="comment">// Can return a value here in us to fire in the future</span></div>
273 <div class="line">    <span class="keywordflow">return</span> 0;</div>
274 <div class="line">}</div>
275 <div class="line"> </div>
276 <div class="line"><span class="keywordtype">bool</span> repeating_timer_callback(<span class="keyword">struct</span> <a class="code hl_struct" href="structrepeating__timer.html">repeating_timer</a> *t) {</div>
277 <div class="line">    printf(<span class="stringliteral">&quot;Repeat at %lld\n&quot;</span>, <a class="code hl_function" href="group__hardware__timer.html#ga7bbcd996dbd3dd4adc03a80272fb2fc3">time_us_64</a>());</div>
278 <div class="line">    <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
279 <div class="line">}</div>
280 <div class="line"> </div>
281 <div class="line"><span class="keywordtype">int</span> main() {</div>
282 <div class="line">    <a class="code hl_function" href="group__pico__stdio.html#ga0e604311fb226dae91ff4eb17a19d67a">stdio_init_all</a>();</div>
283 <div class="line">    printf(<span class="stringliteral">&quot;Hello Timer!\n&quot;</span>);</div>
284 <div class="line"> </div>
285 <div class="line">    <span class="comment">// Call alarm_callback in 2 seconds</span></div>
286 <div class="line">    <a class="code hl_function" href="group__alarm.html#ga8bb045ab597f773d7d5fdfea5db94f69">add_alarm_in_ms</a>(2000, alarm_callback, NULL, <span class="keyword">false</span>);</div>
287 <div class="line"> </div>
288 <div class="line">    <span class="comment">// Wait for alarm callback to set timer_fired</span></div>
289 <div class="line">    <span class="keywordflow">while</span> (!timer_fired) {</div>
290 <div class="line">        <a class="code hl_function" href="group__pico__platform.html#gab0d1ba75ceb64131e19f613d7a5313c9">tight_loop_contents</a>();</div>
291 <div class="line">    }</div>
292 <div class="line"> </div>
293 <div class="line">    <span class="comment">// Create a repeating timer that calls repeating_timer_callback.</span></div>
294 <div class="line">    <span class="comment">// If the delay is &gt; 0 then this is the delay between the previous callback ending and the next starting.</span></div>
295 <div class="line">    <span class="comment">// If the delay is negative (see below) then the next call to the callback will be exactly 500ms after the</span></div>
296 <div class="line">    <span class="comment">// start of the call to the last callback</span></div>
297 <div class="line">    <span class="keyword">struct </span><a class="code hl_struct" href="structrepeating__timer.html">repeating_timer</a> timer;</div>
298 <div class="line">    <a class="code hl_function" href="group__repeating__timer.html#ga02133dbe7083fcf3c7392a2cfb8243ba">add_repeating_timer_ms</a>(500, repeating_timer_callback, NULL, &amp;timer);</div>
299 <div class="line">    <a class="code hl_function" href="group__sleep.html#gae617a6842d4f3a192064c4354b88fcff">sleep_ms</a>(3000);</div>
300 <div class="line">    <span class="keywordtype">bool</span> cancelled = <a class="code hl_function" href="group__repeating__timer.html#ga9ad5a07a3f2300cc9d46c1c847fae6f1">cancel_repeating_timer</a>(&amp;timer);</div>
301 <div class="line">    printf(<span class="stringliteral">&quot;cancelled... %d\n&quot;</span>, cancelled);</div>
302 <div class="line">    <a class="code hl_function" href="group__sleep.html#gae617a6842d4f3a192064c4354b88fcff">sleep_ms</a>(2000);</div>
303 <div class="line"> </div>
304 <div class="line">    <span class="comment">// Negative delay so means we will call repeating_timer_callback, and call it again</span></div>
305 <div class="line">    <span class="comment">// 500ms later regardless of how long the callback took to execute</span></div>
306 <div class="line">    <a class="code hl_function" href="group__repeating__timer.html#ga02133dbe7083fcf3c7392a2cfb8243ba">add_repeating_timer_ms</a>(-500, repeating_timer_callback, NULL, &amp;timer);</div>
307 <div class="line">    <a class="code hl_function" href="group__sleep.html#gae617a6842d4f3a192064c4354b88fcff">sleep_ms</a>(3000);</div>
308 <div class="line">    cancelled = <a class="code hl_function" href="group__repeating__timer.html#ga9ad5a07a3f2300cc9d46c1c847fae6f1">cancel_repeating_timer</a>(&amp;timer);</div>
309 <div class="line">    printf(<span class="stringliteral">&quot;cancelled... %d\n&quot;</span>, cancelled);</div>
310 <div class="line">    <a class="code hl_function" href="group__sleep.html#gae617a6842d4f3a192064c4354b88fcff">sleep_ms</a>(2000);</div>
311 <div class="line">    printf(<span class="stringliteral">&quot;Done\n&quot;</span>);</div>
312 <div class="line">    <span class="keywordflow">return</span> 0;</div>
313 <div class="line">}</div>
314 <div class="ttc" id="agroup__alarm_html_ga8bb045ab597f773d7d5fdfea5db94f69"><div class="ttname"><a href="group__alarm.html#ga8bb045ab597f773d7d5fdfea5db94f69">add_alarm_in_ms</a></div><div class="ttdeci">static alarm_id_t add_alarm_in_ms(uint32_t ms, alarm_callback_t callback, void *user_data, bool fire_if_past)</div><div class="ttdoc">Add an alarm callback to be called after a delay specified in milliseconds.</div><div class="ttdef"><b>Definition:</b> time.h:671</div></div>
315 <div class="ttc" id="agroup__alarm_html_gaa593548569c182a0d65d2e06a9c3493b"><div class="ttname"><a href="group__alarm.html#gaa593548569c182a0d65d2e06a9c3493b">alarm_id_t</a></div><div class="ttdeci">int32_t alarm_id_t</div><div class="ttdoc">The identifier for an alarm.</div><div class="ttdef"><b>Definition:</b> time.h:365</div></div>
316 <div class="ttc" id="agroup__hardware__timer_html_ga7bbcd996dbd3dd4adc03a80272fb2fc3"><div class="ttname"><a href="group__hardware__timer.html#ga7bbcd996dbd3dd4adc03a80272fb2fc3">time_us_64</a></div><div class="ttdeci">uint64_t time_us_64(void)</div><div class="ttdoc">Return the current 64 bit timestamp value in microseconds for the default timer instance.</div><div class="ttdef"><b>Definition:</b> timer.c:125</div></div>
317 <div class="ttc" id="agroup__pico__platform_html_gab0d1ba75ceb64131e19f613d7a5313c9"><div class="ttname"><a href="group__pico__platform.html#gab0d1ba75ceb64131e19f613d7a5313c9">tight_loop_contents</a></div><div class="ttdeci">static __force_inline void tight_loop_contents(void)</div><div class="ttdoc">No-op function for the body of tight loops.</div><div class="ttdef"><b>Definition:</b> platform.h:67</div></div>
318 <div class="ttc" id="agroup__pico__stdio_html_ga0e604311fb226dae91ff4eb17a19d67a"><div class="ttname"><a href="group__pico__stdio.html#ga0e604311fb226dae91ff4eb17a19d67a">stdio_init_all</a></div><div class="ttdeci">bool stdio_init_all(void)</div><div class="ttdoc">Initialize all of the present standard stdio types that are linked into the binary.</div><div class="ttdef"><b>Definition:</b> stdio.c:200</div></div>
319 <div class="ttc" id="agroup__repeating__timer_html_ga02133dbe7083fcf3c7392a2cfb8243ba"><div class="ttname"><a href="group__repeating__timer.html#ga02133dbe7083fcf3c7392a2cfb8243ba">add_repeating_timer_ms</a></div><div class="ttdeci">static bool add_repeating_timer_ms(int32_t delay_ms, repeating_timer_callback_t callback, void *user_data, repeating_timer_t *out)</div><div class="ttdoc">Add a repeating timer that is called repeatedly at the specified interval in milliseconds.</div><div class="ttdef"><b>Definition:</b> time.h:824</div></div>
320 <div class="ttc" id="agroup__repeating__timer_html_ga9ad5a07a3f2300cc9d46c1c847fae6f1"><div class="ttname"><a href="group__repeating__timer.html#ga9ad5a07a3f2300cc9d46c1c847fae6f1">cancel_repeating_timer</a></div><div class="ttdeci">bool cancel_repeating_timer(repeating_timer_t *timer)</div><div class="ttdoc">Cancel a repeating timer.</div><div class="ttdef"><b>Definition:</b> time.c:481</div></div>
321 <div class="ttc" id="agroup__sleep_html_gae617a6842d4f3a192064c4354b88fcff"><div class="ttname"><a href="group__sleep.html#gae617a6842d4f3a192064c4354b88fcff">sleep_ms</a></div><div class="ttdeci">void sleep_ms(uint32_t ms)</div><div class="ttdoc">Wait for the given number of milliseconds before returning.</div><div class="ttdef"><b>Definition:</b> time.c:431</div></div>
322 <div class="ttc" id="astdio_8h_html"><div class="ttname"><a href="stdio_8h.html">stdio.h</a></div></div>
323 <div class="ttc" id="astdlib_8h_html"><div class="ttname"><a href="stdlib_8h.html">stdlib.h</a></div></div>
324 <div class="ttc" id="astructrepeating__timer_html"><div class="ttname"><a href="structrepeating__timer.html">repeating_timer</a></div><div class="ttdoc">Information about a repeating timer.</div><div class="ttdef"><b>Definition:</b> time.h:735</div></div>
325 </div><!-- fragment --><dl class="section see"><dt>See also</dt><dd><a class="el" href="group__pico__time.html" title="API for accurate timestamps, sleeping, and time based callbacks.">pico_time</a> </dd></dl>
326 <h2 class="groupheader">Macro Definition Documentation</h2>
327 <a id="ga929d2a5b281a0f0321a4273f63ca9ce3" name="ga929d2a5b281a0f0321a4273f63ca9ce3"></a>
328 <h2 class="memtitle"><span class="permalink"><a href="#ga929d2a5b281a0f0321a4273f63ca9ce3">&#9670;&nbsp;</a></span>PICO_DEFAULT_TIMER_INSTANCE</h2>
329
330 <div class="memitem">
331 <div class="memproto">
332       <table class="memname">
333         <tr>
334           <td class="memname">#define PICO_DEFAULT_TIMER_INSTANCE</td>
335           <td>(</td>
336           <td class="paramname"></td><td>)</td>
337           <td></td>
338         </tr>
339       </table>
340 </div><div class="memdoc">
341
342 <p>Returns the default timer instance on the platform based on the setting of PICO_DEFAULT_TIMER. </p>
343 <p >Note this macro is intended to resolve at compile time, and does no parameter checking </p>
344
345 </div>
346 </div>
347 <a id="ga7087b84f4fb4ecce424000c90fce84e4" name="ga7087b84f4fb4ecce424000c90fce84e4"></a>
348 <h2 class="memtitle"><span class="permalink"><a href="#ga7087b84f4fb4ecce424000c90fce84e4">&#9670;&nbsp;</a></span>TIMER_ALARM_IRQ_NUM</h2>
349
350 <div class="memitem">
351 <div class="memproto">
352       <table class="memname">
353         <tr>
354           <td class="memname">#define TIMER_ALARM_IRQ_NUM</td>
355           <td>(</td>
356           <td class="paramtype">&#160;</td>
357           <td class="paramname">timer, </td>
358         </tr>
359         <tr>
360           <td class="paramkey"></td>
361           <td></td>
362           <td class="paramtype">&#160;</td>
363           <td class="paramname">alarm_num&#160;</td>
364         </tr>
365         <tr>
366           <td></td>
367           <td>)</td>
368           <td></td><td></td>
369         </tr>
370       </table>
371 </div><div class="memdoc">
372
373 <p>Returns the <a class="el" href="group__hardware__irq.html#gaf30862f51b5994ffd5863176a185d137">irq_num_t</a> for the alarm interrupt from the given alarm on the given timer instance. </p>
374 <p >Note this macro is intended to resolve at compile time, and does no parameter checking </p>
375
376 </div>
377 </div>
378 <a id="gad96d6d69599253d1880356a4d71ecf19" name="gad96d6d69599253d1880356a4d71ecf19"></a>
379 <h2 class="memtitle"><span class="permalink"><a href="#gad96d6d69599253d1880356a4d71ecf19">&#9670;&nbsp;</a></span>TIMER_ALARM_NUM_FROM_IRQ</h2>
380
381 <div class="memitem">
382 <div class="memproto">
383       <table class="memname">
384         <tr>
385           <td class="memname">#define TIMER_ALARM_NUM_FROM_IRQ</td>
386           <td>(</td>
387           <td class="paramtype">&#160;</td>
388           <td class="paramname">irq_num</td><td>)</td>
389           <td></td>
390         </tr>
391       </table>
392 </div><div class="memdoc">
393
394 <p>Returns the alarm number from an \irq_num_t. See TIMER_INSTANCE_NUM_FROM_IRQ to get the timer instance number. </p>
395 <p >Note this macro is intended to resolve at compile time, and does no parameter checking </p>
396
397 </div>
398 </div>
399 <a id="gab3d512da219783a171937d52f17c19d4" name="gab3d512da219783a171937d52f17c19d4"></a>
400 <h2 class="memtitle"><span class="permalink"><a href="#gab3d512da219783a171937d52f17c19d4">&#9670;&nbsp;</a></span>TIMER_NUM_FROM_IRQ</h2>
401
402 <div class="memitem">
403 <div class="memproto">
404       <table class="memname">
405         <tr>
406           <td class="memname">#define TIMER_NUM_FROM_IRQ</td>
407           <td>(</td>
408           <td class="paramtype">&#160;</td>
409           <td class="paramname">irq_num</td><td>)</td>
410           <td></td>
411         </tr>
412       </table>
413 </div><div class="memdoc">
414
415 <p>Returns the alarm number from an \irq_num_t. See TIMER_INSTANCE_NUM_FROM_IRQ to get the alarm number. </p>
416 <p >Note this macro is intended to resolve at compile time, and does no parameter checking </p>
417
418 </div>
419 </div>
420 <h2 class="groupheader">Typedef Documentation</h2>
421 <a id="gaf2ca140ecc0d1e8087b584ed3707b80a" name="gaf2ca140ecc0d1e8087b584ed3707b80a"></a>
422 <h2 class="memtitle"><span class="permalink"><a href="#gaf2ca140ecc0d1e8087b584ed3707b80a">&#9670;&nbsp;</a></span>hardware_alarm_callback_t</h2>
423
424 <div class="memitem">
425 <div class="memproto">
426       <table class="memname">
427         <tr>
428           <td class="memname">typedef void(* hardware_alarm_callback_t) (uint alarm_num)</td>
429         </tr>
430       </table>
431 </div><div class="memdoc">
432 <p >Callback function type for hardware alarms</p>
433 <dl class="params"><dt>Parameters</dt><dd>
434   <table class="params">
435     <tr><td class="paramname">alarm_num</td><td>the hardware alarm number </td></tr>
436   </table>
437   </dd>
438 </dl>
439 <dl class="section see"><dt>See also</dt><dd><a class="el" href="group__hardware__timer.html#gaa4c3c72008c100ca25f94b806f13f112" title="Enable/Disable a callback for a hardware alarm on the default timer instance on this core.">hardware_alarm_set_callback()</a> </dd></dl>
440
441 </div>
442 </div>
443 <h2 class="groupheader">Function Documentation</h2>
444 <a id="ga17519ddf048fbdf533decf9e77c956d4" name="ga17519ddf048fbdf533decf9e77c956d4"></a>
445 <h2 class="memtitle"><span class="permalink"><a href="#ga17519ddf048fbdf533decf9e77c956d4">&#9670;&nbsp;</a></span>busy_wait_ms()</h2>
446
447 <div class="memitem">
448 <div class="memproto">
449       <table class="memname">
450         <tr>
451           <td class="memname">void busy_wait_ms </td>
452           <td>(</td>
453           <td class="paramtype">uint32_t&#160;</td>
454           <td class="paramname"><em>delay_ms</em></td><td>)</td>
455           <td></td>
456         </tr>
457       </table>
458 </div><div class="memdoc">
459
460 <p>Busy wait wasting cycles for the given number of milliseconds using the default timer instance. </p>
461 <dl class="params"><dt>Parameters</dt><dd>
462   <table class="params">
463     <tr><td class="paramname">delay_ms</td><td>delay amount in milliseconds </td></tr>
464   </table>
465   </dd>
466 </dl>
467 <dl class="section see"><dt>See also</dt><dd><a class="el" href="group__hardware__timer.html#gac61c07fc2cc25c340be6e8f6e61fd30a" title="Busy wait wasting cycles for the given number of milliseconds using the given timer instance.">timer_busy_wait_ms</a> </dd></dl>
468
469 </div>
470 </div>
471 <a id="gab1c72f391015ff00a96b24477aa327ee" name="gab1c72f391015ff00a96b24477aa327ee"></a>
472 <h2 class="memtitle"><span class="permalink"><a href="#gab1c72f391015ff00a96b24477aa327ee">&#9670;&nbsp;</a></span>busy_wait_until()</h2>
473
474 <div class="memitem">
475 <div class="memproto">
476       <table class="memname">
477         <tr>
478           <td class="memname">void busy_wait_until </td>
479           <td>(</td>
480           <td class="paramtype"><a class="el" href="group__timestamp.html#ga8b7f3d602cc053f05bacceeacc257ed8">absolute_time_t</a>&#160;</td>
481           <td class="paramname"><em>t</em></td><td>)</td>
482           <td></td>
483         </tr>
484       </table>
485 </div><div class="memdoc">
486
487 <p>Busy wait wasting cycles until after the specified timestamp using the default timer instance. </p>
488 <dl class="params"><dt>Parameters</dt><dd>
489   <table class="params">
490     <tr><td class="paramname">t</td><td>Absolute time to wait until </td></tr>
491   </table>
492   </dd>
493 </dl>
494 <dl class="section see"><dt>See also</dt><dd><a class="el" href="group__hardware__timer.html#ga93c8c8020551f0656c3f59335aa823d6" title="Busy wait wasting cycles until after the specified timestamp using the given timer instance.">timer_busy_wait_until</a> </dd></dl>
495
496 </div>
497 </div>
498 <a id="gac089d1c42bb7658bb43c798454f66e2f" name="gac089d1c42bb7658bb43c798454f66e2f"></a>
499 <h2 class="memtitle"><span class="permalink"><a href="#gac089d1c42bb7658bb43c798454f66e2f">&#9670;&nbsp;</a></span>busy_wait_us()</h2>
500
501 <div class="memitem">
502 <div class="memproto">
503       <table class="memname">
504         <tr>
505           <td class="memname">void busy_wait_us </td>
506           <td>(</td>
507           <td class="paramtype">uint64_t&#160;</td>
508           <td class="paramname"><em>delay_us</em></td><td>)</td>
509           <td></td>
510         </tr>
511       </table>
512 </div><div class="memdoc">
513
514 <p>Busy wait wasting cycles for the given (64 bit) number of microseconds using the default timer instance. </p>
515 <dl class="params"><dt>Parameters</dt><dd>
516   <table class="params">
517     <tr><td class="paramname">delay_us</td><td>delay amount in microseconds </td></tr>
518   </table>
519   </dd>
520 </dl>
521 <dl class="section see"><dt>See also</dt><dd><a class="el" href="group__hardware__timer.html#gaa129f3464b270d9e820605a7237c422a" title="Busy wait wasting cycles for the given (64 bit) number of microseconds using the given timer instance...">timer_busy_wait_us</a> </dd></dl>
522
523 </div>
524 </div>
525 <a id="ga89b0f1dcbbdf81c92ade2930e8e38ab6" name="ga89b0f1dcbbdf81c92ade2930e8e38ab6"></a>
526 <h2 class="memtitle"><span class="permalink"><a href="#ga89b0f1dcbbdf81c92ade2930e8e38ab6">&#9670;&nbsp;</a></span>busy_wait_us_32()</h2>
527
528 <div class="memitem">
529 <div class="memproto">
530       <table class="memname">
531         <tr>
532           <td class="memname">void busy_wait_us_32 </td>
533           <td>(</td>
534           <td class="paramtype">uint32_t&#160;</td>
535           <td class="paramname"><em>delay_us</em></td><td>)</td>
536           <td></td>
537         </tr>
538       </table>
539 </div><div class="memdoc">
540
541 <p>Busy wait wasting cycles for the given (32 bit) number of microseconds using the default timer instance. </p>
542 <dl class="params"><dt>Parameters</dt><dd>
543   <table class="params">
544     <tr><td class="paramname">delay_us</td><td>delay amount in microseconds </td></tr>
545   </table>
546   </dd>
547 </dl>
548 <dl class="section see"><dt>See also</dt><dd><a class="el" href="group__hardware__timer.html#ga9eaeafc2c64a5f1d5e0ddef2c7d4bbec" title="Busy wait wasting cycles for the given (32 bit) number of microseconds using the given timer instance...">timer_busy_wait_us_32</a> </dd></dl>
549
550 </div>
551 </div>
552 <a id="ga5bc42f680998e4c30fb7389fee9aa59f" name="ga5bc42f680998e4c30fb7389fee9aa59f"></a>
553 <h2 class="memtitle"><span class="permalink"><a href="#ga5bc42f680998e4c30fb7389fee9aa59f">&#9670;&nbsp;</a></span>hardware_alarm_cancel()</h2>
554
555 <div class="memitem">
556 <div class="memproto">
557       <table class="memname">
558         <tr>
559           <td class="memname">void hardware_alarm_cancel </td>
560           <td>(</td>
561           <td class="paramtype">uint&#160;</td>
562           <td class="paramname"><em>alarm_num</em></td><td>)</td>
563           <td></td>
564         </tr>
565       </table>
566 </div><div class="memdoc">
567
568 <p>Cancel an existing target (if any) for the specified hardware_alarm on the default timer instance. </p>
569 <dl class="params"><dt>Parameters</dt><dd>
570   <table class="params">
571     <tr><td class="paramname">alarm_num</td><td>the hardware alarm number </td></tr>
572   </table>
573   </dd>
574 </dl>
575 <dl class="section see"><dt>See also</dt><dd><a class="el" href="group__hardware__timer.html#gabdb6ba35d83bbf4e3d385821fef7fd05" title="Cancel an existing target (if any) for a specific hardware_alarm on the given timer instance.">timer_hardware_alarm_cancel</a> </dd></dl>
576
577 </div>
578 </div>
579 <a id="ga51e6919f4f860e59e9d6f5403805cb8f" name="ga51e6919f4f860e59e9d6f5403805cb8f"></a>
580 <h2 class="memtitle"><span class="permalink"><a href="#ga51e6919f4f860e59e9d6f5403805cb8f">&#9670;&nbsp;</a></span>hardware_alarm_claim()</h2>
581
582 <div class="memitem">
583 <div class="memproto">
584       <table class="memname">
585         <tr>
586           <td class="memname">void hardware_alarm_claim </td>
587           <td>(</td>
588           <td class="paramtype">uint&#160;</td>
589           <td class="paramname"><em>alarm_num</em></td><td>)</td>
590           <td></td>
591         </tr>
592       </table>
593 </div><div class="memdoc">
594
595 <p>cooperatively claim the use of this hardware alarm_num on the default timer instance </p>
596 <p >This method hard asserts if the hardware alarm is currently claimed.</p>
597 <dl class="params"><dt>Parameters</dt><dd>
598   <table class="params">
599     <tr><td class="paramname">alarm_num</td><td>the hardware alarm to claim </td></tr>
600   </table>
601   </dd>
602 </dl>
603 <dl class="section see"><dt>See also</dt><dd><a class="el" href="group__hardware__timer.html#gaa4e5b9946e1ce19788b46b8bf9987a4b" title="cooperatively claim the use of this hardware alarm_num on the given timer instance">timer_hardware_alarm_claim</a> </dd>
604 <dd>
605 hardware_claiming </dd></dl>
606
607 </div>
608 </div>
609 <a id="ga4500581b13256638c00054d85870c1f2" name="ga4500581b13256638c00054d85870c1f2"></a>
610 <h2 class="memtitle"><span class="permalink"><a href="#ga4500581b13256638c00054d85870c1f2">&#9670;&nbsp;</a></span>hardware_alarm_claim_unused()</h2>
611
612 <div class="memitem">
613 <div class="memproto">
614       <table class="memname">
615         <tr>
616           <td class="memname">int hardware_alarm_claim_unused </td>
617           <td>(</td>
618           <td class="paramtype">bool&#160;</td>
619           <td class="paramname"><em>required</em></td><td>)</td>
620           <td></td>
621         </tr>
622       </table>
623 </div><div class="memdoc">
624
625 <p>cooperatively claim the use of a hardware alarm_num on the default timer instance </p>
626 <p >This method attempts to claim an unused hardware alarm</p>
627 <dl class="params"><dt>Parameters</dt><dd>
628   <table class="params">
629     <tr><td class="paramname">required</td><td>if true the function will panic if none are available </td></tr>
630   </table>
631   </dd>
632 </dl>
633 <dl class="section return"><dt>Returns</dt><dd>alarm_num the hardware alarm claimed or -1 if required was false, and none are available </dd></dl>
634 <dl class="section see"><dt>See also</dt><dd><a class="el" href="group__hardware__timer.html#ga8942fc87edfb495a2dd75a4703700642" title="cooperatively claim the use of a hardware alarm_num on the given timer instance">timer_hardware_alarm_claim_unused</a> </dd>
635 <dd>
636 hardware_claiming </dd></dl>
637
638 </div>
639 </div>
640 <a id="ga5182b9f67e7f878548460f6f57e22ec0" name="ga5182b9f67e7f878548460f6f57e22ec0"></a>
641 <h2 class="memtitle"><span class="permalink"><a href="#ga5182b9f67e7f878548460f6f57e22ec0">&#9670;&nbsp;</a></span>hardware_alarm_force_irq()</h2>
642
643 <div class="memitem">
644 <div class="memproto">
645       <table class="memname">
646         <tr>
647           <td class="memname">void hardware_alarm_force_irq </td>
648           <td>(</td>
649           <td class="paramtype">uint&#160;</td>
650           <td class="paramname"><em>alarm_num</em></td><td>)</td>
651           <td></td>
652         </tr>
653       </table>
654 </div><div class="memdoc">
655
656 <p>Force and IRQ for a specific hardware alarm on the default timer instance. </p>
657 <p >This method will forcibly make sure the current alarm callback (if present) for the hardware alarm is called from an IRQ context after this call. If an actual callback is due at the same time then the callback may only be called once.</p>
658 <p >Calling this method does not otherwise interfere with regular callback operations.</p>
659 <dl class="params"><dt>Parameters</dt><dd>
660   <table class="params">
661     <tr><td class="paramname">alarm_num</td><td>the hardware alarm number </td></tr>
662   </table>
663   </dd>
664 </dl>
665 <dl class="section see"><dt>See also</dt><dd><a class="el" href="group__hardware__timer.html#ga638f76034b217ff7f8999ca16b919f63" title="Force and IRQ for a specific hardware alarm on the given timer instance.">timer_hardware_alarm_force_irq</a> </dd></dl>
666
667 </div>
668 </div>
669 <a id="ga4ab38331811cb4dd911385666b5f51a1" name="ga4ab38331811cb4dd911385666b5f51a1"></a>
670 <h2 class="memtitle"><span class="permalink"><a href="#ga4ab38331811cb4dd911385666b5f51a1">&#9670;&nbsp;</a></span>hardware_alarm_get_irq_num()</h2>
671
672 <div class="memitem">
673 <div class="memproto">
674 <table class="mlabels">
675   <tr>
676   <td class="mlabels-left">
677       <table class="memname">
678         <tr>
679           <td class="memname">static uint hardware_alarm_get_irq_num </td>
680           <td>(</td>
681           <td class="paramtype"><a class="el" href="structtimer__hw__t.html">timer_hw_t</a> *&#160;</td>
682           <td class="paramname"><em>timer</em>, </td>
683         </tr>
684         <tr>
685           <td class="paramkey"></td>
686           <td></td>
687           <td class="paramtype">uint&#160;</td>
688           <td class="paramname"><em>alarm_num</em>&#160;</td>
689         </tr>
690         <tr>
691           <td></td>
692           <td>)</td>
693           <td></td><td></td>
694         </tr>
695       </table>
696   </td>
697   <td class="mlabels-right">
698 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
699   </tr>
700 </table>
701 </div><div class="memdoc">
702
703 <p>Returns the <a class="el" href="group__hardware__irq.html#gaf30862f51b5994ffd5863176a185d137">irq_num_t</a> for the alarm interrupt from the given alarm on the default timer instance. </p>
704 <dl class="params"><dt>Parameters</dt><dd>
705   <table class="params">
706     <tr><td class="paramname">timer</td><td>the timer instance </td></tr>
707     <tr><td class="paramname">alarm_num</td><td>the alarm number </td></tr>
708   </table>
709   </dd>
710 </dl>
711
712 </div>
713 </div>
714 <a id="ga6a5ed8cbc0ddea150ba932810ddef2e0" name="ga6a5ed8cbc0ddea150ba932810ddef2e0"></a>
715 <h2 class="memtitle"><span class="permalink"><a href="#ga6a5ed8cbc0ddea150ba932810ddef2e0">&#9670;&nbsp;</a></span>hardware_alarm_is_claimed()</h2>
716
717 <div class="memitem">
718 <div class="memproto">
719       <table class="memname">
720         <tr>
721           <td class="memname">bool hardware_alarm_is_claimed </td>
722           <td>(</td>
723           <td class="paramtype">uint&#160;</td>
724           <td class="paramname"><em>alarm_num</em></td><td>)</td>
725           <td></td>
726         </tr>
727       </table>
728 </div><div class="memdoc">
729
730 <p>Determine if a hardware alarm has been claimed on the default timer instance. </p>
731 <dl class="params"><dt>Parameters</dt><dd>
732   <table class="params">
733     <tr><td class="paramname">alarm_num</td><td>the hardware alarm number </td></tr>
734   </table>
735   </dd>
736 </dl>
737 <dl class="section return"><dt>Returns</dt><dd>true if claimed, false otherwise </dd></dl>
738 <dl class="section see"><dt>See also</dt><dd><a class="el" href="group__hardware__timer.html#ga46d3b463f5ea48b21e285fe06e2960fe" title="Determine if a hardware alarm has been claimed on the given timer instance.">timer_hardware_alarm_is_claimed</a> </dd>
739 <dd>
740 <a class="el" href="group__hardware__timer.html#ga51e6919f4f860e59e9d6f5403805cb8f" title="cooperatively claim the use of this hardware alarm_num on the default timer instance">hardware_alarm_claim</a> </dd></dl>
741
742 </div>
743 </div>
744 <a id="gaa4c3c72008c100ca25f94b806f13f112" name="gaa4c3c72008c100ca25f94b806f13f112"></a>
745 <h2 class="memtitle"><span class="permalink"><a href="#gaa4c3c72008c100ca25f94b806f13f112">&#9670;&nbsp;</a></span>hardware_alarm_set_callback()</h2>
746
747 <div class="memitem">
748 <div class="memproto">
749       <table class="memname">
750         <tr>
751           <td class="memname">void hardware_alarm_set_callback </td>
752           <td>(</td>
753           <td class="paramtype">uint&#160;</td>
754           <td class="paramname"><em>alarm_num</em>, </td>
755         </tr>
756         <tr>
757           <td class="paramkey"></td>
758           <td></td>
759           <td class="paramtype"><a class="el" href="group__hardware__timer.html#gaf2ca140ecc0d1e8087b584ed3707b80a">hardware_alarm_callback_t</a>&#160;</td>
760           <td class="paramname"><em>callback</em>&#160;</td>
761         </tr>
762         <tr>
763           <td></td>
764           <td>)</td>
765           <td></td><td></td>
766         </tr>
767       </table>
768 </div><div class="memdoc">
769
770 <p>Enable/Disable a callback for a hardware alarm on the default timer instance on this core. </p>
771 <p >This method enables/disables the alarm IRQ for the specified hardware alarm on the calling core, and set the specified callback to be associated with that alarm.</p>
772 <p >This callback will be used for the timeout set via hardware_alarm_set_target</p>
773 <dl class="section note"><dt>Note</dt><dd>This will install the handler on the current core if the IRQ handler isn't already set. Therefore the user has the opportunity to call this up from the core of their choice</dd></dl>
774 <dl class="params"><dt>Parameters</dt><dd>
775   <table class="params">
776     <tr><td class="paramname">alarm_num</td><td>the hardware alarm number </td></tr>
777     <tr><td class="paramname">callback</td><td>the callback to install, or NULL to unset</td></tr>
778   </table>
779   </dd>
780 </dl>
781 <dl class="section see"><dt>See also</dt><dd><a class="el" href="group__hardware__timer.html#ga1f7d02607a27915fea3b99a65319d3c1" title="Enable/Disable a callback for a hardware alarm for a given timer instance on this core.">timer_hardware_alarm_set_callback</a> </dd>
782 <dd>
783 <a class="el" href="group__hardware__timer.html#ga62098633d173c24c56c359df2e886ed2" title="Set the current target for the specified hardware alarm on the default timer instance.">hardware_alarm_set_target()</a> </dd></dl>
784
785 </div>
786 </div>
787 <a id="ga62098633d173c24c56c359df2e886ed2" name="ga62098633d173c24c56c359df2e886ed2"></a>
788 <h2 class="memtitle"><span class="permalink"><a href="#ga62098633d173c24c56c359df2e886ed2">&#9670;&nbsp;</a></span>hardware_alarm_set_target()</h2>
789
790 <div class="memitem">
791 <div class="memproto">
792       <table class="memname">
793         <tr>
794           <td class="memname">bool hardware_alarm_set_target </td>
795           <td>(</td>
796           <td class="paramtype">uint&#160;</td>
797           <td class="paramname"><em>alarm_num</em>, </td>
798         </tr>
799         <tr>
800           <td class="paramkey"></td>
801           <td></td>
802           <td class="paramtype"><a class="el" href="group__timestamp.html#ga8b7f3d602cc053f05bacceeacc257ed8">absolute_time_t</a>&#160;</td>
803           <td class="paramname"><em>t</em>&#160;</td>
804         </tr>
805         <tr>
806           <td></td>
807           <td>)</td>
808           <td></td><td></td>
809         </tr>
810       </table>
811 </div><div class="memdoc">
812
813 <p>Set the current target for the specified hardware alarm on the default timer instance. </p>
814 <p >This will replace any existing target</p>
815 <dl class="params"><dt>Parameters</dt><dd>
816   <table class="params">
817     <tr><td class="paramname">alarm_num</td><td>the hardware alarm number </td></tr>
818     <tr><td class="paramname">t</td><td>the target timestamp </td></tr>
819   </table>
820   </dd>
821 </dl>
822 <dl class="section return"><dt>Returns</dt><dd>true if the target was "missed"; i.e. it was in the past, or occurred before a future hardware timeout could be set </dd></dl>
823 <dl class="section see"><dt>See also</dt><dd><a class="el" href="group__hardware__timer.html#ga8590dbfd69db9c3da5b628cd81efc22d" title="Set the current target for a specific hardware alarm on the given timer instance.">timer_hardware_alarm_set_target</a> </dd></dl>
824
825 </div>
826 </div>
827 <a id="ga0d9ea3c5f1d4ea94812b338afbcef7e5" name="ga0d9ea3c5f1d4ea94812b338afbcef7e5"></a>
828 <h2 class="memtitle"><span class="permalink"><a href="#ga0d9ea3c5f1d4ea94812b338afbcef7e5">&#9670;&nbsp;</a></span>hardware_alarm_unclaim()</h2>
829
830 <div class="memitem">
831 <div class="memproto">
832       <table class="memname">
833         <tr>
834           <td class="memname">void hardware_alarm_unclaim </td>
835           <td>(</td>
836           <td class="paramtype">uint&#160;</td>
837           <td class="paramname"><em>alarm_num</em></td><td>)</td>
838           <td></td>
839         </tr>
840       </table>
841 </div><div class="memdoc">
842
843 <p>cooperatively release the claim on use of this hardware alarm_num on the default timer instance </p>
844 <dl class="params"><dt>Parameters</dt><dd>
845   <table class="params">
846     <tr><td class="paramname">alarm_num</td><td>the hardware alarm to unclaim </td></tr>
847   </table>
848   </dd>
849 </dl>
850 <dl class="section see"><dt>See also</dt><dd><a class="el" href="group__hardware__timer.html#gac8ff547eecf2fd3eb1124cd3a5afe85a" title="cooperatively release the claim on use of this hardware alarm_num on the given timer instance">timer_hardware_alarm_unclaim</a> </dd>
851 <dd>
852 hardware_claiming </dd></dl>
853
854 </div>
855 </div>
856 <a id="ga1e41eca96d5c1b3b5e69e3b1a00cdf7d" name="ga1e41eca96d5c1b3b5e69e3b1a00cdf7d"></a>
857 <h2 class="memtitle"><span class="permalink"><a href="#ga1e41eca96d5c1b3b5e69e3b1a00cdf7d">&#9670;&nbsp;</a></span>time_reached()</h2>
858
859 <div class="memitem">
860 <div class="memproto">
861 <table class="mlabels">
862   <tr>
863   <td class="mlabels-left">
864       <table class="memname">
865         <tr>
866           <td class="memname">static bool time_reached </td>
867           <td>(</td>
868           <td class="paramtype"><a class="el" href="group__timestamp.html#ga8b7f3d602cc053f05bacceeacc257ed8">absolute_time_t</a>&#160;</td>
869           <td class="paramname"><em>t</em></td><td>)</td>
870           <td></td>
871         </tr>
872       </table>
873   </td>
874   <td class="mlabels-right">
875 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
876   </tr>
877 </table>
878 </div><div class="memdoc">
879
880 <p>Check if the specified timestamp has been reached on the default timer instance. </p>
881 <dl class="params"><dt>Parameters</dt><dd>
882   <table class="params">
883     <tr><td class="paramname">t</td><td>Absolute time to compare against current time </td></tr>
884   </table>
885   </dd>
886 </dl>
887 <dl class="section return"><dt>Returns</dt><dd>true if it is now after the specified timestamp </dd></dl>
888 <dl class="section see"><dt>See also</dt><dd><a class="el" href="group__hardware__timer.html#ga2a8c570e4536f0ceab896475ac5cc5e7" title="Check if the specified timestamp has been reached on the given timer instance.">timer_time_reached</a> </dd></dl>
889
890 </div>
891 </div>
892 <a id="gabfffa28d8715f71834934f357e7dc091" name="gabfffa28d8715f71834934f357e7dc091"></a>
893 <h2 class="memtitle"><span class="permalink"><a href="#gabfffa28d8715f71834934f357e7dc091">&#9670;&nbsp;</a></span>time_us_32()</h2>
894
895 <div class="memitem">
896 <div class="memproto">
897 <table class="mlabels">
898   <tr>
899   <td class="mlabels-left">
900       <table class="memname">
901         <tr>
902           <td class="memname">static uint32_t time_us_32 </td>
903           <td>(</td>
904           <td class="paramtype">void&#160;</td>
905           <td class="paramname"></td><td>)</td>
906           <td></td>
907         </tr>
908       </table>
909   </td>
910   <td class="mlabels-right">
911 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
912   </tr>
913 </table>
914 </div><div class="memdoc">
915
916 <p>Return a 32 bit timestamp value in microseconds for the default timer instance. </p>
917 <p >Returns the low 32 bits of the hardware timer. </p><dl class="section note"><dt>Note</dt><dd>This value wraps roughly every 1 hour 11 minutes and 35 seconds.</dd></dl>
918 <dl class="section return"><dt>Returns</dt><dd>the 32 bit timestamp </dd></dl>
919 <dl class="section see"><dt>See also</dt><dd><a class="el" href="group__hardware__timer.html#ga2b3cd8f1226824b3a85fb2bca66e70fd" title="Return a 32 bit timestamp value in microseconds for a given timer instance.">timer_time_us_32</a> </dd></dl>
920
921 </div>
922 </div>
923 <a id="ga7bbcd996dbd3dd4adc03a80272fb2fc3" name="ga7bbcd996dbd3dd4adc03a80272fb2fc3"></a>
924 <h2 class="memtitle"><span class="permalink"><a href="#ga7bbcd996dbd3dd4adc03a80272fb2fc3">&#9670;&nbsp;</a></span>time_us_64()</h2>
925
926 <div class="memitem">
927 <div class="memproto">
928       <table class="memname">
929         <tr>
930           <td class="memname">uint64_t time_us_64 </td>
931           <td>(</td>
932           <td class="paramtype">void&#160;</td>
933           <td class="paramname"></td><td>)</td>
934           <td></td>
935         </tr>
936       </table>
937 </div><div class="memdoc">
938
939 <p>Return the current 64 bit timestamp value in microseconds for the default timer instance. </p>
940 <p >Returns the full 64 bits of the hardware timer. The <a class="el" href="group__pico__time.html">pico_time</a> and other functions rely on the fact that this value monotonically increases from power up. As such it is expected that this value counts upwards and never wraps (we apologize for introducing a potential year 5851444 bug).</p>
941 <dl class="section return"><dt>Returns</dt><dd>the 64 bit timestamp </dd></dl>
942 <dl class="section see"><dt>See also</dt><dd><a class="el" href="group__hardware__timer.html#ga937b4fb64eb4c7cc59464b38365d72d9" title="Return the current 64 bit timestamp value in microseconds for a given timer instance.">timer_time_us_64</a> </dd></dl>
943
944 </div>
945 </div>
946 <a id="gac61c07fc2cc25c340be6e8f6e61fd30a" name="gac61c07fc2cc25c340be6e8f6e61fd30a"></a>
947 <h2 class="memtitle"><span class="permalink"><a href="#gac61c07fc2cc25c340be6e8f6e61fd30a">&#9670;&nbsp;</a></span>timer_busy_wait_ms()</h2>
948
949 <div class="memitem">
950 <div class="memproto">
951       <table class="memname">
952         <tr>
953           <td class="memname">void timer_busy_wait_ms </td>
954           <td>(</td>
955           <td class="paramtype"><a class="el" href="structtimer__hw__t.html">timer_hw_t</a> *&#160;</td>
956           <td class="paramname"><em>timer</em>, </td>
957         </tr>
958         <tr>
959           <td class="paramkey"></td>
960           <td></td>
961           <td class="paramtype">uint32_t&#160;</td>
962           <td class="paramname"><em>delay_ms</em>&#160;</td>
963         </tr>
964         <tr>
965           <td></td>
966           <td>)</td>
967           <td></td><td></td>
968         </tr>
969       </table>
970 </div><div class="memdoc">
971
972 <p>Busy wait wasting cycles for the given number of milliseconds using the given timer instance. </p>
973 <dl class="params"><dt>Parameters</dt><dd>
974   <table class="params">
975     <tr><td class="paramname">timer</td><td>the timer instance </td></tr>
976     <tr><td class="paramname">delay_ms</td><td>delay amount in milliseconds </td></tr>
977   </table>
978   </dd>
979 </dl>
980 <dl class="section see"><dt>See also</dt><dd><a class="el" href="group__hardware__timer.html#ga17519ddf048fbdf533decf9e77c956d4" title="Busy wait wasting cycles for the given number of milliseconds using the default timer instance.">busy_wait_ms</a> </dd></dl>
981
982 </div>
983 </div>
984 <a id="ga93c8c8020551f0656c3f59335aa823d6" name="ga93c8c8020551f0656c3f59335aa823d6"></a>
985 <h2 class="memtitle"><span class="permalink"><a href="#ga93c8c8020551f0656c3f59335aa823d6">&#9670;&nbsp;</a></span>timer_busy_wait_until()</h2>
986
987 <div class="memitem">
988 <div class="memproto">
989       <table class="memname">
990         <tr>
991           <td class="memname">void timer_busy_wait_until </td>
992           <td>(</td>
993           <td class="paramtype"><a class="el" href="structtimer__hw__t.html">timer_hw_t</a> *&#160;</td>
994           <td class="paramname"><em>timer</em>, </td>
995         </tr>
996         <tr>
997           <td class="paramkey"></td>
998           <td></td>
999           <td class="paramtype"><a class="el" href="group__timestamp.html#ga8b7f3d602cc053f05bacceeacc257ed8">absolute_time_t</a>&#160;</td>
1000           <td class="paramname"><em>t</em>&#160;</td>
1001         </tr>
1002         <tr>
1003           <td></td>
1004           <td>)</td>
1005           <td></td><td></td>
1006         </tr>
1007       </table>
1008 </div><div class="memdoc">
1009
1010 <p>Busy wait wasting cycles until after the specified timestamp using the given timer instance. </p>
1011 <dl class="params"><dt>Parameters</dt><dd>
1012   <table class="params">
1013     <tr><td class="paramname">timer</td><td>the timer instance </td></tr>
1014     <tr><td class="paramname">t</td><td>Absolute time to wait until </td></tr>
1015   </table>
1016   </dd>
1017 </dl>
1018 <dl class="section see"><dt>See also</dt><dd><a class="el" href="group__hardware__timer.html#gab1c72f391015ff00a96b24477aa327ee" title="Busy wait wasting cycles until after the specified timestamp using the default timer instance.">busy_wait_until</a> </dd></dl>
1019
1020 </div>
1021 </div>
1022 <a id="gaa129f3464b270d9e820605a7237c422a" name="gaa129f3464b270d9e820605a7237c422a"></a>
1023 <h2 class="memtitle"><span class="permalink"><a href="#gaa129f3464b270d9e820605a7237c422a">&#9670;&nbsp;</a></span>timer_busy_wait_us()</h2>
1024
1025 <div class="memitem">
1026 <div class="memproto">
1027       <table class="memname">
1028         <tr>
1029           <td class="memname">void timer_busy_wait_us </td>
1030           <td>(</td>
1031           <td class="paramtype"><a class="el" href="structtimer__hw__t.html">timer_hw_t</a> *&#160;</td>
1032           <td class="paramname"><em>timer</em>, </td>
1033         </tr>
1034         <tr>
1035           <td class="paramkey"></td>
1036           <td></td>
1037           <td class="paramtype">uint64_t&#160;</td>
1038           <td class="paramname"><em>delay_us</em>&#160;</td>
1039         </tr>
1040         <tr>
1041           <td></td>
1042           <td>)</td>
1043           <td></td><td></td>
1044         </tr>
1045       </table>
1046 </div><div class="memdoc">
1047
1048 <p>Busy wait wasting cycles for the given (64 bit) number of microseconds using the given timer instance. </p>
1049 <dl class="params"><dt>Parameters</dt><dd>
1050   <table class="params">
1051     <tr><td class="paramname">timer</td><td>the timer instance </td></tr>
1052     <tr><td class="paramname">delay_us</td><td>delay amount in microseconds </td></tr>
1053   </table>
1054   </dd>
1055 </dl>
1056 <dl class="section see"><dt>See also</dt><dd><a class="el" href="group__hardware__timer.html#gac089d1c42bb7658bb43c798454f66e2f" title="Busy wait wasting cycles for the given (64 bit) number of microseconds using the default timer instan...">busy_wait_us</a> </dd></dl>
1057
1058 </div>
1059 </div>
1060 <a id="ga9eaeafc2c64a5f1d5e0ddef2c7d4bbec" name="ga9eaeafc2c64a5f1d5e0ddef2c7d4bbec"></a>
1061 <h2 class="memtitle"><span class="permalink"><a href="#ga9eaeafc2c64a5f1d5e0ddef2c7d4bbec">&#9670;&nbsp;</a></span>timer_busy_wait_us_32()</h2>
1062
1063 <div class="memitem">
1064 <div class="memproto">
1065       <table class="memname">
1066         <tr>
1067           <td class="memname">void timer_busy_wait_us_32 </td>
1068           <td>(</td>
1069           <td class="paramtype"><a class="el" href="structtimer__hw__t.html">timer_hw_t</a> *&#160;</td>
1070           <td class="paramname"><em>timer</em>, </td>
1071         </tr>
1072         <tr>
1073           <td class="paramkey"></td>
1074           <td></td>
1075           <td class="paramtype">uint32_t&#160;</td>
1076           <td class="paramname"><em>delay_us</em>&#160;</td>
1077         </tr>
1078         <tr>
1079           <td></td>
1080           <td>)</td>
1081           <td></td><td></td>
1082         </tr>
1083       </table>
1084 </div><div class="memdoc">
1085
1086 <p>Busy wait wasting cycles for the given (32 bit) number of microseconds using the given timer instance. </p>
1087 <dl class="params"><dt>Parameters</dt><dd>
1088   <table class="params">
1089     <tr><td class="paramname">timer</td><td>the timer instance </td></tr>
1090     <tr><td class="paramname">delay_us</td><td>delay amount in microseconds </td></tr>
1091   </table>
1092   </dd>
1093 </dl>
1094 <dl class="section see"><dt>See also</dt><dd><a class="el" href="group__hardware__timer.html#ga89b0f1dcbbdf81c92ade2930e8e38ab6" title="Busy wait wasting cycles for the given (32 bit) number of microseconds using the default timer instan...">busy_wait_us_32</a></dd></dl>
1095 <p>Busy wait wasting cycles for the given (32 bit) number of microseconds using the given timer instance. </p>
1096
1097 </div>
1098 </div>
1099 <a id="ga6e6a907da0b44a8fb2db2277ad05079c" name="ga6e6a907da0b44a8fb2db2277ad05079c"></a>
1100 <h2 class="memtitle"><span class="permalink"><a href="#ga6e6a907da0b44a8fb2db2277ad05079c">&#9670;&nbsp;</a></span>timer_get_index()</h2>
1101
1102 <div class="memitem">
1103 <div class="memproto">
1104 <table class="mlabels">
1105   <tr>
1106   <td class="mlabels-left">
1107       <table class="memname">
1108         <tr>
1109           <td class="memname">static uint timer_get_index </td>
1110           <td>(</td>
1111           <td class="paramtype"><a class="el" href="structtimer__hw__t.html">timer_hw_t</a> *&#160;</td>
1112           <td class="paramname"><em>timer</em></td><td>)</td>
1113           <td></td>
1114         </tr>
1115       </table>
1116   </td>
1117   <td class="mlabels-right">
1118 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
1119   </tr>
1120 </table>
1121 </div><div class="memdoc">
1122
1123 <p>Returns the timer number for a timer instance. </p>
1124 <dl class="params"><dt>Parameters</dt><dd>
1125   <table class="params">
1126     <tr><td class="paramname">timer</td><td>the timer instance </td></tr>
1127   </table>
1128   </dd>
1129 </dl>
1130 <dl class="section return"><dt>Returns</dt><dd>the timer number </dd></dl>
1131 <dl class="section see"><dt>See also</dt><dd>TIMER_NUM </dd></dl>
1132
1133 </div>
1134 </div>
1135 <a id="ga1a268fc4a0ad01d2879a7a7334cf9984" name="ga1a268fc4a0ad01d2879a7a7334cf9984"></a>
1136 <h2 class="memtitle"><span class="permalink"><a href="#ga1a268fc4a0ad01d2879a7a7334cf9984">&#9670;&nbsp;</a></span>timer_get_instance()</h2>
1137
1138 <div class="memitem">
1139 <div class="memproto">
1140 <table class="mlabels">
1141   <tr>
1142   <td class="mlabels-left">
1143       <table class="memname">
1144         <tr>
1145           <td class="memname">static <a class="el" href="structtimer__hw__t.html">timer_hw_t</a> * timer_get_instance </td>
1146           <td>(</td>
1147           <td class="paramtype">uint&#160;</td>
1148           <td class="paramname"><em>timer_num</em></td><td>)</td>
1149           <td></td>
1150         </tr>
1151       </table>
1152   </td>
1153   <td class="mlabels-right">
1154 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
1155   </tr>
1156 </table>
1157 </div><div class="memdoc">
1158
1159 <p>Returns the timer instance with the given timer number. </p>
1160 <dl class="params"><dt>Parameters</dt><dd>
1161   <table class="params">
1162     <tr><td class="paramname">timer_num</td><td>the timer number </td></tr>
1163   </table>
1164   </dd>
1165 </dl>
1166 <dl class="section return"><dt>Returns</dt><dd>the timer instance </dd></dl>
1167
1168 </div>
1169 </div>
1170 <a id="gabdb6ba35d83bbf4e3d385821fef7fd05" name="gabdb6ba35d83bbf4e3d385821fef7fd05"></a>
1171 <h2 class="memtitle"><span class="permalink"><a href="#gabdb6ba35d83bbf4e3d385821fef7fd05">&#9670;&nbsp;</a></span>timer_hardware_alarm_cancel()</h2>
1172
1173 <div class="memitem">
1174 <div class="memproto">
1175       <table class="memname">
1176         <tr>
1177           <td class="memname">void timer_hardware_alarm_cancel </td>
1178           <td>(</td>
1179           <td class="paramtype"><a class="el" href="structtimer__hw__t.html">timer_hw_t</a> *&#160;</td>
1180           <td class="paramname"><em>timer</em>, </td>
1181         </tr>
1182         <tr>
1183           <td class="paramkey"></td>
1184           <td></td>
1185           <td class="paramtype">uint&#160;</td>
1186           <td class="paramname"><em>alarm_num</em>&#160;</td>
1187         </tr>
1188         <tr>
1189           <td></td>
1190           <td>)</td>
1191           <td></td><td></td>
1192         </tr>
1193       </table>
1194 </div><div class="memdoc">
1195
1196 <p>Cancel an existing target (if any) for a specific hardware_alarm on the given timer instance. </p>
1197 <dl class="params"><dt>Parameters</dt><dd>
1198   <table class="params">
1199     <tr><td class="paramname">timer</td><td>the timer instance </td></tr>
1200     <tr><td class="paramname">alarm_num</td><td>the hardware alarm number </td></tr>
1201   </table>
1202   </dd>
1203 </dl>
1204 <dl class="section see"><dt>See also</dt><dd><a class="el" href="group__hardware__timer.html#ga5bc42f680998e4c30fb7389fee9aa59f" title="Cancel an existing target (if any) for the specified hardware_alarm on the default timer instance.">hardware_alarm_cancel</a> </dd></dl>
1205
1206 </div>
1207 </div>
1208 <a id="gaa4e5b9946e1ce19788b46b8bf9987a4b" name="gaa4e5b9946e1ce19788b46b8bf9987a4b"></a>
1209 <h2 class="memtitle"><span class="permalink"><a href="#gaa4e5b9946e1ce19788b46b8bf9987a4b">&#9670;&nbsp;</a></span>timer_hardware_alarm_claim()</h2>
1210
1211 <div class="memitem">
1212 <div class="memproto">
1213       <table class="memname">
1214         <tr>
1215           <td class="memname">void timer_hardware_alarm_claim </td>
1216           <td>(</td>
1217           <td class="paramtype"><a class="el" href="structtimer__hw__t.html">timer_hw_t</a> *&#160;</td>
1218           <td class="paramname"><em>timer</em>, </td>
1219         </tr>
1220         <tr>
1221           <td class="paramkey"></td>
1222           <td></td>
1223           <td class="paramtype">uint&#160;</td>
1224           <td class="paramname"><em>alarm_num</em>&#160;</td>
1225         </tr>
1226         <tr>
1227           <td></td>
1228           <td>)</td>
1229           <td></td><td></td>
1230         </tr>
1231       </table>
1232 </div><div class="memdoc">
1233
1234 <p>cooperatively claim the use of this hardware alarm_num on the given timer instance </p>
1235 <p >This method hard asserts if the hardware alarm is currently claimed.</p>
1236 <dl class="params"><dt>Parameters</dt><dd>
1237   <table class="params">
1238     <tr><td class="paramname">timer</td><td>the timer instance </td></tr>
1239     <tr><td class="paramname">alarm_num</td><td>the hardware alarm to claim </td></tr>
1240   </table>
1241   </dd>
1242 </dl>
1243 <dl class="section see"><dt>See also</dt><dd><a class="el" href="group__hardware__timer.html#ga51e6919f4f860e59e9d6f5403805cb8f" title="cooperatively claim the use of this hardware alarm_num on the default timer instance">hardware_alarm_claim</a> </dd>
1244 <dd>
1245 hardware_claiming </dd></dl>
1246
1247 </div>
1248 </div>
1249 <a id="ga8942fc87edfb495a2dd75a4703700642" name="ga8942fc87edfb495a2dd75a4703700642"></a>
1250 <h2 class="memtitle"><span class="permalink"><a href="#ga8942fc87edfb495a2dd75a4703700642">&#9670;&nbsp;</a></span>timer_hardware_alarm_claim_unused()</h2>
1251
1252 <div class="memitem">
1253 <div class="memproto">
1254       <table class="memname">
1255         <tr>
1256           <td class="memname">int timer_hardware_alarm_claim_unused </td>
1257           <td>(</td>
1258           <td class="paramtype"><a class="el" href="structtimer__hw__t.html">timer_hw_t</a> *&#160;</td>
1259           <td class="paramname"><em>timer</em>, </td>
1260         </tr>
1261         <tr>
1262           <td class="paramkey"></td>
1263           <td></td>
1264           <td class="paramtype">bool&#160;</td>
1265           <td class="paramname"><em>required</em>&#160;</td>
1266         </tr>
1267         <tr>
1268           <td></td>
1269           <td>)</td>
1270           <td></td><td></td>
1271         </tr>
1272       </table>
1273 </div><div class="memdoc">
1274
1275 <p>cooperatively claim the use of a hardware alarm_num on the given timer instance </p>
1276 <p >This method attempts to claim an unused hardware alarm</p>
1277 <dl class="params"><dt>Parameters</dt><dd>
1278   <table class="params">
1279     <tr><td class="paramname">timer</td><td>the timer instance </td></tr>
1280     <tr><td class="paramname">required</td><td>if true the function will panic if none are available </td></tr>
1281   </table>
1282   </dd>
1283 </dl>
1284 <dl class="section return"><dt>Returns</dt><dd>alarm_num the hardware alarm claimed or -1 if required was false, and none are available </dd></dl>
1285 <dl class="section see"><dt>See also</dt><dd><a class="el" href="group__hardware__timer.html#ga4500581b13256638c00054d85870c1f2" title="cooperatively claim the use of a hardware alarm_num on the default timer instance">hardware_alarm_claim_unused</a> </dd>
1286 <dd>
1287 hardware_claiming </dd></dl>
1288
1289 </div>
1290 </div>
1291 <a id="ga638f76034b217ff7f8999ca16b919f63" name="ga638f76034b217ff7f8999ca16b919f63"></a>
1292 <h2 class="memtitle"><span class="permalink"><a href="#ga638f76034b217ff7f8999ca16b919f63">&#9670;&nbsp;</a></span>timer_hardware_alarm_force_irq()</h2>
1293
1294 <div class="memitem">
1295 <div class="memproto">
1296       <table class="memname">
1297         <tr>
1298           <td class="memname">void timer_hardware_alarm_force_irq </td>
1299           <td>(</td>
1300           <td class="paramtype"><a class="el" href="structtimer__hw__t.html">timer_hw_t</a> *&#160;</td>
1301           <td class="paramname"><em>timer</em>, </td>
1302         </tr>
1303         <tr>
1304           <td class="paramkey"></td>
1305           <td></td>
1306           <td class="paramtype">uint&#160;</td>
1307           <td class="paramname"><em>alarm_num</em>&#160;</td>
1308         </tr>
1309         <tr>
1310           <td></td>
1311           <td>)</td>
1312           <td></td><td></td>
1313         </tr>
1314       </table>
1315 </div><div class="memdoc">
1316
1317 <p>Force and IRQ for a specific hardware alarm on the given timer instance. </p>
1318 <p >This method will forcibly make sure the current alarm callback (if present) for the hardware alarm is called from an IRQ context after this call. If an actual callback is due at the same time then the callback may only be called once.</p>
1319 <p >Calling this method does not otherwise interfere with regular callback operations.</p>
1320 <dl class="params"><dt>Parameters</dt><dd>
1321   <table class="params">
1322     <tr><td class="paramname">timer</td><td>the timer instance </td></tr>
1323     <tr><td class="paramname">alarm_num</td><td>the hardware alarm number </td></tr>
1324   </table>
1325   </dd>
1326 </dl>
1327 <dl class="section see"><dt>See also</dt><dd><a class="el" href="group__hardware__timer.html#ga5182b9f67e7f878548460f6f57e22ec0" title="Force and IRQ for a specific hardware alarm on the default timer instance.">hardware_alarm_force_irq</a> </dd></dl>
1328
1329 </div>
1330 </div>
1331 <a id="ga3531b9148290b15a491cfb6e6aafa850" name="ga3531b9148290b15a491cfb6e6aafa850"></a>
1332 <h2 class="memtitle"><span class="permalink"><a href="#ga3531b9148290b15a491cfb6e6aafa850">&#9670;&nbsp;</a></span>timer_hardware_alarm_get_irq_num()</h2>
1333
1334 <div class="memitem">
1335 <div class="memproto">
1336 <table class="mlabels">
1337   <tr>
1338   <td class="mlabels-left">
1339       <table class="memname">
1340         <tr>
1341           <td class="memname">static uint timer_hardware_alarm_get_irq_num </td>
1342           <td>(</td>
1343           <td class="paramtype">__unused <a class="el" href="structtimer__hw__t.html">timer_hw_t</a> *&#160;</td>
1344           <td class="paramname"><em>timer</em>, </td>
1345         </tr>
1346         <tr>
1347           <td class="paramkey"></td>
1348           <td></td>
1349           <td class="paramtype">uint&#160;</td>
1350           <td class="paramname"><em>alarm_num</em>&#160;</td>
1351         </tr>
1352         <tr>
1353           <td></td>
1354           <td>)</td>
1355           <td></td><td></td>
1356         </tr>
1357       </table>
1358   </td>
1359   <td class="mlabels-right">
1360 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
1361   </tr>
1362 </table>
1363 </div><div class="memdoc">
1364
1365 <p>Returns the <a class="el" href="group__hardware__irq.html#gaf30862f51b5994ffd5863176a185d137">irq_num_t</a> for the alarm interrupt from the given alarm on the given timer instance. </p>
1366 <dl class="params"><dt>Parameters</dt><dd>
1367   <table class="params">
1368     <tr><td class="paramname">timer</td><td>the timer instance </td></tr>
1369     <tr><td class="paramname">alarm_num</td><td>the alarm number </td></tr>
1370   </table>
1371   </dd>
1372 </dl>
1373 <dl class="section see"><dt>See also</dt><dd><a class="el" href="group__hardware__timer.html#ga7087b84f4fb4ecce424000c90fce84e4" title="Returns the irq_num_t for the alarm interrupt from the given alarm on the given timer instance.">TIMER_ALARM_IRQ_NUM</a> </dd></dl>
1374
1375 </div>
1376 </div>
1377 <a id="ga46d3b463f5ea48b21e285fe06e2960fe" name="ga46d3b463f5ea48b21e285fe06e2960fe"></a>
1378 <h2 class="memtitle"><span class="permalink"><a href="#ga46d3b463f5ea48b21e285fe06e2960fe">&#9670;&nbsp;</a></span>timer_hardware_alarm_is_claimed()</h2>
1379
1380 <div class="memitem">
1381 <div class="memproto">
1382       <table class="memname">
1383         <tr>
1384           <td class="memname">bool timer_hardware_alarm_is_claimed </td>
1385           <td>(</td>
1386           <td class="paramtype"><a class="el" href="structtimer__hw__t.html">timer_hw_t</a> *&#160;</td>
1387           <td class="paramname"><em>timer</em>, </td>
1388         </tr>
1389         <tr>
1390           <td class="paramkey"></td>
1391           <td></td>
1392           <td class="paramtype">uint&#160;</td>
1393           <td class="paramname"><em>alarm_num</em>&#160;</td>
1394         </tr>
1395         <tr>
1396           <td></td>
1397           <td>)</td>
1398           <td></td><td></td>
1399         </tr>
1400       </table>
1401 </div><div class="memdoc">
1402
1403 <p>Determine if a hardware alarm has been claimed on the given timer instance. </p>
1404 <dl class="params"><dt>Parameters</dt><dd>
1405   <table class="params">
1406     <tr><td class="paramname">timer</td><td>the timer instance </td></tr>
1407     <tr><td class="paramname">alarm_num</td><td>the hardware alarm number </td></tr>
1408   </table>
1409   </dd>
1410 </dl>
1411 <dl class="section return"><dt>Returns</dt><dd>true if claimed, false otherwise </dd></dl>
1412 <dl class="section see"><dt>See also</dt><dd><a class="el" href="group__hardware__timer.html#ga6a5ed8cbc0ddea150ba932810ddef2e0" title="Determine if a hardware alarm has been claimed on the default timer instance.">hardware_alarm_is_claimed</a> </dd>
1413 <dd>
1414 <a class="el" href="group__hardware__timer.html#ga51e6919f4f860e59e9d6f5403805cb8f" title="cooperatively claim the use of this hardware alarm_num on the default timer instance">hardware_alarm_claim</a> </dd></dl>
1415
1416 </div>
1417 </div>
1418 <a id="ga1f7d02607a27915fea3b99a65319d3c1" name="ga1f7d02607a27915fea3b99a65319d3c1"></a>
1419 <h2 class="memtitle"><span class="permalink"><a href="#ga1f7d02607a27915fea3b99a65319d3c1">&#9670;&nbsp;</a></span>timer_hardware_alarm_set_callback()</h2>
1420
1421 <div class="memitem">
1422 <div class="memproto">
1423       <table class="memname">
1424         <tr>
1425           <td class="memname">void timer_hardware_alarm_set_callback </td>
1426           <td>(</td>
1427           <td class="paramtype"><a class="el" href="structtimer__hw__t.html">timer_hw_t</a> *&#160;</td>
1428           <td class="paramname"><em>timer</em>, </td>
1429         </tr>
1430         <tr>
1431           <td class="paramkey"></td>
1432           <td></td>
1433           <td class="paramtype">uint&#160;</td>
1434           <td class="paramname"><em>alarm_num</em>, </td>
1435         </tr>
1436         <tr>
1437           <td class="paramkey"></td>
1438           <td></td>
1439           <td class="paramtype"><a class="el" href="group__hardware__timer.html#gaf2ca140ecc0d1e8087b584ed3707b80a">hardware_alarm_callback_t</a>&#160;</td>
1440           <td class="paramname"><em>callback</em>&#160;</td>
1441         </tr>
1442         <tr>
1443           <td></td>
1444           <td>)</td>
1445           <td></td><td></td>
1446         </tr>
1447       </table>
1448 </div><div class="memdoc">
1449
1450 <p>Enable/Disable a callback for a hardware alarm for a given timer instance on this core. </p>
1451 <p >This method enables/disables the alarm IRQ for the specified hardware alarm on the calling core, and set the specified callback to be associated with that alarm.</p>
1452 <p >This callback will be used for the timeout set via hardware_alarm_set_target</p>
1453 <dl class="section note"><dt>Note</dt><dd>This will install the handler on the current core if the IRQ handler isn't already set. Therefore the user has the opportunity to call this up from the core of their choice</dd></dl>
1454 <dl class="params"><dt>Parameters</dt><dd>
1455   <table class="params">
1456     <tr><td class="paramname">timer</td><td>the timer instance </td></tr>
1457     <tr><td class="paramname">alarm_num</td><td>the hardware alarm number </td></tr>
1458     <tr><td class="paramname">callback</td><td>the callback to install, or NULL to unset</td></tr>
1459   </table>
1460   </dd>
1461 </dl>
1462 <dl class="section see"><dt>See also</dt><dd><a class="el" href="group__hardware__timer.html#gaa4c3c72008c100ca25f94b806f13f112" title="Enable/Disable a callback for a hardware alarm on the default timer instance on this core.">hardware_alarm_set_callback</a> </dd>
1463 <dd>
1464 <a class="el" href="group__hardware__timer.html#ga8590dbfd69db9c3da5b628cd81efc22d" title="Set the current target for a specific hardware alarm on the given timer instance.">timer_hardware_alarm_set_target()</a> </dd></dl>
1465
1466 </div>
1467 </div>
1468 <a id="ga8590dbfd69db9c3da5b628cd81efc22d" name="ga8590dbfd69db9c3da5b628cd81efc22d"></a>
1469 <h2 class="memtitle"><span class="permalink"><a href="#ga8590dbfd69db9c3da5b628cd81efc22d">&#9670;&nbsp;</a></span>timer_hardware_alarm_set_target()</h2>
1470
1471 <div class="memitem">
1472 <div class="memproto">
1473       <table class="memname">
1474         <tr>
1475           <td class="memname">bool timer_hardware_alarm_set_target </td>
1476           <td>(</td>
1477           <td class="paramtype"><a class="el" href="structtimer__hw__t.html">timer_hw_t</a> *&#160;</td>
1478           <td class="paramname"><em>timer</em>, </td>
1479         </tr>
1480         <tr>
1481           <td class="paramkey"></td>
1482           <td></td>
1483           <td class="paramtype">uint&#160;</td>
1484           <td class="paramname"><em>alarm_num</em>, </td>
1485         </tr>
1486         <tr>
1487           <td class="paramkey"></td>
1488           <td></td>
1489           <td class="paramtype"><a class="el" href="group__timestamp.html#ga8b7f3d602cc053f05bacceeacc257ed8">absolute_time_t</a>&#160;</td>
1490           <td class="paramname"><em>t</em>&#160;</td>
1491         </tr>
1492         <tr>
1493           <td></td>
1494           <td>)</td>
1495           <td></td><td></td>
1496         </tr>
1497       </table>
1498 </div><div class="memdoc">
1499
1500 <p>Set the current target for a specific hardware alarm on the given timer instance. </p>
1501 <p >This will replace any existing target</p>
1502 <dl class="params"><dt>Parameters</dt><dd>
1503   <table class="params">
1504     <tr><td class="paramname">timer</td><td>the timer instance </td></tr>
1505     <tr><td class="paramname">alarm_num</td><td>the hardware alarm number </td></tr>
1506     <tr><td class="paramname">t</td><td>the target timestamp </td></tr>
1507   </table>
1508   </dd>
1509 </dl>
1510 <dl class="section return"><dt>Returns</dt><dd>true if the target was "missed"; i.e. it was in the past, or occurred before a future hardware timeout could be set </dd></dl>
1511 <dl class="section see"><dt>See also</dt><dd><a class="el" href="group__hardware__timer.html#ga62098633d173c24c56c359df2e886ed2" title="Set the current target for the specified hardware alarm on the default timer instance.">hardware_alarm_set_target</a> </dd></dl>
1512
1513 </div>
1514 </div>
1515 <a id="gac8ff547eecf2fd3eb1124cd3a5afe85a" name="gac8ff547eecf2fd3eb1124cd3a5afe85a"></a>
1516 <h2 class="memtitle"><span class="permalink"><a href="#gac8ff547eecf2fd3eb1124cd3a5afe85a">&#9670;&nbsp;</a></span>timer_hardware_alarm_unclaim()</h2>
1517
1518 <div class="memitem">
1519 <div class="memproto">
1520       <table class="memname">
1521         <tr>
1522           <td class="memname">void timer_hardware_alarm_unclaim </td>
1523           <td>(</td>
1524           <td class="paramtype"><a class="el" href="structtimer__hw__t.html">timer_hw_t</a> *&#160;</td>
1525           <td class="paramname"><em>timer</em>, </td>
1526         </tr>
1527         <tr>
1528           <td class="paramkey"></td>
1529           <td></td>
1530           <td class="paramtype">uint&#160;</td>
1531           <td class="paramname"><em>alarm_num</em>&#160;</td>
1532         </tr>
1533         <tr>
1534           <td></td>
1535           <td>)</td>
1536           <td></td><td></td>
1537         </tr>
1538       </table>
1539 </div><div class="memdoc">
1540
1541 <p>cooperatively release the claim on use of this hardware alarm_num on the given timer instance </p>
1542 <dl class="params"><dt>Parameters</dt><dd>
1543   <table class="params">
1544     <tr><td class="paramname">timer</td><td>the timer instance </td></tr>
1545     <tr><td class="paramname">alarm_num</td><td>the hardware alarm to unclaim </td></tr>
1546   </table>
1547   </dd>
1548 </dl>
1549 <dl class="section see"><dt>See also</dt><dd><a class="el" href="group__hardware__timer.html#ga0d9ea3c5f1d4ea94812b338afbcef7e5" title="cooperatively release the claim on use of this hardware alarm_num on the default timer instance">hardware_alarm_unclaim</a> </dd>
1550 <dd>
1551 hardware_claiming </dd></dl>
1552
1553 </div>
1554 </div>
1555 <a id="ga2a8c570e4536f0ceab896475ac5cc5e7" name="ga2a8c570e4536f0ceab896475ac5cc5e7"></a>
1556 <h2 class="memtitle"><span class="permalink"><a href="#ga2a8c570e4536f0ceab896475ac5cc5e7">&#9670;&nbsp;</a></span>timer_time_reached()</h2>
1557
1558 <div class="memitem">
1559 <div class="memproto">
1560 <table class="mlabels">
1561   <tr>
1562   <td class="mlabels-left">
1563       <table class="memname">
1564         <tr>
1565           <td class="memname">static bool timer_time_reached </td>
1566           <td>(</td>
1567           <td class="paramtype"><a class="el" href="structtimer__hw__t.html">timer_hw_t</a> *&#160;</td>
1568           <td class="paramname"><em>timer</em>, </td>
1569         </tr>
1570         <tr>
1571           <td class="paramkey"></td>
1572           <td></td>
1573           <td class="paramtype"><a class="el" href="group__timestamp.html#ga8b7f3d602cc053f05bacceeacc257ed8">absolute_time_t</a>&#160;</td>
1574           <td class="paramname"><em>t</em>&#160;</td>
1575         </tr>
1576         <tr>
1577           <td></td>
1578           <td>)</td>
1579           <td></td><td></td>
1580         </tr>
1581       </table>
1582   </td>
1583   <td class="mlabels-right">
1584 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
1585   </tr>
1586 </table>
1587 </div><div class="memdoc">
1588
1589 <p>Check if the specified timestamp has been reached on the given timer instance. </p>
1590 <dl class="params"><dt>Parameters</dt><dd>
1591   <table class="params">
1592     <tr><td class="paramname">timer</td><td>the timer instance </td></tr>
1593     <tr><td class="paramname">t</td><td>Absolute time to compare against current time </td></tr>
1594   </table>
1595   </dd>
1596 </dl>
1597 <dl class="section return"><dt>Returns</dt><dd>true if it is now after the specified timestamp </dd></dl>
1598 <dl class="section see"><dt>See also</dt><dd><a class="el" href="group__hardware__timer.html#ga1e41eca96d5c1b3b5e69e3b1a00cdf7d" title="Check if the specified timestamp has been reached on the default timer instance.">time_reached</a> </dd></dl>
1599
1600 </div>
1601 </div>
1602 <a id="ga2b3cd8f1226824b3a85fb2bca66e70fd" name="ga2b3cd8f1226824b3a85fb2bca66e70fd"></a>
1603 <h2 class="memtitle"><span class="permalink"><a href="#ga2b3cd8f1226824b3a85fb2bca66e70fd">&#9670;&nbsp;</a></span>timer_time_us_32()</h2>
1604
1605 <div class="memitem">
1606 <div class="memproto">
1607 <table class="mlabels">
1608   <tr>
1609   <td class="mlabels-left">
1610       <table class="memname">
1611         <tr>
1612           <td class="memname">static uint32_t timer_time_us_32 </td>
1613           <td>(</td>
1614           <td class="paramtype"><a class="el" href="structtimer__hw__t.html">timer_hw_t</a> *&#160;</td>
1615           <td class="paramname"><em>timer</em></td><td>)</td>
1616           <td></td>
1617         </tr>
1618       </table>
1619   </td>
1620   <td class="mlabels-right">
1621 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
1622   </tr>
1623 </table>
1624 </div><div class="memdoc">
1625
1626 <p>Return a 32 bit timestamp value in microseconds for a given timer instance. </p>
1627 <p >Returns the low 32 bits of the hardware timer. </p><dl class="section note"><dt>Note</dt><dd>This value wraps roughly every 1 hour 11 minutes and 35 seconds.</dd></dl>
1628 <dl class="params"><dt>Parameters</dt><dd>
1629   <table class="params">
1630     <tr><td class="paramname">timer</td><td>the timer instance </td></tr>
1631   </table>
1632   </dd>
1633 </dl>
1634 <dl class="section return"><dt>Returns</dt><dd>the 32 bit timestamp </dd></dl>
1635 <dl class="section see"><dt>See also</dt><dd><a class="el" href="group__hardware__timer.html#gabfffa28d8715f71834934f357e7dc091" title="Return a 32 bit timestamp value in microseconds for the default timer instance.">time_us_32</a> </dd></dl>
1636
1637 </div>
1638 </div>
1639 <a id="ga937b4fb64eb4c7cc59464b38365d72d9" name="ga937b4fb64eb4c7cc59464b38365d72d9"></a>
1640 <h2 class="memtitle"><span class="permalink"><a href="#ga937b4fb64eb4c7cc59464b38365d72d9">&#9670;&nbsp;</a></span>timer_time_us_64()</h2>
1641
1642 <div class="memitem">
1643 <div class="memproto">
1644       <table class="memname">
1645         <tr>
1646           <td class="memname">uint64_t timer_time_us_64 </td>
1647           <td>(</td>
1648           <td class="paramtype"><a class="el" href="structtimer__hw__t.html">timer_hw_t</a> *&#160;</td>
1649           <td class="paramname"><em>timer</em></td><td>)</td>
1650           <td></td>
1651         </tr>
1652       </table>
1653 </div><div class="memdoc">
1654
1655 <p>Return the current 64 bit timestamp value in microseconds for a given timer instance. </p>
1656 <p >Returns the full 64 bits of the hardware timer. The <a class="el" href="group__pico__time.html">pico_time</a> and other functions rely on the fact that this value monotonically increases from power up. As such it is expected that this value counts upwards and never wraps (we apologize for introducing a potential year 5851444 bug).</p>
1657 <dl class="params"><dt>Parameters</dt><dd>
1658   <table class="params">
1659     <tr><td class="paramname">timer</td><td>the timer instance </td></tr>
1660   </table>
1661   </dd>
1662 </dl>
1663 <dl class="section return"><dt>Returns</dt><dd>the 64 bit timestamp </dd></dl>
1664 <dl class="section see"><dt>See also</dt><dd><a class="el" href="group__hardware__timer.html#ga7bbcd996dbd3dd4adc03a80272fb2fc3" title="Return the current 64 bit timestamp value in microseconds for the default timer instance.">time_us_64</a></dd></dl>
1665 <p>Return the current 64 bit timestamp value in microseconds for a given timer instance. </p>
1666
1667 </div>
1668 </div>
1669 </div><!-- contents -->
1670 </div><!-- doc-content -->
1671
1672         <script src="main.js"></script>
1673 </body>
1674 </html>
This page took 0.132685 seconds and 4 git commands to generate.