]> Git Repo - pico-vscode.git/blob - web/docs/group__hardware__pio.html
Merge branch 'main' into main
[pico-vscode.git] / web / docs / group__hardware__pio.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_pio</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__pio.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="#groups">Modules</a> &#124;
107 <a href="#define-members">Macros</a> &#124;
108 <a href="#typedef-members">Typedefs</a> &#124;
109 <a href="#enum-members">Enumerations</a> &#124;
110 <a href="#func-members">Functions</a>  </div>
111   <div class="headertitle"><div class="title">hardware_pio<div class="ingroups"><a class="el" href="group__hardware.html">Hardware APIs</a></div></div></div>
112 </div><!--header-->
113 <div class="contents">
114
115 <p>Programmable I/O (PIO) API.  
116 <a href="#details">More...</a></p>
117 <table class="memberdecls">
118 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="groups" name="groups"></a>
119 Modules</h2></td></tr>
120 <tr class="memitem:group__sm__config"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__sm__config.html">sm_config</a></td></tr>
121 <tr class="memdesc:group__sm__config"><td class="mdescLeft">&#160;</td><td class="mdescRight">PIO state machine configuration. <br /></td></tr>
122 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
123 <tr class="memitem:group__pio__instructions"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__pio__instructions.html">pio_instructions</a></td></tr>
124 <tr class="memdesc:group__pio__instructions"><td class="mdescLeft">&#160;</td><td class="mdescRight">PIO instruction encoding. <br /></td></tr>
125 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
126 </table><table class="memberdecls">
127 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
128 Macros</h2></td></tr>
129 <tr class="memitem:ga916d05e71da7f2173cd22b46bbfa0a11"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#ga916d05e71da7f2173cd22b46bbfa0a11">pio0</a>&#160;&#160;&#160;pio0_hw</td></tr>
130 <tr class="separator:ga916d05e71da7f2173cd22b46bbfa0a11"><td class="memSeparator" colspan="2">&#160;</td></tr>
131 <tr class="memitem:ga923a261ba19804c404900228e99c9522"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#ga923a261ba19804c404900228e99c9522">pio1</a>&#160;&#160;&#160;pio1_hw</td></tr>
132 <tr class="separator:ga923a261ba19804c404900228e99c9522"><td class="memSeparator" colspan="2">&#160;</td></tr>
133 <tr class="memitem:ga79fcbff988c01df8285f05ce6ad3a86d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#ga79fcbff988c01df8285f05ce6ad3a86d">PIO_NUM</a>(pio)</td></tr>
134 <tr class="memdesc:ga79fcbff988c01df8285f05ce6ad3a86d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the PIO number for a PIO instance.  <a href="group__hardware__pio.html#ga79fcbff988c01df8285f05ce6ad3a86d">More...</a><br /></td></tr>
135 <tr class="separator:ga79fcbff988c01df8285f05ce6ad3a86d"><td class="memSeparator" colspan="2">&#160;</td></tr>
136 <tr class="memitem:ga06134c14db82b7927d96faeb07ab0e8b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#ga06134c14db82b7927d96faeb07ab0e8b">PIO_INSTANCE</a>(instance)</td></tr>
137 <tr class="memdesc:ga06134c14db82b7927d96faeb07ab0e8b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the PIO instance with the given PIO number.  <a href="group__hardware__pio.html#ga06134c14db82b7927d96faeb07ab0e8b">More...</a><br /></td></tr>
138 <tr class="separator:ga06134c14db82b7927d96faeb07ab0e8b"><td class="memSeparator" colspan="2">&#160;</td></tr>
139 <tr class="memitem:gaa26de7b3ef34fb86138bf376ab152577"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#gaa26de7b3ef34fb86138bf376ab152577">PIO_FUNCSEL_NUM</a>(pio,  gpio)</td></tr>
140 <tr class="memdesc:gaa26de7b3ef34fb86138bf376ab152577"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns <a class="el" href="group__hardware__gpio.html#ga89b8e5e8a9c515260dea8d1fa96e72c9">gpio_function_t</a> needed to select the PIO function for the given PIO instance on the given GPIO.  <a href="group__hardware__pio.html#gaa26de7b3ef34fb86138bf376ab152577">More...</a><br /></td></tr>
141 <tr class="separator:gaa26de7b3ef34fb86138bf376ab152577"><td class="memSeparator" colspan="2">&#160;</td></tr>
142 <tr class="memitem:gab9eca729acb2cebdb1abb7793d0f5bdf"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#gab9eca729acb2cebdb1abb7793d0f5bdf">PIO_DREQ_NUM</a>(pio,  sm,  is_tx)</td></tr>
143 <tr class="memdesc:gab9eca729acb2cebdb1abb7793d0f5bdf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <a class="el" href="group__hardware__dma.html#ga8def0ea481095c94f3a0dd0b4fed999e">dreq_num_t</a> used for pacing DMA transfers to or from a given state machine's FIFOs on this PIO instance. If is_tx is true, then it is for transfers to the PIO state machine TX FIFO else for transfers from the PIO state machine RX FIFO.  <a href="group__hardware__pio.html#gab9eca729acb2cebdb1abb7793d0f5bdf">More...</a><br /></td></tr>
144 <tr class="separator:gab9eca729acb2cebdb1abb7793d0f5bdf"><td class="memSeparator" colspan="2">&#160;</td></tr>
145 <tr class="memitem:gaeb939c4541517980acf9de3ae4010624"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#gaeb939c4541517980acf9de3ae4010624">PIO_IRQ_NUM</a>(pio,  irqn)</td></tr>
146 <tr class="memdesc:gaeb939c4541517980acf9de3ae4010624"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <a class="el" href="group__hardware__irq.html#gaf30862f51b5994ffd5863176a185d137">irq_num_t</a> for processor interrupts from the given PIO instance.  <a href="group__hardware__pio.html#gaeb939c4541517980acf9de3ae4010624">More...</a><br /></td></tr>
147 <tr class="separator:gaeb939c4541517980acf9de3ae4010624"><td class="memSeparator" colspan="2">&#160;</td></tr>
148 </table><table class="memberdecls">
149 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="typedef-members" name="typedef-members"></a>
150 Typedefs</h2></td></tr>
151 <tr class="memitem:gab9e9aed4bb165a040415ae342e0902fe"><td class="memItemLeft" align="right" valign="top"><a id="gab9e9aed4bb165a040415ae342e0902fe" name="gab9e9aed4bb165a040415ae342e0902fe"></a>
152 typedef enum <a class="el" href="group__hardware__pio.html#ga0e60c768ea29f296b5ef40c02211bbcc">pio_interrupt_source</a>&#160;</td><td class="memItemRight" valign="bottom"><b>pio_interrupt_source_t</b></td></tr>
153 <tr class="memdesc:gab9e9aed4bb165a040415ae342e0902fe"><td class="mdescLeft">&#160;</td><td class="mdescRight">PIO interrupt source numbers for pio related IRQs. <br /></td></tr>
154 <tr class="separator:gab9e9aed4bb165a040415ae342e0902fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
155 </table><table class="memberdecls">
156 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="enum-members" name="enum-members"></a>
157 Enumerations</h2></td></tr>
158 <tr class="memitem:ga7d415b966abbc1c25315d0775d093356"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#ga7d415b966abbc1c25315d0775d093356">pio_fifo_join</a> { <a class="el" href="group__hardware__pio.html#gga7d415b966abbc1c25315d0775d093356a1ecaeaf5a3d81338a276b30f019b05c4">PIO_FIFO_JOIN_NONE</a> = 0
159 , <a class="el" href="group__hardware__pio.html#gga7d415b966abbc1c25315d0775d093356a22a2cbf467019804e134a38d40249f50">PIO_FIFO_JOIN_TX</a> = 1
160 , <a class="el" href="group__hardware__pio.html#gga7d415b966abbc1c25315d0775d093356ab2cff7409baac4928fec469fe5b44ed0">PIO_FIFO_JOIN_RX</a> = 2
161  }</td></tr>
162 <tr class="memdesc:ga7d415b966abbc1c25315d0775d093356"><td class="mdescLeft">&#160;</td><td class="mdescRight">FIFO join states.  <a href="group__hardware__pio.html#ga7d415b966abbc1c25315d0775d093356">More...</a><br /></td></tr>
163 <tr class="separator:ga7d415b966abbc1c25315d0775d093356"><td class="memSeparator" colspan="2">&#160;</td></tr>
164 <tr class="memitem:ga356b3f4974cd31fdc4a2de381aceea5e"><td class="memItemLeft" align="right" valign="top"><a id="ga356b3f4974cd31fdc4a2de381aceea5e" name="ga356b3f4974cd31fdc4a2de381aceea5e"></a>enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#ga356b3f4974cd31fdc4a2de381aceea5e">pio_mov_status_type</a> { <b>STATUS_TX_LESSTHAN</b> = 0
165 , <b>STATUS_RX_LESSTHAN</b> = 1
166  }</td></tr>
167 <tr class="memdesc:ga356b3f4974cd31fdc4a2de381aceea5e"><td class="mdescLeft">&#160;</td><td class="mdescRight">MOV status types. <br /></td></tr>
168 <tr class="separator:ga356b3f4974cd31fdc4a2de381aceea5e"><td class="memSeparator" colspan="2">&#160;</td></tr>
169 <tr class="memitem:ga0e60c768ea29f296b5ef40c02211bbcc"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#ga0e60c768ea29f296b5ef40c02211bbcc">pio_interrupt_source</a> { <br />
170 &#160;&#160;<a class="el" href="group__hardware__pio.html#gga0e60c768ea29f296b5ef40c02211bbcca23610bee821f3f8fecbfad0e48c6d742">pis_interrupt0</a> = PIO_INTR_SM0_LSB
171 , <a class="el" href="group__hardware__pio.html#gga0e60c768ea29f296b5ef40c02211bbcca6cd394d2b05ae5eec188d5283d16dc49">pis_interrupt1</a> = PIO_INTR_SM1_LSB
172 , <a class="el" href="group__hardware__pio.html#gga0e60c768ea29f296b5ef40c02211bbcca066e1cafa42ed6638c93cc09c9b1a0d4">pis_interrupt2</a> = PIO_INTR_SM2_LSB
173 , <a class="el" href="group__hardware__pio.html#gga0e60c768ea29f296b5ef40c02211bbcca94cf23106019a84873d6db52d1e8470f">pis_interrupt3</a> = PIO_INTR_SM3_LSB
174 , <br />
175 &#160;&#160;<a class="el" href="group__hardware__pio.html#gga0e60c768ea29f296b5ef40c02211bbcca924b2a1d4b6d257ac13608729dcf9ee1">pis_sm0_tx_fifo_not_full</a> = PIO_INTR_SM0_TXNFULL_LSB
176 , <a class="el" href="group__hardware__pio.html#gga0e60c768ea29f296b5ef40c02211bbcca27452b43a8d5d40ab0ba25a195681d48">pis_sm1_tx_fifo_not_full</a> = PIO_INTR_SM1_TXNFULL_LSB
177 , <a class="el" href="group__hardware__pio.html#gga0e60c768ea29f296b5ef40c02211bbcca214d3bdb6ebc516c4094c4eb476d514d">pis_sm2_tx_fifo_not_full</a> = PIO_INTR_SM2_TXNFULL_LSB
178 , <a class="el" href="group__hardware__pio.html#gga0e60c768ea29f296b5ef40c02211bbcca463c09bec3151921a18be2c548e97297">pis_sm3_tx_fifo_not_full</a> = PIO_INTR_SM3_TXNFULL_LSB
179 , <br />
180 &#160;&#160;<a class="el" href="group__hardware__pio.html#gga0e60c768ea29f296b5ef40c02211bbcca959e0b9e484719a0af543fb87a365d52">pis_sm0_rx_fifo_not_empty</a> = PIO_INTR_SM0_RXNEMPTY_LSB
181 , <a class="el" href="group__hardware__pio.html#gga0e60c768ea29f296b5ef40c02211bbcca85ee2774a8e5dfaf61d3866a81cb381c">pis_sm1_rx_fifo_not_empty</a> = PIO_INTR_SM1_RXNEMPTY_LSB
182 , <a class="el" href="group__hardware__pio.html#gga0e60c768ea29f296b5ef40c02211bbcca6d7f4a904cb634fd3f30f033874393ac">pis_sm2_rx_fifo_not_empty</a> = PIO_INTR_SM2_RXNEMPTY_LSB
183 , <a class="el" href="group__hardware__pio.html#gga0e60c768ea29f296b5ef40c02211bbccaacce0dbc391b9bb05965b7bc1b6f7698">pis_sm3_rx_fifo_not_empty</a> = PIO_INTR_SM3_RXNEMPTY_LSB
184 <br />
185  }</td></tr>
186 <tr class="memdesc:ga0e60c768ea29f296b5ef40c02211bbcc"><td class="mdescLeft">&#160;</td><td class="mdescRight">PIO interrupt source numbers for pio related IRQs.  <a href="group__hardware__pio.html#ga0e60c768ea29f296b5ef40c02211bbcc">More...</a><br /></td></tr>
187 <tr class="separator:ga0e60c768ea29f296b5ef40c02211bbcc"><td class="memSeparator" colspan="2">&#160;</td></tr>
188 </table><table class="memberdecls">
189 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
190 Functions</h2></td></tr>
191 <tr class="memitem:ga89688fd1a941797cb0cc80dbbc4bbd5f"><td class="memItemLeft" align="right" valign="top">static uint&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#ga89688fd1a941797cb0cc80dbbc4bbd5f">pio_get_gpio_base</a> (<a class="el" href="structpio__hw__t.html">PIO</a> pio)</td></tr>
192 <tr class="memdesc:ga89688fd1a941797cb0cc80dbbc4bbd5f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the base GPIO base for the PIO instance.  <a href="group__hardware__pio.html#ga89688fd1a941797cb0cc80dbbc4bbd5f">More...</a><br /></td></tr>
193 <tr class="separator:ga89688fd1a941797cb0cc80dbbc4bbd5f"><td class="memSeparator" colspan="2">&#160;</td></tr>
194 <tr class="memitem:ga28e9a84f3332ebf088f665d4b676117b"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#ga28e9a84f3332ebf088f665d4b676117b">pio_sm_set_config</a> (<a class="el" href="structpio__hw__t.html">PIO</a> pio, uint sm, const <a class="el" href="structpio__sm__config.html">pio_sm_config</a> *config)</td></tr>
195 <tr class="memdesc:ga28e9a84f3332ebf088f665d4b676117b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Apply a state machine configuration to a state machine.  <a href="group__hardware__pio.html#ga28e9a84f3332ebf088f665d4b676117b">More...</a><br /></td></tr>
196 <tr class="separator:ga28e9a84f3332ebf088f665d4b676117b"><td class="memSeparator" colspan="2">&#160;</td></tr>
197 <tr class="memitem:gae86f691914b78d66b1394ae94f3f4aa6"><td class="memItemLeft" align="right" valign="top">static uint&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#gae86f691914b78d66b1394ae94f3f4aa6">pio_get_index</a> (<a class="el" href="structpio__hw__t.html">PIO</a> pio)</td></tr>
198 <tr class="memdesc:gae86f691914b78d66b1394ae94f3f4aa6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the instance number of a PIO instance.  <a href="group__hardware__pio.html#gae86f691914b78d66b1394ae94f3f4aa6">More...</a><br /></td></tr>
199 <tr class="separator:gae86f691914b78d66b1394ae94f3f4aa6"><td class="memSeparator" colspan="2">&#160;</td></tr>
200 <tr class="memitem:ga9e150bfd3d43565a01f38a37fa2884d4"><td class="memItemLeft" align="right" valign="top">static uint&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#ga9e150bfd3d43565a01f38a37fa2884d4">pio_get_funcsel</a> (<a class="el" href="structpio__hw__t.html">PIO</a> pio)</td></tr>
201 <tr class="memdesc:ga9e150bfd3d43565a01f38a37fa2884d4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the funcsel number of a PIO instance.  <a href="group__hardware__pio.html#ga9e150bfd3d43565a01f38a37fa2884d4">More...</a><br /></td></tr>
202 <tr class="separator:ga9e150bfd3d43565a01f38a37fa2884d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
203 <tr class="memitem:ga151f87205041da11d3c69be5ddbd5653"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="structpio__hw__t.html">PIO</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#ga151f87205041da11d3c69be5ddbd5653">pio_get_instance</a> (uint instance)</td></tr>
204 <tr class="memdesc:ga151f87205041da11d3c69be5ddbd5653"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert PIO instance to hardware instance.  <a href="group__hardware__pio.html#ga151f87205041da11d3c69be5ddbd5653">More...</a><br /></td></tr>
205 <tr class="separator:ga151f87205041da11d3c69be5ddbd5653"><td class="memSeparator" colspan="2">&#160;</td></tr>
206 <tr class="memitem:gafa244b1be8f53a329db9d26298e054bb"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#gafa244b1be8f53a329db9d26298e054bb">pio_gpio_init</a> (<a class="el" href="structpio__hw__t.html">PIO</a> pio, uint pin)</td></tr>
207 <tr class="memdesc:gafa244b1be8f53a329db9d26298e054bb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Setup the function select for a GPIO to use output from the given PIO instance.  <a href="group__hardware__pio.html#gafa244b1be8f53a329db9d26298e054bb">More...</a><br /></td></tr>
208 <tr class="separator:gafa244b1be8f53a329db9d26298e054bb"><td class="memSeparator" colspan="2">&#160;</td></tr>
209 <tr class="memitem:ga4091eef7afda5200a3988b9412fe3b3f"><td class="memItemLeft" align="right" valign="top">static uint&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#ga4091eef7afda5200a3988b9412fe3b3f">pio_get_dreq</a> (<a class="el" href="structpio__hw__t.html">PIO</a> pio, uint sm, bool is_tx)</td></tr>
210 <tr class="memdesc:ga4091eef7afda5200a3988b9412fe3b3f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the DREQ to use for pacing transfers to/from a particular state machine FIFO.  <a href="group__hardware__pio.html#ga4091eef7afda5200a3988b9412fe3b3f">More...</a><br /></td></tr>
211 <tr class="separator:ga4091eef7afda5200a3988b9412fe3b3f"><td class="memSeparator" colspan="2">&#160;</td></tr>
212 <tr class="memitem:ga332210f0e594b24bf64f4bb1c8f49be3"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#ga332210f0e594b24bf64f4bb1c8f49be3">pio_set_gpio_base</a> (<a class="el" href="structpio__hw__t.html">PIO</a> pio, uint gpio_base)</td></tr>
213 <tr class="memdesc:ga332210f0e594b24bf64f4bb1c8f49be3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the base GPIO base for the PIO instance.  <a href="group__hardware__pio.html#ga332210f0e594b24bf64f4bb1c8f49be3">More...</a><br /></td></tr>
214 <tr class="separator:ga332210f0e594b24bf64f4bb1c8f49be3"><td class="memSeparator" colspan="2">&#160;</td></tr>
215 <tr class="memitem:gaa8aafe966a46f4de9be59f73cae65a4b"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#gaa8aafe966a46f4de9be59f73cae65a4b">pio_can_add_program</a> (<a class="el" href="structpio__hw__t.html">PIO</a> pio, const <a class="el" href="structpio__program.html">pio_program_t</a> *program)</td></tr>
216 <tr class="memdesc:gaa8aafe966a46f4de9be59f73cae65a4b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Determine whether the given program can (at the time of the call) be loaded onto the PIO instance.  <a href="group__hardware__pio.html#gaa8aafe966a46f4de9be59f73cae65a4b">More...</a><br /></td></tr>
217 <tr class="separator:gaa8aafe966a46f4de9be59f73cae65a4b"><td class="memSeparator" colspan="2">&#160;</td></tr>
218 <tr class="memitem:gaafac789d94b0727bb02ea83a8786897f"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#gaafac789d94b0727bb02ea83a8786897f">pio_can_add_program_at_offset</a> (<a class="el" href="structpio__hw__t.html">PIO</a> pio, const <a class="el" href="structpio__program.html">pio_program_t</a> *program, uint offset)</td></tr>
219 <tr class="memdesc:gaafac789d94b0727bb02ea83a8786897f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Determine whether the given program can (at the time of the call) be loaded onto the PIO instance starting at a particular location.  <a href="group__hardware__pio.html#gaafac789d94b0727bb02ea83a8786897f">More...</a><br /></td></tr>
220 <tr class="separator:gaafac789d94b0727bb02ea83a8786897f"><td class="memSeparator" colspan="2">&#160;</td></tr>
221 <tr class="memitem:gaefbd086e8e96fee073438dac3c20334c"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#gaefbd086e8e96fee073438dac3c20334c">pio_add_program</a> (<a class="el" href="structpio__hw__t.html">PIO</a> pio, const <a class="el" href="structpio__program.html">pio_program_t</a> *program)</td></tr>
222 <tr class="memdesc:gaefbd086e8e96fee073438dac3c20334c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Attempt to load the program.  <a href="group__hardware__pio.html#gaefbd086e8e96fee073438dac3c20334c">More...</a><br /></td></tr>
223 <tr class="separator:gaefbd086e8e96fee073438dac3c20334c"><td class="memSeparator" colspan="2">&#160;</td></tr>
224 <tr class="memitem:ga12948478935f817218b64e1db3a8ebad"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#ga12948478935f817218b64e1db3a8ebad">pio_add_program_at_offset</a> (<a class="el" href="structpio__hw__t.html">PIO</a> pio, const <a class="el" href="structpio__program.html">pio_program_t</a> *program, uint offset)</td></tr>
225 <tr class="memdesc:ga12948478935f817218b64e1db3a8ebad"><td class="mdescLeft">&#160;</td><td class="mdescRight">Attempt to load the program at the specified instruction memory offset.  <a href="group__hardware__pio.html#ga12948478935f817218b64e1db3a8ebad">More...</a><br /></td></tr>
226 <tr class="separator:ga12948478935f817218b64e1db3a8ebad"><td class="memSeparator" colspan="2">&#160;</td></tr>
227 <tr class="memitem:ga81c77d31aff72655977b658a9c37665e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#ga81c77d31aff72655977b658a9c37665e">pio_remove_program</a> (<a class="el" href="structpio__hw__t.html">PIO</a> pio, const <a class="el" href="structpio__program.html">pio_program_t</a> *program, uint loaded_offset)</td></tr>
228 <tr class="memdesc:ga81c77d31aff72655977b658a9c37665e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Remove a program from a PIO instance's instruction memory.  <a href="group__hardware__pio.html#ga81c77d31aff72655977b658a9c37665e">More...</a><br /></td></tr>
229 <tr class="separator:ga81c77d31aff72655977b658a9c37665e"><td class="memSeparator" colspan="2">&#160;</td></tr>
230 <tr class="memitem:ga850396a2a2925bbcc97247a629ca5bd2"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#ga850396a2a2925bbcc97247a629ca5bd2">pio_clear_instruction_memory</a> (<a class="el" href="structpio__hw__t.html">PIO</a> pio)</td></tr>
231 <tr class="memdesc:ga850396a2a2925bbcc97247a629ca5bd2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clears all of a PIO instance's instruction memory.  <a href="group__hardware__pio.html#ga850396a2a2925bbcc97247a629ca5bd2">More...</a><br /></td></tr>
232 <tr class="separator:ga850396a2a2925bbcc97247a629ca5bd2"><td class="memSeparator" colspan="2">&#160;</td></tr>
233 <tr class="memitem:gaa47ec4090dcdc251e44bf4e4cb89a7bc"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#gaa47ec4090dcdc251e44bf4e4cb89a7bc">pio_sm_set_enabled</a> (<a class="el" href="structpio__hw__t.html">PIO</a> pio, uint sm, bool enabled)</td></tr>
234 <tr class="memdesc:gaa47ec4090dcdc251e44bf4e4cb89a7bc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enable or disable a PIO state machine.  <a href="group__hardware__pio.html#gaa47ec4090dcdc251e44bf4e4cb89a7bc">More...</a><br /></td></tr>
235 <tr class="separator:gaa47ec4090dcdc251e44bf4e4cb89a7bc"><td class="memSeparator" colspan="2">&#160;</td></tr>
236 <tr class="memitem:gaf726f77ee21f5373cadf064a4e0b4935"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#gaf726f77ee21f5373cadf064a4e0b4935">pio_set_sm_mask_enabled</a> (<a class="el" href="structpio__hw__t.html">PIO</a> pio, uint32_t mask, bool enabled)</td></tr>
237 <tr class="memdesc:gaf726f77ee21f5373cadf064a4e0b4935"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enable or disable multiple PIO state machines.  <a href="group__hardware__pio.html#gaf726f77ee21f5373cadf064a4e0b4935">More...</a><br /></td></tr>
238 <tr class="separator:gaf726f77ee21f5373cadf064a4e0b4935"><td class="memSeparator" colspan="2">&#160;</td></tr>
239 <tr class="memitem:ga7b89b93dd0553c77538c70baf6a7e4f0"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#ga7b89b93dd0553c77538c70baf6a7e4f0">pio_sm_restart</a> (<a class="el" href="structpio__hw__t.html">PIO</a> pio, uint sm)</td></tr>
240 <tr class="memdesc:ga7b89b93dd0553c77538c70baf6a7e4f0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Restart a state machine with a known state.  <a href="group__hardware__pio.html#ga7b89b93dd0553c77538c70baf6a7e4f0">More...</a><br /></td></tr>
241 <tr class="separator:ga7b89b93dd0553c77538c70baf6a7e4f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
242 <tr class="memitem:gae3e115fd41d9ac29c7a13b0c213bc2cd"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#gae3e115fd41d9ac29c7a13b0c213bc2cd">pio_restart_sm_mask</a> (<a class="el" href="structpio__hw__t.html">PIO</a> pio, uint32_t mask)</td></tr>
243 <tr class="memdesc:gae3e115fd41d9ac29c7a13b0c213bc2cd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Restart multiple state machine with a known state.  <a href="group__hardware__pio.html#gae3e115fd41d9ac29c7a13b0c213bc2cd">More...</a><br /></td></tr>
244 <tr class="separator:gae3e115fd41d9ac29c7a13b0c213bc2cd"><td class="memSeparator" colspan="2">&#160;</td></tr>
245 <tr class="memitem:gacd981b2206b02eb1c4573a0f328d7819"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#gacd981b2206b02eb1c4573a0f328d7819">pio_sm_clkdiv_restart</a> (<a class="el" href="structpio__hw__t.html">PIO</a> pio, uint sm)</td></tr>
246 <tr class="memdesc:gacd981b2206b02eb1c4573a0f328d7819"><td class="mdescLeft">&#160;</td><td class="mdescRight">Restart a state machine's clock divider from a phase of 0.  <a href="group__hardware__pio.html#gacd981b2206b02eb1c4573a0f328d7819">More...</a><br /></td></tr>
247 <tr class="separator:gacd981b2206b02eb1c4573a0f328d7819"><td class="memSeparator" colspan="2">&#160;</td></tr>
248 <tr class="memitem:ga63e13f639ae50ee9cb8afeceba6bb118"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#ga63e13f639ae50ee9cb8afeceba6bb118">pio_clkdiv_restart_sm_mask</a> (<a class="el" href="structpio__hw__t.html">PIO</a> pio, uint32_t mask)</td></tr>
249 <tr class="memdesc:ga63e13f639ae50ee9cb8afeceba6bb118"><td class="mdescLeft">&#160;</td><td class="mdescRight">Restart multiple state machines' clock dividers from a phase of 0.  <a href="group__hardware__pio.html#ga63e13f639ae50ee9cb8afeceba6bb118">More...</a><br /></td></tr>
250 <tr class="separator:ga63e13f639ae50ee9cb8afeceba6bb118"><td class="memSeparator" colspan="2">&#160;</td></tr>
251 <tr class="memitem:gac3797a9f7e80606152eb44af9ca96398"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#gac3797a9f7e80606152eb44af9ca96398">pio_enable_sm_mask_in_sync</a> (<a class="el" href="structpio__hw__t.html">PIO</a> pio, uint32_t mask)</td></tr>
252 <tr class="memdesc:gac3797a9f7e80606152eb44af9ca96398"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enable multiple PIO state machines synchronizing their clock dividers.  <a href="group__hardware__pio.html#gac3797a9f7e80606152eb44af9ca96398">More...</a><br /></td></tr>
253 <tr class="separator:gac3797a9f7e80606152eb44af9ca96398"><td class="memSeparator" colspan="2">&#160;</td></tr>
254 <tr class="memitem:gafe39a664c508e08ef4c74b7c3c38bc07"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#gafe39a664c508e08ef4c74b7c3c38bc07">pio_set_irq0_source_enabled</a> (<a class="el" href="structpio__hw__t.html">PIO</a> pio, <a class="el" href="group__hardware__pio.html#gab9e9aed4bb165a040415ae342e0902fe">pio_interrupt_source_t</a> source, bool enabled)</td></tr>
255 <tr class="memdesc:gafe39a664c508e08ef4c74b7c3c38bc07"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enable/Disable a single source on a PIO's IRQ 0.  <a href="group__hardware__pio.html#gafe39a664c508e08ef4c74b7c3c38bc07">More...</a><br /></td></tr>
256 <tr class="separator:gafe39a664c508e08ef4c74b7c3c38bc07"><td class="memSeparator" colspan="2">&#160;</td></tr>
257 <tr class="memitem:ga4369e665ee8d2db58a83eccad65c917c"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#ga4369e665ee8d2db58a83eccad65c917c">pio_set_irq1_source_enabled</a> (<a class="el" href="structpio__hw__t.html">PIO</a> pio, <a class="el" href="group__hardware__pio.html#gab9e9aed4bb165a040415ae342e0902fe">pio_interrupt_source_t</a> source, bool enabled)</td></tr>
258 <tr class="memdesc:ga4369e665ee8d2db58a83eccad65c917c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enable/Disable a single source on a PIO's IRQ 1.  <a href="group__hardware__pio.html#ga4369e665ee8d2db58a83eccad65c917c">More...</a><br /></td></tr>
259 <tr class="separator:ga4369e665ee8d2db58a83eccad65c917c"><td class="memSeparator" colspan="2">&#160;</td></tr>
260 <tr class="memitem:ga81259bc71fd3bd81b96e47f9f4ea7b67"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#ga81259bc71fd3bd81b96e47f9f4ea7b67">pio_set_irq0_source_mask_enabled</a> (<a class="el" href="structpio__hw__t.html">PIO</a> pio, uint32_t source_mask, bool enabled)</td></tr>
261 <tr class="memdesc:ga81259bc71fd3bd81b96e47f9f4ea7b67"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enable/Disable multiple sources on a PIO's IRQ 0.  <a href="group__hardware__pio.html#ga81259bc71fd3bd81b96e47f9f4ea7b67">More...</a><br /></td></tr>
262 <tr class="separator:ga81259bc71fd3bd81b96e47f9f4ea7b67"><td class="memSeparator" colspan="2">&#160;</td></tr>
263 <tr class="memitem:gae39150dd6910d2776484526059911b79"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#gae39150dd6910d2776484526059911b79">pio_set_irq1_source_mask_enabled</a> (<a class="el" href="structpio__hw__t.html">PIO</a> pio, uint32_t source_mask, bool enabled)</td></tr>
264 <tr class="memdesc:gae39150dd6910d2776484526059911b79"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enable/Disable multiple sources on a PIO's IRQ 1.  <a href="group__hardware__pio.html#gae39150dd6910d2776484526059911b79">More...</a><br /></td></tr>
265 <tr class="separator:gae39150dd6910d2776484526059911b79"><td class="memSeparator" colspan="2">&#160;</td></tr>
266 <tr class="memitem:ga06d0fd918247a86e8394afac67cf6992"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#ga06d0fd918247a86e8394afac67cf6992">pio_set_irqn_source_enabled</a> (<a class="el" href="structpio__hw__t.html">PIO</a> pio, uint irq_index, <a class="el" href="group__hardware__pio.html#gab9e9aed4bb165a040415ae342e0902fe">pio_interrupt_source_t</a> source, bool enabled)</td></tr>
267 <tr class="memdesc:ga06d0fd918247a86e8394afac67cf6992"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enable/Disable a single source on a PIO's specified (0/1) IRQ index.  <a href="group__hardware__pio.html#ga06d0fd918247a86e8394afac67cf6992">More...</a><br /></td></tr>
268 <tr class="separator:ga06d0fd918247a86e8394afac67cf6992"><td class="memSeparator" colspan="2">&#160;</td></tr>
269 <tr class="memitem:gafc173eb3cb980ed3c823384e42e265bb"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#gafc173eb3cb980ed3c823384e42e265bb">pio_set_irqn_source_mask_enabled</a> (<a class="el" href="structpio__hw__t.html">PIO</a> pio, uint irq_index, uint32_t source_mask, bool enabled)</td></tr>
270 <tr class="memdesc:gafc173eb3cb980ed3c823384e42e265bb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enable/Disable multiple sources on a PIO's specified (0/1) IRQ index.  <a href="group__hardware__pio.html#gafc173eb3cb980ed3c823384e42e265bb">More...</a><br /></td></tr>
271 <tr class="separator:gafc173eb3cb980ed3c823384e42e265bb"><td class="memSeparator" colspan="2">&#160;</td></tr>
272 <tr class="memitem:gaa92c20b2d08f3b8a6bc35cd602a092e4"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#gaa92c20b2d08f3b8a6bc35cd602a092e4">pio_interrupt_get</a> (<a class="el" href="structpio__hw__t.html">PIO</a> pio, uint pio_interrupt_num)</td></tr>
273 <tr class="memdesc:gaa92c20b2d08f3b8a6bc35cd602a092e4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Determine if a particular PIO interrupt is set.  <a href="group__hardware__pio.html#gaa92c20b2d08f3b8a6bc35cd602a092e4">More...</a><br /></td></tr>
274 <tr class="separator:gaa92c20b2d08f3b8a6bc35cd602a092e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
275 <tr class="memitem:ga6f650eb98640eac2346ff26b46dc378b"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#ga6f650eb98640eac2346ff26b46dc378b">pio_interrupt_clear</a> (<a class="el" href="structpio__hw__t.html">PIO</a> pio, uint pio_interrupt_num)</td></tr>
276 <tr class="memdesc:ga6f650eb98640eac2346ff26b46dc378b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear a particular PIO interrupt.  <a href="group__hardware__pio.html#ga6f650eb98640eac2346ff26b46dc378b">More...</a><br /></td></tr>
277 <tr class="separator:ga6f650eb98640eac2346ff26b46dc378b"><td class="memSeparator" colspan="2">&#160;</td></tr>
278 <tr class="memitem:ga9c0ea409da4fcb98586120b575921c31"><td class="memItemLeft" align="right" valign="top">static uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#ga9c0ea409da4fcb98586120b575921c31">pio_sm_get_pc</a> (<a class="el" href="structpio__hw__t.html">PIO</a> pio, uint sm)</td></tr>
279 <tr class="memdesc:ga9c0ea409da4fcb98586120b575921c31"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the current program counter for a state machine.  <a href="group__hardware__pio.html#ga9c0ea409da4fcb98586120b575921c31">More...</a><br /></td></tr>
280 <tr class="separator:ga9c0ea409da4fcb98586120b575921c31"><td class="memSeparator" colspan="2">&#160;</td></tr>
281 <tr class="memitem:ga800d8949b5d04dfe635d4c12241f0cd2"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#ga800d8949b5d04dfe635d4c12241f0cd2">pio_sm_exec</a> (<a class="el" href="structpio__hw__t.html">PIO</a> pio, uint sm, uint instr)</td></tr>
282 <tr class="memdesc:ga800d8949b5d04dfe635d4c12241f0cd2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Immediately execute an instruction on a state machine.  <a href="group__hardware__pio.html#ga800d8949b5d04dfe635d4c12241f0cd2">More...</a><br /></td></tr>
283 <tr class="separator:ga800d8949b5d04dfe635d4c12241f0cd2"><td class="memSeparator" colspan="2">&#160;</td></tr>
284 <tr class="memitem:gaaa44e504a2abd8ca2c1ee2db91d0652b"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#gaaa44e504a2abd8ca2c1ee2db91d0652b">pio_sm_is_exec_stalled</a> (<a class="el" href="structpio__hw__t.html">PIO</a> pio, uint sm)</td></tr>
285 <tr class="memdesc:gaaa44e504a2abd8ca2c1ee2db91d0652b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Determine if an instruction set by <a class="el" href="group__hardware__pio.html#ga800d8949b5d04dfe635d4c12241f0cd2" title="Immediately execute an instruction on a state machine.">pio_sm_exec()</a> is stalled executing.  <a href="group__hardware__pio.html#gaaa44e504a2abd8ca2c1ee2db91d0652b">More...</a><br /></td></tr>
286 <tr class="separator:gaaa44e504a2abd8ca2c1ee2db91d0652b"><td class="memSeparator" colspan="2">&#160;</td></tr>
287 <tr class="memitem:ga1bf1b296713b76e19b87b59b84136b2c"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#ga1bf1b296713b76e19b87b59b84136b2c">pio_sm_exec_wait_blocking</a> (<a class="el" href="structpio__hw__t.html">PIO</a> pio, uint sm, uint instr)</td></tr>
288 <tr class="memdesc:ga1bf1b296713b76e19b87b59b84136b2c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Immediately execute an instruction on a state machine and wait for it to complete.  <a href="group__hardware__pio.html#ga1bf1b296713b76e19b87b59b84136b2c">More...</a><br /></td></tr>
289 <tr class="separator:ga1bf1b296713b76e19b87b59b84136b2c"><td class="memSeparator" colspan="2">&#160;</td></tr>
290 <tr class="memitem:ga74a681208957ab2bc8c8aafff9bb9f7c"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#ga74a681208957ab2bc8c8aafff9bb9f7c">pio_sm_set_wrap</a> (<a class="el" href="structpio__hw__t.html">PIO</a> pio, uint sm, uint wrap_target, uint wrap)</td></tr>
291 <tr class="memdesc:ga74a681208957ab2bc8c8aafff9bb9f7c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the current wrap configuration for a state machine.  <a href="group__hardware__pio.html#ga74a681208957ab2bc8c8aafff9bb9f7c">More...</a><br /></td></tr>
292 <tr class="separator:ga74a681208957ab2bc8c8aafff9bb9f7c"><td class="memSeparator" colspan="2">&#160;</td></tr>
293 <tr class="memitem:ga7f0190e662c5b6e24d91044b42010ffc"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#ga7f0190e662c5b6e24d91044b42010ffc">pio_sm_set_out_pins</a> (<a class="el" href="structpio__hw__t.html">PIO</a> pio, uint sm, uint out_base, uint out_count)</td></tr>
294 <tr class="memdesc:ga7f0190e662c5b6e24d91044b42010ffc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the current 'out' pins for a state machine.  <a href="group__hardware__pio.html#ga7f0190e662c5b6e24d91044b42010ffc">More...</a><br /></td></tr>
295 <tr class="separator:ga7f0190e662c5b6e24d91044b42010ffc"><td class="memSeparator" colspan="2">&#160;</td></tr>
296 <tr class="memitem:gacaf6ee284dc834fbb742d1eef6180e6c"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#gacaf6ee284dc834fbb742d1eef6180e6c">pio_sm_set_set_pins</a> (<a class="el" href="structpio__hw__t.html">PIO</a> pio, uint sm, uint set_base, uint set_count)</td></tr>
297 <tr class="memdesc:gacaf6ee284dc834fbb742d1eef6180e6c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the current 'set' pins for a state machine.  <a href="group__hardware__pio.html#gacaf6ee284dc834fbb742d1eef6180e6c">More...</a><br /></td></tr>
298 <tr class="separator:gacaf6ee284dc834fbb742d1eef6180e6c"><td class="memSeparator" colspan="2">&#160;</td></tr>
299 <tr class="memitem:gaef50ef92f7ea0666dffe939c0b3fd24c"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#gaef50ef92f7ea0666dffe939c0b3fd24c">pio_sm_set_in_pins</a> (<a class="el" href="structpio__hw__t.html">PIO</a> pio, uint sm, uint in_base)</td></tr>
300 <tr class="memdesc:gaef50ef92f7ea0666dffe939c0b3fd24c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the current 'in' pins for a state machine.  <a href="group__hardware__pio.html#gaef50ef92f7ea0666dffe939c0b3fd24c">More...</a><br /></td></tr>
301 <tr class="separator:gaef50ef92f7ea0666dffe939c0b3fd24c"><td class="memSeparator" colspan="2">&#160;</td></tr>
302 <tr class="memitem:ga87cb36afe5783e2e92bf528b1d50ea07"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#ga87cb36afe5783e2e92bf528b1d50ea07">pio_sm_set_sideset_pins</a> (<a class="el" href="structpio__hw__t.html">PIO</a> pio, uint sm, uint sideset_base)</td></tr>
303 <tr class="memdesc:ga87cb36afe5783e2e92bf528b1d50ea07"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the current 'sideset' pins for a state machine.  <a href="group__hardware__pio.html#ga87cb36afe5783e2e92bf528b1d50ea07">More...</a><br /></td></tr>
304 <tr class="separator:ga87cb36afe5783e2e92bf528b1d50ea07"><td class="memSeparator" colspan="2">&#160;</td></tr>
305 <tr class="memitem:ga97b135c9016b91fbf237c93313d25fd4"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#ga97b135c9016b91fbf237c93313d25fd4">pio_sm_set_jmp_pin</a> (<a class="el" href="structpio__hw__t.html">PIO</a> pio, uint sm, uint pin)</td></tr>
306 <tr class="memdesc:ga97b135c9016b91fbf237c93313d25fd4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the 'jmp' pin for a state machine.  <a href="group__hardware__pio.html#ga97b135c9016b91fbf237c93313d25fd4">More...</a><br /></td></tr>
307 <tr class="separator:ga97b135c9016b91fbf237c93313d25fd4"><td class="memSeparator" colspan="2">&#160;</td></tr>
308 <tr class="memitem:gab48b30da795dcd73b4a998d67a4af235"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#gab48b30da795dcd73b4a998d67a4af235">pio_sm_put</a> (<a class="el" href="structpio__hw__t.html">PIO</a> pio, uint sm, uint32_t data)</td></tr>
309 <tr class="memdesc:gab48b30da795dcd73b4a998d67a4af235"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write a word of data to a state machine's TX FIFO.  <a href="group__hardware__pio.html#gab48b30da795dcd73b4a998d67a4af235">More...</a><br /></td></tr>
310 <tr class="separator:gab48b30da795dcd73b4a998d67a4af235"><td class="memSeparator" colspan="2">&#160;</td></tr>
311 <tr class="memitem:ga6fe6273d63665fdb16964790d55709fa"><td class="memItemLeft" align="right" valign="top">static uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#ga6fe6273d63665fdb16964790d55709fa">pio_sm_get</a> (<a class="el" href="structpio__hw__t.html">PIO</a> pio, uint sm)</td></tr>
312 <tr class="memdesc:ga6fe6273d63665fdb16964790d55709fa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read a word of data from a state machine's RX FIFO.  <a href="group__hardware__pio.html#ga6fe6273d63665fdb16964790d55709fa">More...</a><br /></td></tr>
313 <tr class="separator:ga6fe6273d63665fdb16964790d55709fa"><td class="memSeparator" colspan="2">&#160;</td></tr>
314 <tr class="memitem:ga71e388315eb6a77a6560b77ec13145a4"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#ga71e388315eb6a77a6560b77ec13145a4">pio_sm_is_rx_fifo_full</a> (<a class="el" href="structpio__hw__t.html">PIO</a> pio, uint sm)</td></tr>
315 <tr class="memdesc:ga71e388315eb6a77a6560b77ec13145a4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Determine if a state machine's RX FIFO is full.  <a href="group__hardware__pio.html#ga71e388315eb6a77a6560b77ec13145a4">More...</a><br /></td></tr>
316 <tr class="separator:ga71e388315eb6a77a6560b77ec13145a4"><td class="memSeparator" colspan="2">&#160;</td></tr>
317 <tr class="memitem:gadf404ba44b7f83e79fd6b57b3e2c89df"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#gadf404ba44b7f83e79fd6b57b3e2c89df">pio_sm_is_rx_fifo_empty</a> (<a class="el" href="structpio__hw__t.html">PIO</a> pio, uint sm)</td></tr>
318 <tr class="memdesc:gadf404ba44b7f83e79fd6b57b3e2c89df"><td class="mdescLeft">&#160;</td><td class="mdescRight">Determine if a state machine's RX FIFO is empty.  <a href="group__hardware__pio.html#gadf404ba44b7f83e79fd6b57b3e2c89df">More...</a><br /></td></tr>
319 <tr class="separator:gadf404ba44b7f83e79fd6b57b3e2c89df"><td class="memSeparator" colspan="2">&#160;</td></tr>
320 <tr class="memitem:ga8fa0b87fde0db10be2934de542f9d6c2"><td class="memItemLeft" align="right" valign="top">static uint&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#ga8fa0b87fde0db10be2934de542f9d6c2">pio_sm_get_rx_fifo_level</a> (<a class="el" href="structpio__hw__t.html">PIO</a> pio, uint sm)</td></tr>
321 <tr class="memdesc:ga8fa0b87fde0db10be2934de542f9d6c2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the number of elements currently in a state machine's RX FIFO.  <a href="group__hardware__pio.html#ga8fa0b87fde0db10be2934de542f9d6c2">More...</a><br /></td></tr>
322 <tr class="separator:ga8fa0b87fde0db10be2934de542f9d6c2"><td class="memSeparator" colspan="2">&#160;</td></tr>
323 <tr class="memitem:ga3dbf64343a2fba75549ee7b0351f7e52"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#ga3dbf64343a2fba75549ee7b0351f7e52">pio_sm_is_tx_fifo_full</a> (<a class="el" href="structpio__hw__t.html">PIO</a> pio, uint sm)</td></tr>
324 <tr class="memdesc:ga3dbf64343a2fba75549ee7b0351f7e52"><td class="mdescLeft">&#160;</td><td class="mdescRight">Determine if a state machine's TX FIFO is full.  <a href="group__hardware__pio.html#ga3dbf64343a2fba75549ee7b0351f7e52">More...</a><br /></td></tr>
325 <tr class="separator:ga3dbf64343a2fba75549ee7b0351f7e52"><td class="memSeparator" colspan="2">&#160;</td></tr>
326 <tr class="memitem:gadf4ae3f4a334c1dcac1b62b148508bf2"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#gadf4ae3f4a334c1dcac1b62b148508bf2">pio_sm_is_tx_fifo_empty</a> (<a class="el" href="structpio__hw__t.html">PIO</a> pio, uint sm)</td></tr>
327 <tr class="memdesc:gadf4ae3f4a334c1dcac1b62b148508bf2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Determine if a state machine's TX FIFO is empty.  <a href="group__hardware__pio.html#gadf4ae3f4a334c1dcac1b62b148508bf2">More...</a><br /></td></tr>
328 <tr class="separator:gadf4ae3f4a334c1dcac1b62b148508bf2"><td class="memSeparator" colspan="2">&#160;</td></tr>
329 <tr class="memitem:ga009b3f44f112208114972c32546dfddb"><td class="memItemLeft" align="right" valign="top">static uint&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#ga009b3f44f112208114972c32546dfddb">pio_sm_get_tx_fifo_level</a> (<a class="el" href="structpio__hw__t.html">PIO</a> pio, uint sm)</td></tr>
330 <tr class="memdesc:ga009b3f44f112208114972c32546dfddb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the number of elements currently in a state machine's TX FIFO.  <a href="group__hardware__pio.html#ga009b3f44f112208114972c32546dfddb">More...</a><br /></td></tr>
331 <tr class="separator:ga009b3f44f112208114972c32546dfddb"><td class="memSeparator" colspan="2">&#160;</td></tr>
332 <tr class="memitem:gaee8bfc3409cb8d93cccdeda3961bc377"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#gaee8bfc3409cb8d93cccdeda3961bc377">pio_sm_put_blocking</a> (<a class="el" href="structpio__hw__t.html">PIO</a> pio, uint sm, uint32_t data)</td></tr>
333 <tr class="memdesc:gaee8bfc3409cb8d93cccdeda3961bc377"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write a word of data to a state machine's TX FIFO, blocking if the FIFO is full.  <a href="group__hardware__pio.html#gaee8bfc3409cb8d93cccdeda3961bc377">More...</a><br /></td></tr>
334 <tr class="separator:gaee8bfc3409cb8d93cccdeda3961bc377"><td class="memSeparator" colspan="2">&#160;</td></tr>
335 <tr class="memitem:ga12650f49c110cb1bfd8092ab67210885"><td class="memItemLeft" align="right" valign="top">static uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#ga12650f49c110cb1bfd8092ab67210885">pio_sm_get_blocking</a> (<a class="el" href="structpio__hw__t.html">PIO</a> pio, uint sm)</td></tr>
336 <tr class="memdesc:ga12650f49c110cb1bfd8092ab67210885"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read a word of data from a state machine's RX FIFO, blocking if the FIFO is empty.  <a href="group__hardware__pio.html#ga12650f49c110cb1bfd8092ab67210885">More...</a><br /></td></tr>
337 <tr class="separator:ga12650f49c110cb1bfd8092ab67210885"><td class="memSeparator" colspan="2">&#160;</td></tr>
338 <tr class="memitem:ga46af88f03a0c5abe4d55d45c5b2ccfb7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#ga46af88f03a0c5abe4d55d45c5b2ccfb7">pio_sm_drain_tx_fifo</a> (<a class="el" href="structpio__hw__t.html">PIO</a> pio, uint sm)</td></tr>
339 <tr class="memdesc:ga46af88f03a0c5abe4d55d45c5b2ccfb7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Empty out a state machine's TX FIFO.  <a href="group__hardware__pio.html#ga46af88f03a0c5abe4d55d45c5b2ccfb7">More...</a><br /></td></tr>
340 <tr class="separator:ga46af88f03a0c5abe4d55d45c5b2ccfb7"><td class="memSeparator" colspan="2">&#160;</td></tr>
341 <tr class="memitem:gaa9d1d18a7decd0068b8a2a9159c9fd34"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#gaa9d1d18a7decd0068b8a2a9159c9fd34">pio_sm_set_clkdiv_int_frac</a> (<a class="el" href="structpio__hw__t.html">PIO</a> pio, uint sm, uint16_t div_int, uint8_t div_frac)</td></tr>
342 <tr class="memdesc:gaa9d1d18a7decd0068b8a2a9159c9fd34"><td class="mdescLeft">&#160;</td><td class="mdescRight">set the current clock divider for a state machine using a 16:8 fraction  <a href="group__hardware__pio.html#gaa9d1d18a7decd0068b8a2a9159c9fd34">More...</a><br /></td></tr>
343 <tr class="separator:gaa9d1d18a7decd0068b8a2a9159c9fd34"><td class="memSeparator" colspan="2">&#160;</td></tr>
344 <tr class="memitem:ga88df92ae6a4ef3320b6565117aca885b"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#ga88df92ae6a4ef3320b6565117aca885b">pio_sm_set_clkdiv</a> (<a class="el" href="structpio__hw__t.html">PIO</a> pio, uint sm, float div)</td></tr>
345 <tr class="memdesc:ga88df92ae6a4ef3320b6565117aca885b"><td class="mdescLeft">&#160;</td><td class="mdescRight">set the current clock divider for a state machine  <a href="group__hardware__pio.html#ga88df92ae6a4ef3320b6565117aca885b">More...</a><br /></td></tr>
346 <tr class="separator:ga88df92ae6a4ef3320b6565117aca885b"><td class="memSeparator" colspan="2">&#160;</td></tr>
347 <tr class="memitem:gab4cb36e85ee8807b51fd03021adff9ca"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#gab4cb36e85ee8807b51fd03021adff9ca">pio_sm_clear_fifos</a> (<a class="el" href="structpio__hw__t.html">PIO</a> pio, uint sm)</td></tr>
348 <tr class="memdesc:gab4cb36e85ee8807b51fd03021adff9ca"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear a state machine's TX and RX FIFOs.  <a href="group__hardware__pio.html#gab4cb36e85ee8807b51fd03021adff9ca">More...</a><br /></td></tr>
349 <tr class="separator:gab4cb36e85ee8807b51fd03021adff9ca"><td class="memSeparator" colspan="2">&#160;</td></tr>
350 <tr class="memitem:ga1286f306263b413a8002c9db2b433d8b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#ga1286f306263b413a8002c9db2b433d8b">pio_sm_set_pins</a> (<a class="el" href="structpio__hw__t.html">PIO</a> pio, uint sm, uint32_t pin_values)</td></tr>
351 <tr class="memdesc:ga1286f306263b413a8002c9db2b433d8b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Use a state machine to set a value on all pins for the PIO instance.  <a href="group__hardware__pio.html#ga1286f306263b413a8002c9db2b433d8b">More...</a><br /></td></tr>
352 <tr class="separator:ga1286f306263b413a8002c9db2b433d8b"><td class="memSeparator" colspan="2">&#160;</td></tr>
353 <tr class="memitem:ga963167ca42f67f79ec5de6b47d6027d5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#ga963167ca42f67f79ec5de6b47d6027d5">pio_sm_set_pins_with_mask</a> (<a class="el" href="structpio__hw__t.html">PIO</a> pio, uint sm, uint32_t pin_values, uint32_t pin_mask)</td></tr>
354 <tr class="memdesc:ga963167ca42f67f79ec5de6b47d6027d5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Use a state machine to set a value on multiple pins for the PIO instance.  <a href="group__hardware__pio.html#ga963167ca42f67f79ec5de6b47d6027d5">More...</a><br /></td></tr>
355 <tr class="separator:ga963167ca42f67f79ec5de6b47d6027d5"><td class="memSeparator" colspan="2">&#160;</td></tr>
356 <tr class="memitem:ga8269f1ef4cb1e4b3b957d5f1fa6fc623"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#ga8269f1ef4cb1e4b3b957d5f1fa6fc623">pio_sm_set_pindirs_with_mask</a> (<a class="el" href="structpio__hw__t.html">PIO</a> pio, uint sm, uint32_t pin_dirs, uint32_t pin_mask)</td></tr>
357 <tr class="memdesc:ga8269f1ef4cb1e4b3b957d5f1fa6fc623"><td class="mdescLeft">&#160;</td><td class="mdescRight">Use a state machine to set the pin directions for multiple pins for the PIO instance.  <a href="group__hardware__pio.html#ga8269f1ef4cb1e4b3b957d5f1fa6fc623">More...</a><br /></td></tr>
358 <tr class="separator:ga8269f1ef4cb1e4b3b957d5f1fa6fc623"><td class="memSeparator" colspan="2">&#160;</td></tr>
359 <tr class="memitem:gaf5c965ef1ca21684630c8be2cf3e52e7"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#gaf5c965ef1ca21684630c8be2cf3e52e7">pio_sm_set_consecutive_pindirs</a> (<a class="el" href="structpio__hw__t.html">PIO</a> pio, uint sm, uint pins_base, uint pin_count, bool is_out)</td></tr>
360 <tr class="memdesc:gaf5c965ef1ca21684630c8be2cf3e52e7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Use a state machine to set the same pin direction for multiple consecutive pins for the PIO instance.  <a href="group__hardware__pio.html#gaf5c965ef1ca21684630c8be2cf3e52e7">More...</a><br /></td></tr>
361 <tr class="separator:gaf5c965ef1ca21684630c8be2cf3e52e7"><td class="memSeparator" colspan="2">&#160;</td></tr>
362 <tr class="memitem:gaa75bc8b2060929ec2b2599da8081a99b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#gaa75bc8b2060929ec2b2599da8081a99b">pio_sm_claim</a> (<a class="el" href="structpio__hw__t.html">PIO</a> pio, uint sm)</td></tr>
363 <tr class="memdesc:gaa75bc8b2060929ec2b2599da8081a99b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Mark a state machine as used.  <a href="group__hardware__pio.html#gaa75bc8b2060929ec2b2599da8081a99b">More...</a><br /></td></tr>
364 <tr class="separator:gaa75bc8b2060929ec2b2599da8081a99b"><td class="memSeparator" colspan="2">&#160;</td></tr>
365 <tr class="memitem:ga4c25ad61f15a76499997102e126cbdfd"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#ga4c25ad61f15a76499997102e126cbdfd">pio_claim_sm_mask</a> (<a class="el" href="structpio__hw__t.html">PIO</a> pio, uint sm_mask)</td></tr>
366 <tr class="memdesc:ga4c25ad61f15a76499997102e126cbdfd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Mark multiple state machines as used.  <a href="group__hardware__pio.html#ga4c25ad61f15a76499997102e126cbdfd">More...</a><br /></td></tr>
367 <tr class="separator:ga4c25ad61f15a76499997102e126cbdfd"><td class="memSeparator" colspan="2">&#160;</td></tr>
368 <tr class="memitem:ga62328112de918932e4ed0955ce0054ab"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#ga62328112de918932e4ed0955ce0054ab">pio_sm_unclaim</a> (<a class="el" href="structpio__hw__t.html">PIO</a> pio, uint sm)</td></tr>
369 <tr class="memdesc:ga62328112de918932e4ed0955ce0054ab"><td class="mdescLeft">&#160;</td><td class="mdescRight">Mark a state machine as no longer used.  <a href="group__hardware__pio.html#ga62328112de918932e4ed0955ce0054ab">More...</a><br /></td></tr>
370 <tr class="separator:ga62328112de918932e4ed0955ce0054ab"><td class="memSeparator" colspan="2">&#160;</td></tr>
371 <tr class="memitem:ga604c071438065c46c9f4f21bdb61befd"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#ga604c071438065c46c9f4f21bdb61befd">pio_claim_unused_sm</a> (<a class="el" href="structpio__hw__t.html">PIO</a> pio, bool required)</td></tr>
372 <tr class="memdesc:ga604c071438065c46c9f4f21bdb61befd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Claim a free state machine on a PIO instance.  <a href="group__hardware__pio.html#ga604c071438065c46c9f4f21bdb61befd">More...</a><br /></td></tr>
373 <tr class="separator:ga604c071438065c46c9f4f21bdb61befd"><td class="memSeparator" colspan="2">&#160;</td></tr>
374 <tr class="memitem:ga699fb7272e3cb5ab76a84fbf3640325d"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#ga699fb7272e3cb5ab76a84fbf3640325d">pio_sm_is_claimed</a> (<a class="el" href="structpio__hw__t.html">PIO</a> pio, uint sm)</td></tr>
375 <tr class="memdesc:ga699fb7272e3cb5ab76a84fbf3640325d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Determine if a PIO state machine is claimed.  <a href="group__hardware__pio.html#ga699fb7272e3cb5ab76a84fbf3640325d">More...</a><br /></td></tr>
376 <tr class="separator:ga699fb7272e3cb5ab76a84fbf3640325d"><td class="memSeparator" colspan="2">&#160;</td></tr>
377 <tr class="memitem:ga03abf744baa28e22a46fcf81452c47cf"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#ga03abf744baa28e22a46fcf81452c47cf">pio_claim_free_sm_and_add_program</a> (const <a class="el" href="structpio__program.html">pio_program_t</a> *program, <a class="el" href="structpio__hw__t.html">PIO</a> *pio, uint *sm, uint *offset)</td></tr>
378 <tr class="memdesc:ga03abf744baa28e22a46fcf81452c47cf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Finds a PIO and statemachine and adds a program into PIO memory.  <a href="group__hardware__pio.html#ga03abf744baa28e22a46fcf81452c47cf">More...</a><br /></td></tr>
379 <tr class="separator:ga03abf744baa28e22a46fcf81452c47cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
380 <tr class="memitem:ga53c3bbe939b3c58585d0e19ffe91e18e"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#ga53c3bbe939b3c58585d0e19ffe91e18e">pio_claim_free_sm_and_add_program_for_gpio_range</a> (const <a class="el" href="structpio__program.html">pio_program_t</a> *program, <a class="el" href="structpio__hw__t.html">PIO</a> *pio, uint *sm, uint *offset, uint gpio_base, uint gpio_count, bool set_gpio_base)</td></tr>
381 <tr class="memdesc:ga53c3bbe939b3c58585d0e19ffe91e18e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Finds a PIO and statemachine and adds a program into PIO memory.  <a href="group__hardware__pio.html#ga53c3bbe939b3c58585d0e19ffe91e18e">More...</a><br /></td></tr>
382 <tr class="separator:ga53c3bbe939b3c58585d0e19ffe91e18e"><td class="memSeparator" colspan="2">&#160;</td></tr>
383 <tr class="memitem:gaa8178ef68166e58260da3989bc5f06bd"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#gaa8178ef68166e58260da3989bc5f06bd">pio_remove_program_and_unclaim_sm</a> (const <a class="el" href="structpio__program.html">pio_program_t</a> *program, <a class="el" href="structpio__hw__t.html">PIO</a> pio, uint sm, uint offset)</td></tr>
384 <tr class="memdesc:gaa8178ef68166e58260da3989bc5f06bd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Removes a program from PIO memory and unclaims the state machine.  <a href="group__hardware__pio.html#gaa8178ef68166e58260da3989bc5f06bd">More...</a><br /></td></tr>
385 <tr class="separator:gaa8178ef68166e58260da3989bc5f06bd"><td class="memSeparator" colspan="2">&#160;</td></tr>
386 <tr class="memitem:ga29b350d20174699f5594fc46a35ca699"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#ga29b350d20174699f5594fc46a35ca699">pio_get_irq_num</a> (<a class="el" href="structpio__hw__t.html">PIO</a> pio, uint irqn)</td></tr>
387 <tr class="memdesc:ga29b350d20174699f5594fc46a35ca699"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return an IRQ for a PIO hardware instance.  <a href="group__hardware__pio.html#ga29b350d20174699f5594fc46a35ca699">More...</a><br /></td></tr>
388 <tr class="separator:ga29b350d20174699f5594fc46a35ca699"><td class="memSeparator" colspan="2">&#160;</td></tr>
389 <tr class="memitem:ga89d26de56d58a6a1022dba7f21e84b4e"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="group__hardware__pio.html#gab9e9aed4bb165a040415ae342e0902fe">pio_interrupt_source_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#ga89d26de56d58a6a1022dba7f21e84b4e">pio_get_tx_fifo_not_full_interrupt_source</a> (uint sm)</td></tr>
390 <tr class="memdesc:ga89d26de56d58a6a1022dba7f21e84b4e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the interrupt source for a state machines TX FIFO not full interrupt.  <a href="group__hardware__pio.html#ga89d26de56d58a6a1022dba7f21e84b4e">More...</a><br /></td></tr>
391 <tr class="separator:ga89d26de56d58a6a1022dba7f21e84b4e"><td class="memSeparator" colspan="2">&#160;</td></tr>
392 <tr class="memitem:gad821de9c14a966fc5c16321ed5df92b4"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="group__hardware__pio.html#gab9e9aed4bb165a040415ae342e0902fe">pio_interrupt_source_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hardware__pio.html#gad821de9c14a966fc5c16321ed5df92b4">pio_get_rx_fifo_not_empty_interrupt_source</a> (uint sm)</td></tr>
393 <tr class="memdesc:gad821de9c14a966fc5c16321ed5df92b4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the interrupt source for a state machines RX FIFO not empty interrupt.  <a href="group__hardware__pio.html#gad821de9c14a966fc5c16321ed5df92b4">More...</a><br /></td></tr>
394 <tr class="separator:gad821de9c14a966fc5c16321ed5df92b4"><td class="memSeparator" colspan="2">&#160;</td></tr>
395 </table>
396 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
397 <p >Programmable I/O (PIO) API. </p>
398 <p >A programmable input/output block (PIO) is a versatile hardware interface which can support a number of different IO standards.</p>
399 <p >There are two PIO blocks in the RP2040. </p>
400 <p >There are three PIO blocks in the RP2350 </p>
401 <p >Each PIO is programmable in the same sense as a processor: the four state machines independently execute short, sequential programs, to manipulate GPIOs and transfer data. Unlike a general purpose processor, PIO state machines are highly specialised for IO, with a focus on determinism, precise timing, and close integration with fixed-function hardware. Each state machine is equipped with:</p><ul>
402 <li>Two 32-bit shift registers â€“ either direction, any shift count</li>
403 <li>Two 32-bit scratch registers</li>
404 <li>4×32 bit bus FIFO in each direction (TX/RX), reconfigurable as 8×32 in a single direction</li>
405 <li>Fractional clock divider (16 integer, 8 fractional bits)</li>
406 <li>Flexible GPIO mapping</li>
407 <li>DMA interface, sustained throughput up to 1 word per clock from system DMA</li>
408 <li>IRQ flag set/clear/status</li>
409 </ul>
410 <p >Full details of the PIO can be found in the appropriate RP-series datasheet. Note that there are additional features in the RP2350 PIO implementation that mean care should be taken when writing PIO code that needs to run on both the RP2040 and the RP2350. </p>
411 <h2 class="groupheader">Macro Definition Documentation</h2>
412 <a id="ga916d05e71da7f2173cd22b46bbfa0a11" name="ga916d05e71da7f2173cd22b46bbfa0a11"></a>
413 <h2 class="memtitle"><span class="permalink"><a href="#ga916d05e71da7f2173cd22b46bbfa0a11">&#9670;&nbsp;</a></span>pio0</h2>
414
415 <div class="memitem">
416 <div class="memproto">
417       <table class="memname">
418         <tr>
419           <td class="memname">#define pio0&#160;&#160;&#160;pio0_hw</td>
420         </tr>
421       </table>
422 </div><div class="memdoc">
423 <p >Identifier for the first (PIO 0) hardware PIO instance (for use in PIO functions).</p>
424 <p >e.g. pio_gpio_init(pio0, 5) </p>
425
426 </div>
427 </div>
428 <a id="ga923a261ba19804c404900228e99c9522" name="ga923a261ba19804c404900228e99c9522"></a>
429 <h2 class="memtitle"><span class="permalink"><a href="#ga923a261ba19804c404900228e99c9522">&#9670;&nbsp;</a></span>pio1</h2>
430
431 <div class="memitem">
432 <div class="memproto">
433       <table class="memname">
434         <tr>
435           <td class="memname">#define pio1&#160;&#160;&#160;pio1_hw</td>
436         </tr>
437       </table>
438 </div><div class="memdoc">
439 <p >Identifier for the second (PIO 1) hardware PIO instance (for use in PIO functions).</p>
440 <p >e.g. pio_gpio_init(pio1, 5) </p>
441
442 </div>
443 </div>
444 <a id="gab9eca729acb2cebdb1abb7793d0f5bdf" name="gab9eca729acb2cebdb1abb7793d0f5bdf"></a>
445 <h2 class="memtitle"><span class="permalink"><a href="#gab9eca729acb2cebdb1abb7793d0f5bdf">&#9670;&nbsp;</a></span>PIO_DREQ_NUM</h2>
446
447 <div class="memitem">
448 <div class="memproto">
449       <table class="memname">
450         <tr>
451           <td class="memname">#define PIO_DREQ_NUM</td>
452           <td>(</td>
453           <td class="paramtype">&#160;</td>
454           <td class="paramname">pio, </td>
455         </tr>
456         <tr>
457           <td class="paramkey"></td>
458           <td></td>
459           <td class="paramtype">&#160;</td>
460           <td class="paramname">sm, </td>
461         </tr>
462         <tr>
463           <td class="paramkey"></td>
464           <td></td>
465           <td class="paramtype">&#160;</td>
466           <td class="paramname">is_tx&#160;</td>
467         </tr>
468         <tr>
469           <td></td>
470           <td>)</td>
471           <td></td><td></td>
472         </tr>
473       </table>
474 </div><div class="memdoc">
475
476 <p>Returns the <a class="el" href="group__hardware__dma.html#ga8def0ea481095c94f3a0dd0b4fed999e">dreq_num_t</a> used for pacing DMA transfers to or from a given state machine's FIFOs on this PIO instance. If is_tx is true, then it is for transfers to the PIO state machine TX FIFO else for transfers from the PIO state machine RX FIFO. </p>
477 <p >Note this macro is intended to resolve at compile time, and does no parameter checking </p>
478
479 </div>
480 </div>
481 <a id="gaa26de7b3ef34fb86138bf376ab152577" name="gaa26de7b3ef34fb86138bf376ab152577"></a>
482 <h2 class="memtitle"><span class="permalink"><a href="#gaa26de7b3ef34fb86138bf376ab152577">&#9670;&nbsp;</a></span>PIO_FUNCSEL_NUM</h2>
483
484 <div class="memitem">
485 <div class="memproto">
486       <table class="memname">
487         <tr>
488           <td class="memname">#define PIO_FUNCSEL_NUM</td>
489           <td>(</td>
490           <td class="paramtype">&#160;</td>
491           <td class="paramname">pio, </td>
492         </tr>
493         <tr>
494           <td class="paramkey"></td>
495           <td></td>
496           <td class="paramtype">&#160;</td>
497           <td class="paramname">gpio&#160;</td>
498         </tr>
499         <tr>
500           <td></td>
501           <td>)</td>
502           <td></td><td></td>
503         </tr>
504       </table>
505 </div><div class="memdoc">
506
507 <p>Returns <a class="el" href="group__hardware__gpio.html#ga89b8e5e8a9c515260dea8d1fa96e72c9">gpio_function_t</a> needed to select the PIO function for the given PIO instance on the given GPIO. </p>
508 <p >Note this macro is intended to resolve at compile time, and does no parameter checking </p>
509
510 </div>
511 </div>
512 <a id="ga06134c14db82b7927d96faeb07ab0e8b" name="ga06134c14db82b7927d96faeb07ab0e8b"></a>
513 <h2 class="memtitle"><span class="permalink"><a href="#ga06134c14db82b7927d96faeb07ab0e8b">&#9670;&nbsp;</a></span>PIO_INSTANCE</h2>
514
515 <div class="memitem">
516 <div class="memproto">
517       <table class="memname">
518         <tr>
519           <td class="memname">#define PIO_INSTANCE</td>
520           <td>(</td>
521           <td class="paramtype">&#160;</td>
522           <td class="paramname">instance</td><td>)</td>
523           <td></td>
524         </tr>
525       </table>
526 </div><div class="memdoc">
527
528 <p>Returns the PIO instance with the given PIO number. </p>
529 <p >Note this macro is intended to resolve at compile time, and does no parameter checking </p>
530
531 </div>
532 </div>
533 <a id="gaeb939c4541517980acf9de3ae4010624" name="gaeb939c4541517980acf9de3ae4010624"></a>
534 <h2 class="memtitle"><span class="permalink"><a href="#gaeb939c4541517980acf9de3ae4010624">&#9670;&nbsp;</a></span>PIO_IRQ_NUM</h2>
535
536 <div class="memitem">
537 <div class="memproto">
538       <table class="memname">
539         <tr>
540           <td class="memname">#define PIO_IRQ_NUM</td>
541           <td>(</td>
542           <td class="paramtype">&#160;</td>
543           <td class="paramname">pio, </td>
544         </tr>
545         <tr>
546           <td class="paramkey"></td>
547           <td></td>
548           <td class="paramtype">&#160;</td>
549           <td class="paramname">irqn&#160;</td>
550         </tr>
551         <tr>
552           <td></td>
553           <td>)</td>
554           <td></td><td></td>
555         </tr>
556       </table>
557 </div><div class="memdoc">
558
559 <p>Returns the <a class="el" href="group__hardware__irq.html#gaf30862f51b5994ffd5863176a185d137">irq_num_t</a> for processor interrupts from the given PIO instance. </p>
560 <p >Note this macro is intended to resolve at compile time, and does no parameter checking </p>
561
562 </div>
563 </div>
564 <a id="ga79fcbff988c01df8285f05ce6ad3a86d" name="ga79fcbff988c01df8285f05ce6ad3a86d"></a>
565 <h2 class="memtitle"><span class="permalink"><a href="#ga79fcbff988c01df8285f05ce6ad3a86d">&#9670;&nbsp;</a></span>PIO_NUM</h2>
566
567 <div class="memitem">
568 <div class="memproto">
569       <table class="memname">
570         <tr>
571           <td class="memname">#define PIO_NUM</td>
572           <td>(</td>
573           <td class="paramtype">&#160;</td>
574           <td class="paramname">pio</td><td>)</td>
575           <td></td>
576         </tr>
577       </table>
578 </div><div class="memdoc">
579
580 <p>Returns the PIO number for a PIO instance. </p>
581 <p >Note this macro is intended to resolve at compile time, and does no parameter checking </p>
582
583 </div>
584 </div>
585 <h2 class="groupheader">Enumeration Type Documentation</h2>
586 <a id="ga7d415b966abbc1c25315d0775d093356" name="ga7d415b966abbc1c25315d0775d093356"></a>
587 <h2 class="memtitle"><span class="permalink"><a href="#ga7d415b966abbc1c25315d0775d093356">&#9670;&nbsp;</a></span>pio_fifo_join</h2>
588
589 <div class="memitem">
590 <div class="memproto">
591       <table class="memname">
592         <tr>
593           <td class="memname">enum <a class="el" href="group__hardware__pio.html#ga7d415b966abbc1c25315d0775d093356">pio_fifo_join</a></td>
594         </tr>
595       </table>
596 </div><div class="memdoc">
597
598 <p>FIFO join states. </p>
599 <table class="fieldtable">
600 <tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="gga7d415b966abbc1c25315d0775d093356a1ecaeaf5a3d81338a276b30f019b05c4" name="gga7d415b966abbc1c25315d0775d093356a1ecaeaf5a3d81338a276b30f019b05c4"></a>PIO_FIFO_JOIN_NONE&#160;</td><td class="fielddoc"><p >TX FIFO length=4 is used for transmit, RX FIFO length=4 is used for receive. </p>
601 </td></tr>
602 <tr><td class="fieldname"><a id="gga7d415b966abbc1c25315d0775d093356a22a2cbf467019804e134a38d40249f50" name="gga7d415b966abbc1c25315d0775d093356a22a2cbf467019804e134a38d40249f50"></a>PIO_FIFO_JOIN_TX&#160;</td><td class="fielddoc"><p >TX FIFO length=8 is used for transmit, RX FIFO is disabled. </p>
603 </td></tr>
604 <tr><td class="fieldname"><a id="gga7d415b966abbc1c25315d0775d093356ab2cff7409baac4928fec469fe5b44ed0" name="gga7d415b966abbc1c25315d0775d093356ab2cff7409baac4928fec469fe5b44ed0"></a>PIO_FIFO_JOIN_RX&#160;</td><td class="fielddoc"><p >RX FIFO length=8 is used for receive, TX FIFO is disabled. </p>
605 </td></tr>
606 </table>
607
608 </div>
609 </div>
610 <a id="ga0e60c768ea29f296b5ef40c02211bbcc" name="ga0e60c768ea29f296b5ef40c02211bbcc"></a>
611 <h2 class="memtitle"><span class="permalink"><a href="#ga0e60c768ea29f296b5ef40c02211bbcc">&#9670;&nbsp;</a></span>pio_interrupt_source</h2>
612
613 <div class="memitem">
614 <div class="memproto">
615       <table class="memname">
616         <tr>
617           <td class="memname">enum <a class="el" href="group__hardware__pio.html#ga0e60c768ea29f296b5ef40c02211bbcc">pio_interrupt_source</a></td>
618         </tr>
619       </table>
620 </div><div class="memdoc">
621
622 <p>PIO interrupt source numbers for pio related IRQs. </p>
623 <table class="fieldtable">
624 <tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="gga0e60c768ea29f296b5ef40c02211bbcca23610bee821f3f8fecbfad0e48c6d742" name="gga0e60c768ea29f296b5ef40c02211bbcca23610bee821f3f8fecbfad0e48c6d742"></a>pis_interrupt0&#160;</td><td class="fielddoc"><p >PIO interrupt 0 is raised. </p>
625 </td></tr>
626 <tr><td class="fieldname"><a id="gga0e60c768ea29f296b5ef40c02211bbcca6cd394d2b05ae5eec188d5283d16dc49" name="gga0e60c768ea29f296b5ef40c02211bbcca6cd394d2b05ae5eec188d5283d16dc49"></a>pis_interrupt1&#160;</td><td class="fielddoc"><p >PIO interrupt 1 is raised. </p>
627 </td></tr>
628 <tr><td class="fieldname"><a id="gga0e60c768ea29f296b5ef40c02211bbcca066e1cafa42ed6638c93cc09c9b1a0d4" name="gga0e60c768ea29f296b5ef40c02211bbcca066e1cafa42ed6638c93cc09c9b1a0d4"></a>pis_interrupt2&#160;</td><td class="fielddoc"><p >PIO interrupt 2 is raised. </p>
629 </td></tr>
630 <tr><td class="fieldname"><a id="gga0e60c768ea29f296b5ef40c02211bbcca94cf23106019a84873d6db52d1e8470f" name="gga0e60c768ea29f296b5ef40c02211bbcca94cf23106019a84873d6db52d1e8470f"></a>pis_interrupt3&#160;</td><td class="fielddoc"><p >PIO interrupt 3 is raised. </p>
631 </td></tr>
632 <tr><td class="fieldname"><a id="gga0e60c768ea29f296b5ef40c02211bbcca924b2a1d4b6d257ac13608729dcf9ee1" name="gga0e60c768ea29f296b5ef40c02211bbcca924b2a1d4b6d257ac13608729dcf9ee1"></a>pis_sm0_tx_fifo_not_full&#160;</td><td class="fielddoc"><p >State machine 0 TX FIFO is not full. </p>
633 </td></tr>
634 <tr><td class="fieldname"><a id="gga0e60c768ea29f296b5ef40c02211bbcca27452b43a8d5d40ab0ba25a195681d48" name="gga0e60c768ea29f296b5ef40c02211bbcca27452b43a8d5d40ab0ba25a195681d48"></a>pis_sm1_tx_fifo_not_full&#160;</td><td class="fielddoc"><p >State machine 1 TX FIFO is not full. </p>
635 </td></tr>
636 <tr><td class="fieldname"><a id="gga0e60c768ea29f296b5ef40c02211bbcca214d3bdb6ebc516c4094c4eb476d514d" name="gga0e60c768ea29f296b5ef40c02211bbcca214d3bdb6ebc516c4094c4eb476d514d"></a>pis_sm2_tx_fifo_not_full&#160;</td><td class="fielddoc"><p >State machine 2 TX FIFO is not full. </p>
637 </td></tr>
638 <tr><td class="fieldname"><a id="gga0e60c768ea29f296b5ef40c02211bbcca463c09bec3151921a18be2c548e97297" name="gga0e60c768ea29f296b5ef40c02211bbcca463c09bec3151921a18be2c548e97297"></a>pis_sm3_tx_fifo_not_full&#160;</td><td class="fielddoc"><p >State machine 3 TX FIFO is not full. </p>
639 </td></tr>
640 <tr><td class="fieldname"><a id="gga0e60c768ea29f296b5ef40c02211bbcca959e0b9e484719a0af543fb87a365d52" name="gga0e60c768ea29f296b5ef40c02211bbcca959e0b9e484719a0af543fb87a365d52"></a>pis_sm0_rx_fifo_not_empty&#160;</td><td class="fielddoc"><p >State machine 0 RX FIFO is not empty. </p>
641 </td></tr>
642 <tr><td class="fieldname"><a id="gga0e60c768ea29f296b5ef40c02211bbcca85ee2774a8e5dfaf61d3866a81cb381c" name="gga0e60c768ea29f296b5ef40c02211bbcca85ee2774a8e5dfaf61d3866a81cb381c"></a>pis_sm1_rx_fifo_not_empty&#160;</td><td class="fielddoc"><p >State machine 1 RX FIFO is not empty. </p>
643 </td></tr>
644 <tr><td class="fieldname"><a id="gga0e60c768ea29f296b5ef40c02211bbcca6d7f4a904cb634fd3f30f033874393ac" name="gga0e60c768ea29f296b5ef40c02211bbcca6d7f4a904cb634fd3f30f033874393ac"></a>pis_sm2_rx_fifo_not_empty&#160;</td><td class="fielddoc"><p >State machine 2 RX FIFO is not empty. </p>
645 </td></tr>
646 <tr><td class="fieldname"><a id="gga0e60c768ea29f296b5ef40c02211bbccaacce0dbc391b9bb05965b7bc1b6f7698" name="gga0e60c768ea29f296b5ef40c02211bbccaacce0dbc391b9bb05965b7bc1b6f7698"></a>pis_sm3_rx_fifo_not_empty&#160;</td><td class="fielddoc"><p >State machine 3 RX FIFO is not empty. </p>
647 </td></tr>
648 </table>
649
650 </div>
651 </div>
652 <h2 class="groupheader">Function Documentation</h2>
653 <a id="gaefbd086e8e96fee073438dac3c20334c" name="gaefbd086e8e96fee073438dac3c20334c"></a>
654 <h2 class="memtitle"><span class="permalink"><a href="#gaefbd086e8e96fee073438dac3c20334c">&#9670;&nbsp;</a></span>pio_add_program()</h2>
655
656 <div class="memitem">
657 <div class="memproto">
658       <table class="memname">
659         <tr>
660           <td class="memname">int pio_add_program </td>
661           <td>(</td>
662           <td class="paramtype"><a class="el" href="structpio__hw__t.html">PIO</a>&#160;</td>
663           <td class="paramname"><em>pio</em>, </td>
664         </tr>
665         <tr>
666           <td class="paramkey"></td>
667           <td></td>
668           <td class="paramtype">const <a class="el" href="structpio__program.html">pio_program_t</a> *&#160;</td>
669           <td class="paramname"><em>program</em>&#160;</td>
670         </tr>
671         <tr>
672           <td></td>
673           <td>)</td>
674           <td></td><td></td>
675         </tr>
676       </table>
677 </div><div class="memdoc">
678
679 <p>Attempt to load the program. </p>
680 <dl class="section see"><dt>See also</dt><dd><a class="el" href="group__hardware__pio.html#gaa8aafe966a46f4de9be59f73cae65a4b" title="Determine whether the given program can (at the time of the call) be loaded onto the PIO instance.">pio_can_add_program()</a> if you need to check whether the program can be loaded</dd></dl>
681 <dl class="params"><dt>Parameters</dt><dd>
682   <table class="params">
683     <tr><td class="paramname">pio</td><td>The PIO instance; e.g. <a class="el" href="group__hardware__pio.html#ga916d05e71da7f2173cd22b46bbfa0a11">pio0</a> or <a class="el" href="group__hardware__pio.html#ga923a261ba19804c404900228e99c9522">pio1</a> </td></tr>
684     <tr><td class="paramname">program</td><td>the program definition </td></tr>
685   </table>
686   </dd>
687 </dl>
688 <dl class="section return"><dt>Returns</dt><dd>the instruction memory offset the program is loaded at, or negative for error (for backwards compatibility with prior SDK the error value is -1 i.e. PICO_ERROR_GENERIC) </dd></dl>
689
690 </div>
691 </div>
692 <a id="ga12948478935f817218b64e1db3a8ebad" name="ga12948478935f817218b64e1db3a8ebad"></a>
693 <h2 class="memtitle"><span class="permalink"><a href="#ga12948478935f817218b64e1db3a8ebad">&#9670;&nbsp;</a></span>pio_add_program_at_offset()</h2>
694
695 <div class="memitem">
696 <div class="memproto">
697       <table class="memname">
698         <tr>
699           <td class="memname">int pio_add_program_at_offset </td>
700           <td>(</td>
701           <td class="paramtype"><a class="el" href="structpio__hw__t.html">PIO</a>&#160;</td>
702           <td class="paramname"><em>pio</em>, </td>
703         </tr>
704         <tr>
705           <td class="paramkey"></td>
706           <td></td>
707           <td class="paramtype">const <a class="el" href="structpio__program.html">pio_program_t</a> *&#160;</td>
708           <td class="paramname"><em>program</em>, </td>
709         </tr>
710         <tr>
711           <td class="paramkey"></td>
712           <td></td>
713           <td class="paramtype">uint&#160;</td>
714           <td class="paramname"><em>offset</em>&#160;</td>
715         </tr>
716         <tr>
717           <td></td>
718           <td>)</td>
719           <td></td><td></td>
720         </tr>
721       </table>
722 </div><div class="memdoc">
723
724 <p>Attempt to load the program at the specified instruction memory offset. </p>
725 <dl class="section see"><dt>See also</dt><dd><a class="el" href="group__hardware__pio.html#gaafac789d94b0727bb02ea83a8786897f" title="Determine whether the given program can (at the time of the call) be loaded onto the PIO instance sta...">pio_can_add_program_at_offset()</a> if you need to check whether the program can be loaded</dd></dl>
726 <dl class="params"><dt>Parameters</dt><dd>
727   <table class="params">
728     <tr><td class="paramname">pio</td><td>The PIO instance; e.g. <a class="el" href="group__hardware__pio.html#ga916d05e71da7f2173cd22b46bbfa0a11">pio0</a> or <a class="el" href="group__hardware__pio.html#ga923a261ba19804c404900228e99c9522">pio1</a> </td></tr>
729     <tr><td class="paramname">program</td><td>the program definition </td></tr>
730     <tr><td class="paramname">offset</td><td>the instruction memory offset wanted for the start of the program </td></tr>
731   </table>
732   </dd>
733 </dl>
734 <dl class="section return"><dt>Returns</dt><dd>the instruction memory offset the program is loaded at, or negative for error (for backwards compatibility with prior SDK the error value is -1 i.e. PICO_ERROR_GENERIC) </dd></dl>
735
736 </div>
737 </div>
738 <a id="gaa8aafe966a46f4de9be59f73cae65a4b" name="gaa8aafe966a46f4de9be59f73cae65a4b"></a>
739 <h2 class="memtitle"><span class="permalink"><a href="#gaa8aafe966a46f4de9be59f73cae65a4b">&#9670;&nbsp;</a></span>pio_can_add_program()</h2>
740
741 <div class="memitem">
742 <div class="memproto">
743       <table class="memname">
744         <tr>
745           <td class="memname">bool pio_can_add_program </td>
746           <td>(</td>
747           <td class="paramtype"><a class="el" href="structpio__hw__t.html">PIO</a>&#160;</td>
748           <td class="paramname"><em>pio</em>, </td>
749         </tr>
750         <tr>
751           <td class="paramkey"></td>
752           <td></td>
753           <td class="paramtype">const <a class="el" href="structpio__program.html">pio_program_t</a> *&#160;</td>
754           <td class="paramname"><em>program</em>&#160;</td>
755         </tr>
756         <tr>
757           <td></td>
758           <td>)</td>
759           <td></td><td></td>
760         </tr>
761       </table>
762 </div><div class="memdoc">
763
764 <p>Determine whether the given program can (at the time of the call) be loaded onto the PIO instance. </p>
765 <dl class="params"><dt>Parameters</dt><dd>
766   <table class="params">
767     <tr><td class="paramname">pio</td><td>The PIO instance; e.g. <a class="el" href="group__hardware__pio.html#ga916d05e71da7f2173cd22b46bbfa0a11">pio0</a> or <a class="el" href="group__hardware__pio.html#ga923a261ba19804c404900228e99c9522">pio1</a> </td></tr>
768     <tr><td class="paramname">program</td><td>the program definition </td></tr>
769   </table>
770   </dd>
771 </dl>
772 <dl class="section return"><dt>Returns</dt><dd>true if the program can be loaded; false if there is not suitable space in the instruction memory </dd></dl>
773
774 </div>
775 </div>
776 <a id="gaafac789d94b0727bb02ea83a8786897f" name="gaafac789d94b0727bb02ea83a8786897f"></a>
777 <h2 class="memtitle"><span class="permalink"><a href="#gaafac789d94b0727bb02ea83a8786897f">&#9670;&nbsp;</a></span>pio_can_add_program_at_offset()</h2>
778
779 <div class="memitem">
780 <div class="memproto">
781       <table class="memname">
782         <tr>
783           <td class="memname">bool pio_can_add_program_at_offset </td>
784           <td>(</td>
785           <td class="paramtype"><a class="el" href="structpio__hw__t.html">PIO</a>&#160;</td>
786           <td class="paramname"><em>pio</em>, </td>
787         </tr>
788         <tr>
789           <td class="paramkey"></td>
790           <td></td>
791           <td class="paramtype">const <a class="el" href="structpio__program.html">pio_program_t</a> *&#160;</td>
792           <td class="paramname"><em>program</em>, </td>
793         </tr>
794         <tr>
795           <td class="paramkey"></td>
796           <td></td>
797           <td class="paramtype">uint&#160;</td>
798           <td class="paramname"><em>offset</em>&#160;</td>
799         </tr>
800         <tr>
801           <td></td>
802           <td>)</td>
803           <td></td><td></td>
804         </tr>
805       </table>
806 </div><div class="memdoc">
807
808 <p>Determine whether the given program can (at the time of the call) be loaded onto the PIO instance starting at a particular location. </p>
809 <dl class="params"><dt>Parameters</dt><dd>
810   <table class="params">
811     <tr><td class="paramname">pio</td><td>The PIO instance; e.g. <a class="el" href="group__hardware__pio.html#ga916d05e71da7f2173cd22b46bbfa0a11">pio0</a> or <a class="el" href="group__hardware__pio.html#ga923a261ba19804c404900228e99c9522">pio1</a> </td></tr>
812     <tr><td class="paramname">program</td><td>the program definition </td></tr>
813     <tr><td class="paramname">offset</td><td>the instruction memory offset wanted for the start of the program </td></tr>
814   </table>
815   </dd>
816 </dl>
817 <dl class="section return"><dt>Returns</dt><dd>true if the program can be loaded at that location; false if there is not space in the instruction memory </dd></dl>
818
819 </div>
820 </div>
821 <a id="ga03abf744baa28e22a46fcf81452c47cf" name="ga03abf744baa28e22a46fcf81452c47cf"></a>
822 <h2 class="memtitle"><span class="permalink"><a href="#ga03abf744baa28e22a46fcf81452c47cf">&#9670;&nbsp;</a></span>pio_claim_free_sm_and_add_program()</h2>
823
824 <div class="memitem">
825 <div class="memproto">
826       <table class="memname">
827         <tr>
828           <td class="memname">bool pio_claim_free_sm_and_add_program </td>
829           <td>(</td>
830           <td class="paramtype">const <a class="el" href="structpio__program.html">pio_program_t</a> *&#160;</td>
831           <td class="paramname"><em>program</em>, </td>
832         </tr>
833         <tr>
834           <td class="paramkey"></td>
835           <td></td>
836           <td class="paramtype"><a class="el" href="structpio__hw__t.html">PIO</a> *&#160;</td>
837           <td class="paramname"><em>pio</em>, </td>
838         </tr>
839         <tr>
840           <td class="paramkey"></td>
841           <td></td>
842           <td class="paramtype">uint *&#160;</td>
843           <td class="paramname"><em>sm</em>, </td>
844         </tr>
845         <tr>
846           <td class="paramkey"></td>
847           <td></td>
848           <td class="paramtype">uint *&#160;</td>
849           <td class="paramname"><em>offset</em>&#160;</td>
850         </tr>
851         <tr>
852           <td></td>
853           <td>)</td>
854           <td></td><td></td>
855         </tr>
856       </table>
857 </div><div class="memdoc">
858
859 <p>Finds a PIO and statemachine and adds a program into PIO memory. </p>
860 <dl class="params"><dt>Parameters</dt><dd>
861   <table class="params">
862     <tr><td class="paramname">program</td><td>PIO program to add </td></tr>
863     <tr><td class="paramname">pio</td><td>Returns the PIO hardware instance or NULL if no PIO is available </td></tr>
864     <tr><td class="paramname">sm</td><td>Returns the index of the PIO state machine that was claimed </td></tr>
865     <tr><td class="paramname">offset</td><td>Returns the instruction memory offset of the start of the program </td></tr>
866   </table>
867   </dd>
868 </dl>
869 <dl class="section return"><dt>Returns</dt><dd>true on success, false otherwise </dd></dl>
870 <dl class="section see"><dt>See also</dt><dd>pio_remove_program_unclaim_sm </dd></dl>
871
872 </div>
873 </div>
874 <a id="ga53c3bbe939b3c58585d0e19ffe91e18e" name="ga53c3bbe939b3c58585d0e19ffe91e18e"></a>
875 <h2 class="memtitle"><span class="permalink"><a href="#ga53c3bbe939b3c58585d0e19ffe91e18e">&#9670;&nbsp;</a></span>pio_claim_free_sm_and_add_program_for_gpio_range()</h2>
876
877 <div class="memitem">
878 <div class="memproto">
879       <table class="memname">
880         <tr>
881           <td class="memname">bool pio_claim_free_sm_and_add_program_for_gpio_range </td>
882           <td>(</td>
883           <td class="paramtype">const <a class="el" href="structpio__program.html">pio_program_t</a> *&#160;</td>
884           <td class="paramname"><em>program</em>, </td>
885         </tr>
886         <tr>
887           <td class="paramkey"></td>
888           <td></td>
889           <td class="paramtype"><a class="el" href="structpio__hw__t.html">PIO</a> *&#160;</td>
890           <td class="paramname"><em>pio</em>, </td>
891         </tr>
892         <tr>
893           <td class="paramkey"></td>
894           <td></td>
895           <td class="paramtype">uint *&#160;</td>
896           <td class="paramname"><em>sm</em>, </td>
897         </tr>
898         <tr>
899           <td class="paramkey"></td>
900           <td></td>
901           <td class="paramtype">uint *&#160;</td>
902           <td class="paramname"><em>offset</em>, </td>
903         </tr>
904         <tr>
905           <td class="paramkey"></td>
906           <td></td>
907           <td class="paramtype">uint&#160;</td>
908           <td class="paramname"><em>gpio_base</em>, </td>
909         </tr>
910         <tr>
911           <td class="paramkey"></td>
912           <td></td>
913           <td class="paramtype">uint&#160;</td>
914           <td class="paramname"><em>gpio_count</em>, </td>
915         </tr>
916         <tr>
917           <td class="paramkey"></td>
918           <td></td>
919           <td class="paramtype">bool&#160;</td>
920           <td class="paramname"><em>set_gpio_base</em>&#160;</td>
921         </tr>
922         <tr>
923           <td></td>
924           <td>)</td>
925           <td></td><td></td>
926         </tr>
927       </table>
928 </div><div class="memdoc">
929
930 <p>Finds a PIO and statemachine and adds a program into PIO memory. </p>
931 <p >This variation of <a class="el" href="group__hardware__pio.html#ga03abf744baa28e22a46fcf81452c47cf">pio_claim_free_sm_and_add_program</a> is useful on RP2350 QFN80 where the "GPIO Base" must be set per PIO instance to either address the 32 GPIOs (0-&gt;31) or the 32 GPIOS (16-47). No single PIO instance can interact with both pins 0-&gt;15 or 32-&gt;47 at the same time.</p>
932 <p >This method takes additional information about the GPIO pins needed (via gpi_base and gpio_count), and optionally will set the GPIO base (</p><dl class="section see"><dt>See also</dt><dd><a class="el" href="group__hardware__pio.html#ga332210f0e594b24bf64f4bb1c8f49be3" title="Set the base GPIO base for the PIO instance.">pio_set_gpio_base</a>) of an unused PIO instance if necessary</dd></dl>
933 <dl class="params"><dt>Parameters</dt><dd>
934   <table class="params">
935     <tr><td class="paramname">program</td><td>PIO program to add </td></tr>
936     <tr><td class="paramname">pio</td><td>Returns the PIO hardware instance or NULL if no PIO is available </td></tr>
937     <tr><td class="paramname">sm</td><td>Returns the index of the PIO state machine that was claimed </td></tr>
938     <tr><td class="paramname">offset</td><td>Returns the instruction memory offset of the start of the program </td></tr>
939     <tr><td class="paramname">gpio_base</td><td>the lowest GPIO number required </td></tr>
940     <tr><td class="paramname">gpio_count</td><td>the count of GPIOs required </td></tr>
941     <tr><td class="paramname">set_gpio_base</td><td>if there is no free SM on a PIO instance with the right GPIO base, and there IS an unused PIO instance, then that PIO will be reconfigured so that this method can succeed</td></tr>
942   </table>
943   </dd>
944 </dl>
945 <dl class="section return"><dt>Returns</dt><dd>true on success, false otherwise </dd></dl>
946 <dl class="section see"><dt>See also</dt><dd>pio_remove_program_unclaim_sm </dd></dl>
947
948 </div>
949 </div>
950 <a id="ga4c25ad61f15a76499997102e126cbdfd" name="ga4c25ad61f15a76499997102e126cbdfd"></a>
951 <h2 class="memtitle"><span class="permalink"><a href="#ga4c25ad61f15a76499997102e126cbdfd">&#9670;&nbsp;</a></span>pio_claim_sm_mask()</h2>
952
953 <div class="memitem">
954 <div class="memproto">
955       <table class="memname">
956         <tr>
957           <td class="memname">void pio_claim_sm_mask </td>
958           <td>(</td>
959           <td class="paramtype"><a class="el" href="structpio__hw__t.html">PIO</a>&#160;</td>
960           <td class="paramname"><em>pio</em>, </td>
961         </tr>
962         <tr>
963           <td class="paramkey"></td>
964           <td></td>
965           <td class="paramtype">uint&#160;</td>
966           <td class="paramname"><em>sm_mask</em>&#160;</td>
967         </tr>
968         <tr>
969           <td></td>
970           <td>)</td>
971           <td></td><td></td>
972         </tr>
973       </table>
974 </div><div class="memdoc">
975
976 <p>Mark multiple state machines as used. </p>
977 <p >Method for cooperative claiming of hardware. Will cause a panic if any of the state machines are already claimed. Use of this method by libraries detects accidental configurations that would fail in unpredictable ways.</p>
978 <dl class="params"><dt>Parameters</dt><dd>
979   <table class="params">
980     <tr><td class="paramname">pio</td><td>The PIO instance; e.g. <a class="el" href="group__hardware__pio.html#ga916d05e71da7f2173cd22b46bbfa0a11">pio0</a> or <a class="el" href="group__hardware__pio.html#ga923a261ba19804c404900228e99c9522">pio1</a> </td></tr>
981     <tr><td class="paramname">sm_mask</td><td>Mask of state machine indexes </td></tr>
982   </table>
983   </dd>
984 </dl>
985
986 </div>
987 </div>
988 <a id="ga604c071438065c46c9f4f21bdb61befd" name="ga604c071438065c46c9f4f21bdb61befd"></a>
989 <h2 class="memtitle"><span class="permalink"><a href="#ga604c071438065c46c9f4f21bdb61befd">&#9670;&nbsp;</a></span>pio_claim_unused_sm()</h2>
990
991 <div class="memitem">
992 <div class="memproto">
993       <table class="memname">
994         <tr>
995           <td class="memname">int pio_claim_unused_sm </td>
996           <td>(</td>
997           <td class="paramtype"><a class="el" href="structpio__hw__t.html">PIO</a>&#160;</td>
998           <td class="paramname"><em>pio</em>, </td>
999         </tr>
1000         <tr>
1001           <td class="paramkey"></td>
1002           <td></td>
1003           <td class="paramtype">bool&#160;</td>
1004           <td class="paramname"><em>required</em>&#160;</td>
1005         </tr>
1006         <tr>
1007           <td></td>
1008           <td>)</td>
1009           <td></td><td></td>
1010         </tr>
1011       </table>
1012 </div><div class="memdoc">
1013
1014 <p>Claim a free state machine on a PIO instance. </p>
1015 <dl class="params"><dt>Parameters</dt><dd>
1016   <table class="params">
1017     <tr><td class="paramname">pio</td><td>The PIO instance; e.g. <a class="el" href="group__hardware__pio.html#ga916d05e71da7f2173cd22b46bbfa0a11">pio0</a> or <a class="el" href="group__hardware__pio.html#ga923a261ba19804c404900228e99c9522">pio1</a> </td></tr>
1018     <tr><td class="paramname">required</td><td>if true the function will panic if none are available </td></tr>
1019   </table>
1020   </dd>
1021 </dl>
1022 <dl class="section return"><dt>Returns</dt><dd>the state machine index or negative if required was false, and none were free (for backwards compatibility with prior SDK the error value is -1 i.e. PICO_ERROR_GENERIC) </dd></dl>
1023
1024 </div>
1025 </div>
1026 <a id="ga850396a2a2925bbcc97247a629ca5bd2" name="ga850396a2a2925bbcc97247a629ca5bd2"></a>
1027 <h2 class="memtitle"><span class="permalink"><a href="#ga850396a2a2925bbcc97247a629ca5bd2">&#9670;&nbsp;</a></span>pio_clear_instruction_memory()</h2>
1028
1029 <div class="memitem">
1030 <div class="memproto">
1031       <table class="memname">
1032         <tr>
1033           <td class="memname">void pio_clear_instruction_memory </td>
1034           <td>(</td>
1035           <td class="paramtype"><a class="el" href="structpio__hw__t.html">PIO</a>&#160;</td>
1036           <td class="paramname"><em>pio</em></td><td>)</td>
1037           <td></td>
1038         </tr>
1039       </table>
1040 </div><div class="memdoc">
1041
1042 <p>Clears all of a PIO instance's instruction memory. </p>
1043 <dl class="params"><dt>Parameters</dt><dd>
1044   <table class="params">
1045     <tr><td class="paramname">pio</td><td>The PIO instance; e.g. <a class="el" href="group__hardware__pio.html#ga916d05e71da7f2173cd22b46bbfa0a11">pio0</a> or <a class="el" href="group__hardware__pio.html#ga923a261ba19804c404900228e99c9522">pio1</a> </td></tr>
1046   </table>
1047   </dd>
1048 </dl>
1049
1050 </div>
1051 </div>
1052 <a id="ga63e13f639ae50ee9cb8afeceba6bb118" name="ga63e13f639ae50ee9cb8afeceba6bb118"></a>
1053 <h2 class="memtitle"><span class="permalink"><a href="#ga63e13f639ae50ee9cb8afeceba6bb118">&#9670;&nbsp;</a></span>pio_clkdiv_restart_sm_mask()</h2>
1054
1055 <div class="memitem">
1056 <div class="memproto">
1057 <table class="mlabels">
1058   <tr>
1059   <td class="mlabels-left">
1060       <table class="memname">
1061         <tr>
1062           <td class="memname">static void pio_clkdiv_restart_sm_mask </td>
1063           <td>(</td>
1064           <td class="paramtype"><a class="el" href="structpio__hw__t.html">PIO</a>&#160;</td>
1065           <td class="paramname"><em>pio</em>, </td>
1066         </tr>
1067         <tr>
1068           <td class="paramkey"></td>
1069           <td></td>
1070           <td class="paramtype">uint32_t&#160;</td>
1071           <td class="paramname"><em>mask</em>&#160;</td>
1072         </tr>
1073         <tr>
1074           <td></td>
1075           <td>)</td>
1076           <td></td><td></td>
1077         </tr>
1078       </table>
1079   </td>
1080   <td class="mlabels-right">
1081 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
1082   </tr>
1083 </table>
1084 </div><div class="memdoc">
1085
1086 <p>Restart multiple state machines' clock dividers from a phase of 0. </p>
1087 <p >Each state machine's clock divider is a free-running piece of hardware, that generates a pattern of clock enable pulses for the state machine, based <em>only</em> on the configured integer/fractional divisor. The pattern of running/halted cycles slows the state machine's execution to some controlled rate.</p>
1088 <p >This function simultaneously clears the integer and fractional phase accumulators of multiple state machines' clock dividers. If these state machines all have the same integer and fractional divisors configured, their clock dividers will run in precise deterministic lockstep from this point.</p>
1089 <p >With their execution clocks synchronised in this way, it is then safe to e.g. have multiple state machines performing a 'wait irq' on the same flag, and all clear it on the same cycle.</p>
1090 <p >Also note that this function can be called whilst state machines are running (e.g. if you have just changed the clock divisors of some state machines and wish to resynchronise them), and that disabling a state machine does not halt its clock divider: that is, if multiple state machines have their clocks synchronised, you can safely disable and re-enable one of the state machines without losing synchronisation.</p>
1091 <dl class="params"><dt>Parameters</dt><dd>
1092   <table class="params">
1093     <tr><td class="paramname">pio</td><td>The PIO instance; e.g. <a class="el" href="group__hardware__pio.html#ga916d05e71da7f2173cd22b46bbfa0a11">pio0</a> or <a class="el" href="group__hardware__pio.html#ga923a261ba19804c404900228e99c9522">pio1</a> </td></tr>
1094     <tr><td class="paramname">mask</td><td>bit mask of state machine indexes to modify the enabled state of </td></tr>
1095   </table>
1096   </dd>
1097 </dl>
1098
1099 </div>
1100 </div>
1101 <a id="gac3797a9f7e80606152eb44af9ca96398" name="gac3797a9f7e80606152eb44af9ca96398"></a>
1102 <h2 class="memtitle"><span class="permalink"><a href="#gac3797a9f7e80606152eb44af9ca96398">&#9670;&nbsp;</a></span>pio_enable_sm_mask_in_sync()</h2>
1103
1104 <div class="memitem">
1105 <div class="memproto">
1106 <table class="mlabels">
1107   <tr>
1108   <td class="mlabels-left">
1109       <table class="memname">
1110         <tr>
1111           <td class="memname">static void pio_enable_sm_mask_in_sync </td>
1112           <td>(</td>
1113           <td class="paramtype"><a class="el" href="structpio__hw__t.html">PIO</a>&#160;</td>
1114           <td class="paramname"><em>pio</em>, </td>
1115         </tr>
1116         <tr>
1117           <td class="paramkey"></td>
1118           <td></td>
1119           <td class="paramtype">uint32_t&#160;</td>
1120           <td class="paramname"><em>mask</em>&#160;</td>
1121         </tr>
1122         <tr>
1123           <td></td>
1124           <td>)</td>
1125           <td></td><td></td>
1126         </tr>
1127       </table>
1128   </td>
1129   <td class="mlabels-right">
1130 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
1131   </tr>
1132 </table>
1133 </div><div class="memdoc">
1134
1135 <p>Enable multiple PIO state machines synchronizing their clock dividers. </p>
1136 <p >This is equivalent to calling both <a class="el" href="group__hardware__pio.html#gaf726f77ee21f5373cadf064a4e0b4935" title="Enable or disable multiple PIO state machines.">pio_set_sm_mask_enabled()</a> and <a class="el" href="group__hardware__pio.html#ga63e13f639ae50ee9cb8afeceba6bb118" title="Restart multiple state machines&#39; clock dividers from a phase of 0.">pio_clkdiv_restart_sm_mask()</a> on the <em>same</em> clock cycle. All state machines specified by 'mask' are started simultaneously and, assuming they have the same clock divisors, their divided clocks will stay precisely synchronised.</p>
1137 <dl class="params"><dt>Parameters</dt><dd>
1138   <table class="params">
1139     <tr><td class="paramname">pio</td><td>The PIO instance; e.g. <a class="el" href="group__hardware__pio.html#ga916d05e71da7f2173cd22b46bbfa0a11">pio0</a> or <a class="el" href="group__hardware__pio.html#ga923a261ba19804c404900228e99c9522">pio1</a> </td></tr>
1140     <tr><td class="paramname">mask</td><td>bit mask of state machine indexes to modify the enabled state of </td></tr>
1141   </table>
1142   </dd>
1143 </dl>
1144
1145 </div>
1146 </div>
1147 <a id="ga4091eef7afda5200a3988b9412fe3b3f" name="ga4091eef7afda5200a3988b9412fe3b3f"></a>
1148 <h2 class="memtitle"><span class="permalink"><a href="#ga4091eef7afda5200a3988b9412fe3b3f">&#9670;&nbsp;</a></span>pio_get_dreq()</h2>
1149
1150 <div class="memitem">
1151 <div class="memproto">
1152 <table class="mlabels">
1153   <tr>
1154   <td class="mlabels-left">
1155       <table class="memname">
1156         <tr>
1157           <td class="memname">static uint pio_get_dreq </td>
1158           <td>(</td>
1159           <td class="paramtype"><a class="el" href="structpio__hw__t.html">PIO</a>&#160;</td>
1160           <td class="paramname"><em>pio</em>, </td>
1161         </tr>
1162         <tr>
1163           <td class="paramkey"></td>
1164           <td></td>
1165           <td class="paramtype">uint&#160;</td>
1166           <td class="paramname"><em>sm</em>, </td>
1167         </tr>
1168         <tr>
1169           <td class="paramkey"></td>
1170           <td></td>
1171           <td class="paramtype">bool&#160;</td>
1172           <td class="paramname"><em>is_tx</em>&#160;</td>
1173         </tr>
1174         <tr>
1175           <td></td>
1176           <td>)</td>
1177           <td></td><td></td>
1178         </tr>
1179       </table>
1180   </td>
1181   <td class="mlabels-right">
1182 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
1183   </tr>
1184 </table>
1185 </div><div class="memdoc">
1186
1187 <p>Return the DREQ to use for pacing transfers to/from a particular state machine FIFO. </p>
1188 <dl class="params"><dt>Parameters</dt><dd>
1189   <table class="params">
1190     <tr><td class="paramname">pio</td><td>The PIO instance; e.g. <a class="el" href="group__hardware__pio.html#ga916d05e71da7f2173cd22b46bbfa0a11">pio0</a> or <a class="el" href="group__hardware__pio.html#ga923a261ba19804c404900228e99c9522">pio1</a> </td></tr>
1191     <tr><td class="paramname">sm</td><td>State machine index (0..3) </td></tr>
1192     <tr><td class="paramname">is_tx</td><td>true for sending data to the state machine, false for receiving data from the state machine </td></tr>
1193   </table>
1194   </dd>
1195 </dl>
1196
1197 </div>
1198 </div>
1199 <a id="ga9e150bfd3d43565a01f38a37fa2884d4" name="ga9e150bfd3d43565a01f38a37fa2884d4"></a>
1200 <h2 class="memtitle"><span class="permalink"><a href="#ga9e150bfd3d43565a01f38a37fa2884d4">&#9670;&nbsp;</a></span>pio_get_funcsel()</h2>
1201
1202 <div class="memitem">
1203 <div class="memproto">
1204 <table class="mlabels">
1205   <tr>
1206   <td class="mlabels-left">
1207       <table class="memname">
1208         <tr>
1209           <td class="memname">static uint pio_get_funcsel </td>
1210           <td>(</td>
1211           <td class="paramtype"><a class="el" href="structpio__hw__t.html">PIO</a>&#160;</td>
1212           <td class="paramname"><em>pio</em></td><td>)</td>
1213           <td></td>
1214         </tr>
1215       </table>
1216   </td>
1217   <td class="mlabels-right">
1218 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
1219   </tr>
1220 </table>
1221 </div><div class="memdoc">
1222
1223 <p>Return the funcsel number of a PIO instance. </p>
1224 <dl class="params"><dt>Parameters</dt><dd>
1225   <table class="params">
1226     <tr><td class="paramname">pio</td><td>The PIO instance; e.g. <a class="el" href="group__hardware__pio.html#ga916d05e71da7f2173cd22b46bbfa0a11">pio0</a> or <a class="el" href="group__hardware__pio.html#ga923a261ba19804c404900228e99c9522">pio1</a> </td></tr>
1227   </table>
1228   </dd>
1229 </dl>
1230 <dl class="section return"><dt>Returns</dt><dd>the PIO instance number (0, 1, ...) </dd></dl>
1231 <dl class="section see"><dt>See also</dt><dd>gpio_function </dd></dl>
1232
1233 </div>
1234 </div>
1235 <a id="ga89688fd1a941797cb0cc80dbbc4bbd5f" name="ga89688fd1a941797cb0cc80dbbc4bbd5f"></a>
1236 <h2 class="memtitle"><span class="permalink"><a href="#ga89688fd1a941797cb0cc80dbbc4bbd5f">&#9670;&nbsp;</a></span>pio_get_gpio_base()</h2>
1237
1238 <div class="memitem">
1239 <div class="memproto">
1240 <table class="mlabels">
1241   <tr>
1242   <td class="mlabels-left">
1243       <table class="memname">
1244         <tr>
1245           <td class="memname">static uint pio_get_gpio_base </td>
1246           <td>(</td>
1247           <td class="paramtype"><a class="el" href="structpio__hw__t.html">PIO</a>&#160;</td>
1248           <td class="paramname"><em>pio</em></td><td>)</td>
1249           <td></td>
1250         </tr>
1251       </table>
1252   </td>
1253   <td class="mlabels-right">
1254 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
1255   </tr>
1256 </table>
1257 </div><div class="memdoc">
1258
1259 <p>Return the base GPIO base for the PIO instance. </p>
1260 <p >This method always return 0 in RP2040 </p>
1261 <dl class="params"><dt>Parameters</dt><dd>
1262   <table class="params">
1263     <tr><td class="paramname">pio</td><td>The PIO instance; e.g. <a class="el" href="group__hardware__pio.html#ga916d05e71da7f2173cd22b46bbfa0a11">pio0</a> or <a class="el" href="group__hardware__pio.html#ga923a261ba19804c404900228e99c9522">pio1</a> </td></tr>
1264   </table>
1265   </dd>
1266 </dl>
1267 <dl class="section return"><dt>Returns</dt><dd>the current GPIO base for the PIO instance </dd></dl>
1268
1269 </div>
1270 </div>
1271 <a id="gae86f691914b78d66b1394ae94f3f4aa6" name="gae86f691914b78d66b1394ae94f3f4aa6"></a>
1272 <h2 class="memtitle"><span class="permalink"><a href="#gae86f691914b78d66b1394ae94f3f4aa6">&#9670;&nbsp;</a></span>pio_get_index()</h2>
1273
1274 <div class="memitem">
1275 <div class="memproto">
1276 <table class="mlabels">
1277   <tr>
1278   <td class="mlabels-left">
1279       <table class="memname">
1280         <tr>
1281           <td class="memname">static uint pio_get_index </td>
1282           <td>(</td>
1283           <td class="paramtype"><a class="el" href="structpio__hw__t.html">PIO</a>&#160;</td>
1284           <td class="paramname"><em>pio</em></td><td>)</td>
1285           <td></td>
1286         </tr>
1287       </table>
1288   </td>
1289   <td class="mlabels-right">
1290 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
1291   </tr>
1292 </table>
1293 </div><div class="memdoc">
1294
1295 <p>Return the instance number of a PIO instance. </p>
1296 <dl class="params"><dt>Parameters</dt><dd>
1297   <table class="params">
1298     <tr><td class="paramname">pio</td><td>The PIO instance; e.g. <a class="el" href="group__hardware__pio.html#ga916d05e71da7f2173cd22b46bbfa0a11">pio0</a> or <a class="el" href="group__hardware__pio.html#ga923a261ba19804c404900228e99c9522">pio1</a> </td></tr>
1299   </table>
1300   </dd>
1301 </dl>
1302 <dl class="section return"><dt>Returns</dt><dd>the PIO instance number (0, 1, ...) </dd></dl>
1303
1304 </div>
1305 </div>
1306 <a id="ga151f87205041da11d3c69be5ddbd5653" name="ga151f87205041da11d3c69be5ddbd5653"></a>
1307 <h2 class="memtitle"><span class="permalink"><a href="#ga151f87205041da11d3c69be5ddbd5653">&#9670;&nbsp;</a></span>pio_get_instance()</h2>
1308
1309 <div class="memitem">
1310 <div class="memproto">
1311 <table class="mlabels">
1312   <tr>
1313   <td class="mlabels-left">
1314       <table class="memname">
1315         <tr>
1316           <td class="memname">static <a class="el" href="structpio__hw__t.html">PIO</a> pio_get_instance </td>
1317           <td>(</td>
1318           <td class="paramtype">uint&#160;</td>
1319           <td class="paramname"><em>instance</em></td><td>)</td>
1320           <td></td>
1321         </tr>
1322       </table>
1323   </td>
1324   <td class="mlabels-right">
1325 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
1326   </tr>
1327 </table>
1328 </div><div class="memdoc">
1329
1330 <p>Convert PIO instance to hardware instance. </p>
1331 <dl class="params"><dt>Parameters</dt><dd>
1332   <table class="params">
1333     <tr><td class="paramname">instance</td><td>Instance of PIO, 0 or 1 </td></tr>
1334   </table>
1335   </dd>
1336 </dl>
1337 <dl class="section return"><dt>Returns</dt><dd>the PIO hardware instance </dd></dl>
1338
1339 </div>
1340 </div>
1341 <a id="ga29b350d20174699f5594fc46a35ca699" name="ga29b350d20174699f5594fc46a35ca699"></a>
1342 <h2 class="memtitle"><span class="permalink"><a href="#ga29b350d20174699f5594fc46a35ca699">&#9670;&nbsp;</a></span>pio_get_irq_num()</h2>
1343
1344 <div class="memitem">
1345 <div class="memproto">
1346 <table class="mlabels">
1347   <tr>
1348   <td class="mlabels-left">
1349       <table class="memname">
1350         <tr>
1351           <td class="memname">static int pio_get_irq_num </td>
1352           <td>(</td>
1353           <td class="paramtype"><a class="el" href="structpio__hw__t.html">PIO</a>&#160;</td>
1354           <td class="paramname"><em>pio</em>, </td>
1355         </tr>
1356         <tr>
1357           <td class="paramkey"></td>
1358           <td></td>
1359           <td class="paramtype">uint&#160;</td>
1360           <td class="paramname"><em>irqn</em>&#160;</td>
1361         </tr>
1362         <tr>
1363           <td></td>
1364           <td>)</td>
1365           <td></td><td></td>
1366         </tr>
1367       </table>
1368   </td>
1369   <td class="mlabels-right">
1370 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
1371   </tr>
1372 </table>
1373 </div><div class="memdoc">
1374
1375 <p>Return an IRQ for a PIO hardware instance. </p>
1376 <dl class="params"><dt>Parameters</dt><dd>
1377   <table class="params">
1378     <tr><td class="paramname">pio</td><td>PIO hardware instance </td></tr>
1379     <tr><td class="paramname">irqn</td><td>0 for PIOx_IRQ_0 or 1 for PIOx_IRQ_1 etc where x is the PIO number </td></tr>
1380   </table>
1381   </dd>
1382 </dl>
1383 <dl class="section return"><dt>Returns</dt><dd>The IRQ number to use for the PIO </dd></dl>
1384
1385 </div>
1386 </div>
1387 <a id="gad821de9c14a966fc5c16321ed5df92b4" name="gad821de9c14a966fc5c16321ed5df92b4"></a>
1388 <h2 class="memtitle"><span class="permalink"><a href="#gad821de9c14a966fc5c16321ed5df92b4">&#9670;&nbsp;</a></span>pio_get_rx_fifo_not_empty_interrupt_source()</h2>
1389
1390 <div class="memitem">
1391 <div class="memproto">
1392 <table class="mlabels">
1393   <tr>
1394   <td class="mlabels-left">
1395       <table class="memname">
1396         <tr>
1397           <td class="memname">static <a class="el" href="group__hardware__pio.html#gab9e9aed4bb165a040415ae342e0902fe">pio_interrupt_source_t</a> pio_get_rx_fifo_not_empty_interrupt_source </td>
1398           <td>(</td>
1399           <td class="paramtype">uint&#160;</td>
1400           <td class="paramname"><em>sm</em></td><td>)</td>
1401           <td></td>
1402         </tr>
1403       </table>
1404   </td>
1405   <td class="mlabels-right">
1406 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
1407   </tr>
1408 </table>
1409 </div><div class="memdoc">
1410
1411 <p>Return the interrupt source for a state machines RX FIFO not empty interrupt. </p>
1412 <dl class="params"><dt>Parameters</dt><dd>
1413   <table class="params">
1414     <tr><td class="paramname">sm</td><td>State machine index (0..3) </td></tr>
1415   </table>
1416   </dd>
1417 </dl>
1418 <dl class="section return"><dt>Returns</dt><dd>The interrupt source number for use in <a class="el" href="group__hardware__pio.html#ga06d0fd918247a86e8394afac67cf6992">pio_set_irqn_source_enabled</a> or similar functions </dd></dl>
1419
1420 </div>
1421 </div>
1422 <a id="ga89d26de56d58a6a1022dba7f21e84b4e" name="ga89d26de56d58a6a1022dba7f21e84b4e"></a>
1423 <h2 class="memtitle"><span class="permalink"><a href="#ga89d26de56d58a6a1022dba7f21e84b4e">&#9670;&nbsp;</a></span>pio_get_tx_fifo_not_full_interrupt_source()</h2>
1424
1425 <div class="memitem">
1426 <div class="memproto">
1427 <table class="mlabels">
1428   <tr>
1429   <td class="mlabels-left">
1430       <table class="memname">
1431         <tr>
1432           <td class="memname">static <a class="el" href="group__hardware__pio.html#gab9e9aed4bb165a040415ae342e0902fe">pio_interrupt_source_t</a> pio_get_tx_fifo_not_full_interrupt_source </td>
1433           <td>(</td>
1434           <td class="paramtype">uint&#160;</td>
1435           <td class="paramname"><em>sm</em></td><td>)</td>
1436           <td></td>
1437         </tr>
1438       </table>
1439   </td>
1440   <td class="mlabels-right">
1441 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
1442   </tr>
1443 </table>
1444 </div><div class="memdoc">
1445
1446 <p>Return the interrupt source for a state machines TX FIFO not full interrupt. </p>
1447 <dl class="params"><dt>Parameters</dt><dd>
1448   <table class="params">
1449     <tr><td class="paramname">sm</td><td>State machine index (0..3) </td></tr>
1450   </table>
1451   </dd>
1452 </dl>
1453 <dl class="section return"><dt>Returns</dt><dd>The interrupt source number for use in <a class="el" href="group__hardware__pio.html#ga06d0fd918247a86e8394afac67cf6992">pio_set_irqn_source_enabled</a> or similar functions </dd></dl>
1454
1455 </div>
1456 </div>
1457 <a id="gafa244b1be8f53a329db9d26298e054bb" name="gafa244b1be8f53a329db9d26298e054bb"></a>
1458 <h2 class="memtitle"><span class="permalink"><a href="#gafa244b1be8f53a329db9d26298e054bb">&#9670;&nbsp;</a></span>pio_gpio_init()</h2>
1459
1460 <div class="memitem">
1461 <div class="memproto">
1462 <table class="mlabels">
1463   <tr>
1464   <td class="mlabels-left">
1465       <table class="memname">
1466         <tr>
1467           <td class="memname">static void pio_gpio_init </td>
1468           <td>(</td>
1469           <td class="paramtype"><a class="el" href="structpio__hw__t.html">PIO</a>&#160;</td>
1470           <td class="paramname"><em>pio</em>, </td>
1471         </tr>
1472         <tr>
1473           <td class="paramkey"></td>
1474           <td></td>
1475           <td class="paramtype">uint&#160;</td>
1476           <td class="paramname"><em>pin</em>&#160;</td>
1477         </tr>
1478         <tr>
1479           <td></td>
1480           <td>)</td>
1481           <td></td><td></td>
1482         </tr>
1483       </table>
1484   </td>
1485   <td class="mlabels-right">
1486 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
1487   </tr>
1488 </table>
1489 </div><div class="memdoc">
1490
1491 <p>Setup the function select for a GPIO to use output from the given PIO instance. </p>
1492 <p >PIO appears as an alternate function in the GPIO muxing, just like an SPI or UART. This function configures that multiplexing to connect a given PIO instance to a GPIO. Note that this is not necessary for a state machine to be able to read the <em>input</em> value from a GPIO, but only for it to set the output value or output enable.</p>
1493 <dl class="params"><dt>Parameters</dt><dd>
1494   <table class="params">
1495     <tr><td class="paramname">pio</td><td>The PIO instance; e.g. <a class="el" href="group__hardware__pio.html#ga916d05e71da7f2173cd22b46bbfa0a11">pio0</a> or <a class="el" href="group__hardware__pio.html#ga923a261ba19804c404900228e99c9522">pio1</a> </td></tr>
1496     <tr><td class="paramname">pin</td><td>the GPIO pin whose function select to set </td></tr>
1497   </table>
1498   </dd>
1499 </dl>
1500
1501 </div>
1502 </div>
1503 <a id="ga6f650eb98640eac2346ff26b46dc378b" name="ga6f650eb98640eac2346ff26b46dc378b"></a>
1504 <h2 class="memtitle"><span class="permalink"><a href="#ga6f650eb98640eac2346ff26b46dc378b">&#9670;&nbsp;</a></span>pio_interrupt_clear()</h2>
1505
1506 <div class="memitem">
1507 <div class="memproto">
1508 <table class="mlabels">
1509   <tr>
1510   <td class="mlabels-left">
1511       <table class="memname">
1512         <tr>
1513           <td class="memname">static void pio_interrupt_clear </td>
1514           <td>(</td>
1515           <td class="paramtype"><a class="el" href="structpio__hw__t.html">PIO</a>&#160;</td>
1516           <td class="paramname"><em>pio</em>, </td>
1517         </tr>
1518         <tr>
1519           <td class="paramkey"></td>
1520           <td></td>
1521           <td class="paramtype">uint&#160;</td>
1522           <td class="paramname"><em>pio_interrupt_num</em>&#160;</td>
1523         </tr>
1524         <tr>
1525           <td></td>
1526           <td>)</td>
1527           <td></td><td></td>
1528         </tr>
1529       </table>
1530   </td>
1531   <td class="mlabels-right">
1532 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
1533   </tr>
1534 </table>
1535 </div><div class="memdoc">
1536
1537 <p>Clear a particular PIO interrupt. </p>
1538 <dl class="params"><dt>Parameters</dt><dd>
1539   <table class="params">
1540     <tr><td class="paramname">pio</td><td>The PIO instance; e.g. <a class="el" href="group__hardware__pio.html#ga916d05e71da7f2173cd22b46bbfa0a11">pio0</a> or <a class="el" href="group__hardware__pio.html#ga923a261ba19804c404900228e99c9522">pio1</a> </td></tr>
1541     <tr><td class="paramname">pio_interrupt_num</td><td>the PIO interrupt number 0-7 </td></tr>
1542   </table>
1543   </dd>
1544 </dl>
1545
1546 </div>
1547 </div>
1548 <a id="gaa92c20b2d08f3b8a6bc35cd602a092e4" name="gaa92c20b2d08f3b8a6bc35cd602a092e4"></a>
1549 <h2 class="memtitle"><span class="permalink"><a href="#gaa92c20b2d08f3b8a6bc35cd602a092e4">&#9670;&nbsp;</a></span>pio_interrupt_get()</h2>
1550
1551 <div class="memitem">
1552 <div class="memproto">
1553 <table class="mlabels">
1554   <tr>
1555   <td class="mlabels-left">
1556       <table class="memname">
1557         <tr>
1558           <td class="memname">static bool pio_interrupt_get </td>
1559           <td>(</td>
1560           <td class="paramtype"><a class="el" href="structpio__hw__t.html">PIO</a>&#160;</td>
1561           <td class="paramname"><em>pio</em>, </td>
1562         </tr>
1563         <tr>
1564           <td class="paramkey"></td>
1565           <td></td>
1566           <td class="paramtype">uint&#160;</td>
1567           <td class="paramname"><em>pio_interrupt_num</em>&#160;</td>
1568         </tr>
1569         <tr>
1570           <td></td>
1571           <td>)</td>
1572           <td></td><td></td>
1573         </tr>
1574       </table>
1575   </td>
1576   <td class="mlabels-right">
1577 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
1578   </tr>
1579 </table>
1580 </div><div class="memdoc">
1581
1582 <p>Determine if a particular PIO interrupt is set. </p>
1583 <dl class="params"><dt>Parameters</dt><dd>
1584   <table class="params">
1585     <tr><td class="paramname">pio</td><td>The PIO instance; e.g. <a class="el" href="group__hardware__pio.html#ga916d05e71da7f2173cd22b46bbfa0a11">pio0</a> or <a class="el" href="group__hardware__pio.html#ga923a261ba19804c404900228e99c9522">pio1</a> </td></tr>
1586     <tr><td class="paramname">pio_interrupt_num</td><td>the PIO interrupt number 0-7 </td></tr>
1587   </table>
1588   </dd>
1589 </dl>
1590 <dl class="section return"><dt>Returns</dt><dd>true if corresponding PIO interrupt is currently set </dd></dl>
1591
1592 </div>
1593 </div>
1594 <a id="ga81c77d31aff72655977b658a9c37665e" name="ga81c77d31aff72655977b658a9c37665e"></a>
1595 <h2 class="memtitle"><span class="permalink"><a href="#ga81c77d31aff72655977b658a9c37665e">&#9670;&nbsp;</a></span>pio_remove_program()</h2>
1596
1597 <div class="memitem">
1598 <div class="memproto">
1599       <table class="memname">
1600         <tr>
1601           <td class="memname">void pio_remove_program </td>
1602           <td>(</td>
1603           <td class="paramtype"><a class="el" href="structpio__hw__t.html">PIO</a>&#160;</td>
1604           <td class="paramname"><em>pio</em>, </td>
1605         </tr>
1606         <tr>
1607           <td class="paramkey"></td>
1608           <td></td>
1609           <td class="paramtype">const <a class="el" href="structpio__program.html">pio_program_t</a> *&#160;</td>
1610           <td class="paramname"><em>program</em>, </td>
1611         </tr>
1612         <tr>
1613           <td class="paramkey"></td>
1614           <td></td>
1615           <td class="paramtype">uint&#160;</td>
1616           <td class="paramname"><em>loaded_offset</em>&#160;</td>
1617         </tr>
1618         <tr>
1619           <td></td>
1620           <td>)</td>
1621           <td></td><td></td>
1622         </tr>
1623       </table>
1624 </div><div class="memdoc">
1625
1626 <p>Remove a program from a PIO instance's instruction memory. </p>
1627 <dl class="params"><dt>Parameters</dt><dd>
1628   <table class="params">
1629     <tr><td class="paramname">pio</td><td>The PIO instance; e.g. <a class="el" href="group__hardware__pio.html#ga916d05e71da7f2173cd22b46bbfa0a11">pio0</a> or <a class="el" href="group__hardware__pio.html#ga923a261ba19804c404900228e99c9522">pio1</a> </td></tr>
1630     <tr><td class="paramname">program</td><td>the program definition </td></tr>
1631     <tr><td class="paramname">loaded_offset</td><td>the loaded offset returned when the program was added </td></tr>
1632   </table>
1633   </dd>
1634 </dl>
1635
1636 </div>
1637 </div>
1638 <a id="gaa8178ef68166e58260da3989bc5f06bd" name="gaa8178ef68166e58260da3989bc5f06bd"></a>
1639 <h2 class="memtitle"><span class="permalink"><a href="#gaa8178ef68166e58260da3989bc5f06bd">&#9670;&nbsp;</a></span>pio_remove_program_and_unclaim_sm()</h2>
1640
1641 <div class="memitem">
1642 <div class="memproto">
1643       <table class="memname">
1644         <tr>
1645           <td class="memname">void pio_remove_program_and_unclaim_sm </td>
1646           <td>(</td>
1647           <td class="paramtype">const <a class="el" href="structpio__program.html">pio_program_t</a> *&#160;</td>
1648           <td class="paramname"><em>program</em>, </td>
1649         </tr>
1650         <tr>
1651           <td class="paramkey"></td>
1652           <td></td>
1653           <td class="paramtype"><a class="el" href="structpio__hw__t.html">PIO</a>&#160;</td>
1654           <td class="paramname"><em>pio</em>, </td>
1655         </tr>
1656         <tr>
1657           <td class="paramkey"></td>
1658           <td></td>
1659           <td class="paramtype">uint&#160;</td>
1660           <td class="paramname"><em>sm</em>, </td>
1661         </tr>
1662         <tr>
1663           <td class="paramkey"></td>
1664           <td></td>
1665           <td class="paramtype">uint&#160;</td>
1666           <td class="paramname"><em>offset</em>&#160;</td>
1667         </tr>
1668         <tr>
1669           <td></td>
1670           <td>)</td>
1671           <td></td><td></td>
1672         </tr>
1673       </table>
1674 </div><div class="memdoc">
1675
1676 <p>Removes a program from PIO memory and unclaims the state machine. </p>
1677 <dl class="params"><dt>Parameters</dt><dd>
1678   <table class="params">
1679     <tr><td class="paramname">program</td><td>PIO program to remove from memory </td></tr>
1680     <tr><td class="paramname">pio</td><td>PIO hardware instance being used </td></tr>
1681     <tr><td class="paramname">sm</td><td>PIO state machine that was claimed </td></tr>
1682     <tr><td class="paramname">offset</td><td>offset of the program in PIO memory </td></tr>
1683   </table>
1684   </dd>
1685 </dl>
1686 <dl class="section see"><dt>See also</dt><dd><a class="el" href="group__hardware__pio.html#ga03abf744baa28e22a46fcf81452c47cf" title="Finds a PIO and statemachine and adds a program into PIO memory.">pio_claim_free_sm_and_add_program</a> </dd></dl>
1687
1688 </div>
1689 </div>
1690 <a id="gae3e115fd41d9ac29c7a13b0c213bc2cd" name="gae3e115fd41d9ac29c7a13b0c213bc2cd"></a>
1691 <h2 class="memtitle"><span class="permalink"><a href="#gae3e115fd41d9ac29c7a13b0c213bc2cd">&#9670;&nbsp;</a></span>pio_restart_sm_mask()</h2>
1692
1693 <div class="memitem">
1694 <div class="memproto">
1695 <table class="mlabels">
1696   <tr>
1697   <td class="mlabels-left">
1698       <table class="memname">
1699         <tr>
1700           <td class="memname">static void pio_restart_sm_mask </td>
1701           <td>(</td>
1702           <td class="paramtype"><a class="el" href="structpio__hw__t.html">PIO</a>&#160;</td>
1703           <td class="paramname"><em>pio</em>, </td>
1704         </tr>
1705         <tr>
1706           <td class="paramkey"></td>
1707           <td></td>
1708           <td class="paramtype">uint32_t&#160;</td>
1709           <td class="paramname"><em>mask</em>&#160;</td>
1710         </tr>
1711         <tr>
1712           <td></td>
1713           <td>)</td>
1714           <td></td><td></td>
1715         </tr>
1716       </table>
1717   </td>
1718   <td class="mlabels-right">
1719 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
1720   </tr>
1721 </table>
1722 </div><div class="memdoc">
1723
1724 <p>Restart multiple state machine with a known state. </p>
1725 <p >This method clears the ISR, shift counters, clock divider counter pin write flags, delay counter, latched EXEC instruction, and IRQ wait condition.</p>
1726 <dl class="params"><dt>Parameters</dt><dd>
1727   <table class="params">
1728     <tr><td class="paramname">pio</td><td>The PIO instance; e.g. <a class="el" href="group__hardware__pio.html#ga916d05e71da7f2173cd22b46bbfa0a11">pio0</a> or <a class="el" href="group__hardware__pio.html#ga923a261ba19804c404900228e99c9522">pio1</a> </td></tr>
1729     <tr><td class="paramname">mask</td><td>bit mask of state machine indexes to modify the enabled state of </td></tr>
1730   </table>
1731   </dd>
1732 </dl>
1733
1734 </div>
1735 </div>
1736 <a id="ga332210f0e594b24bf64f4bb1c8f49be3" name="ga332210f0e594b24bf64f4bb1c8f49be3"></a>
1737 <h2 class="memtitle"><span class="permalink"><a href="#ga332210f0e594b24bf64f4bb1c8f49be3">&#9670;&nbsp;</a></span>pio_set_gpio_base()</h2>
1738
1739 <div class="memitem">
1740 <div class="memproto">
1741       <table class="memname">
1742         <tr>
1743           <td class="memname">int pio_set_gpio_base </td>
1744           <td>(</td>
1745           <td class="paramtype"><a class="el" href="structpio__hw__t.html">PIO</a>&#160;</td>
1746           <td class="paramname"><em>pio</em>, </td>
1747         </tr>
1748         <tr>
1749           <td class="paramkey"></td>
1750           <td></td>
1751           <td class="paramtype">uint&#160;</td>
1752           <td class="paramname"><em>gpio_base</em>&#160;</td>
1753         </tr>
1754         <tr>
1755           <td></td>
1756           <td>)</td>
1757           <td></td><td></td>
1758         </tr>
1759       </table>
1760 </div><div class="memdoc">
1761
1762 <p>Set the base GPIO base for the PIO instance. </p>
1763 <p >Since an individual PIO accesses only 32 pins, to be able to access more pins, the PIO instance must specify a base GPIO where the instance's "pin 0" maps. For RP2350 the valid values are 0 and 16, indicating the PIO instance has access to pins 0-31, or 16-47 respectively.</p>
1764 <dl class="params"><dt>Parameters</dt><dd>
1765   <table class="params">
1766     <tr><td class="paramname">pio</td><td>The PIO instance; e.g. <a class="el" href="group__hardware__pio.html#ga916d05e71da7f2173cd22b46bbfa0a11">pio0</a> or <a class="el" href="group__hardware__pio.html#ga923a261ba19804c404900228e99c9522">pio1</a> </td></tr>
1767     <tr><td class="paramname">gpio_base</td><td>the GPIO base (either 0 or 16) </td></tr>
1768   </table>
1769   </dd>
1770 </dl>
1771 <dl class="section return"><dt>Returns</dt><dd>PICO_OK (0) on success, error code otherwise </dd></dl>
1772
1773 </div>
1774 </div>
1775 <a id="gafe39a664c508e08ef4c74b7c3c38bc07" name="gafe39a664c508e08ef4c74b7c3c38bc07"></a>
1776 <h2 class="memtitle"><span class="permalink"><a href="#gafe39a664c508e08ef4c74b7c3c38bc07">&#9670;&nbsp;</a></span>pio_set_irq0_source_enabled()</h2>
1777
1778 <div class="memitem">
1779 <div class="memproto">
1780 <table class="mlabels">
1781   <tr>
1782   <td class="mlabels-left">
1783       <table class="memname">
1784         <tr>
1785           <td class="memname">static void pio_set_irq0_source_enabled </td>
1786           <td>(</td>
1787           <td class="paramtype"><a class="el" href="structpio__hw__t.html">PIO</a>&#160;</td>
1788           <td class="paramname"><em>pio</em>, </td>
1789         </tr>
1790         <tr>
1791           <td class="paramkey"></td>
1792           <td></td>
1793           <td class="paramtype"><a class="el" href="group__hardware__pio.html#gab9e9aed4bb165a040415ae342e0902fe">pio_interrupt_source_t</a>&#160;</td>
1794           <td class="paramname"><em>source</em>, </td>
1795         </tr>
1796         <tr>
1797           <td class="paramkey"></td>
1798           <td></td>
1799           <td class="paramtype">bool&#160;</td>
1800           <td class="paramname"><em>enabled</em>&#160;</td>
1801         </tr>
1802         <tr>
1803           <td></td>
1804           <td>)</td>
1805           <td></td><td></td>
1806         </tr>
1807       </table>
1808   </td>
1809   <td class="mlabels-right">
1810 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
1811   </tr>
1812 </table>
1813 </div><div class="memdoc">
1814
1815 <p>Enable/Disable a single source on a PIO's IRQ 0. </p>
1816 <dl class="params"><dt>Parameters</dt><dd>
1817   <table class="params">
1818     <tr><td class="paramname">pio</td><td>The PIO instance; e.g. <a class="el" href="group__hardware__pio.html#ga916d05e71da7f2173cd22b46bbfa0a11">pio0</a> or <a class="el" href="group__hardware__pio.html#ga923a261ba19804c404900228e99c9522">pio1</a> </td></tr>
1819     <tr><td class="paramname">source</td><td>the source number (see <a class="el" href="group__hardware__pio.html#ga0e60c768ea29f296b5ef40c02211bbcc">pio_interrupt_source</a>) </td></tr>
1820     <tr><td class="paramname">enabled</td><td>true to enable IRQ 0 for the source, false to disable. </td></tr>
1821   </table>
1822   </dd>
1823 </dl>
1824
1825 </div>
1826 </div>
1827 <a id="ga81259bc71fd3bd81b96e47f9f4ea7b67" name="ga81259bc71fd3bd81b96e47f9f4ea7b67"></a>
1828 <h2 class="memtitle"><span class="permalink"><a href="#ga81259bc71fd3bd81b96e47f9f4ea7b67">&#9670;&nbsp;</a></span>pio_set_irq0_source_mask_enabled()</h2>
1829
1830 <div class="memitem">
1831 <div class="memproto">
1832 <table class="mlabels">
1833   <tr>
1834   <td class="mlabels-left">
1835       <table class="memname">
1836         <tr>
1837           <td class="memname">static void pio_set_irq0_source_mask_enabled </td>
1838           <td>(</td>
1839           <td class="paramtype"><a class="el" href="structpio__hw__t.html">PIO</a>&#160;</td>
1840           <td class="paramname"><em>pio</em>, </td>
1841         </tr>
1842         <tr>
1843           <td class="paramkey"></td>
1844           <td></td>
1845           <td class="paramtype">uint32_t&#160;</td>
1846           <td class="paramname"><em>source_mask</em>, </td>
1847         </tr>
1848         <tr>
1849           <td class="paramkey"></td>
1850           <td></td>
1851           <td class="paramtype">bool&#160;</td>
1852           <td class="paramname"><em>enabled</em>&#160;</td>
1853         </tr>
1854         <tr>
1855           <td></td>
1856           <td>)</td>
1857           <td></td><td></td>
1858         </tr>
1859       </table>
1860   </td>
1861   <td class="mlabels-right">
1862 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
1863   </tr>
1864 </table>
1865 </div><div class="memdoc">
1866
1867 <p>Enable/Disable multiple sources on a PIO's IRQ 0. </p>
1868 <dl class="params"><dt>Parameters</dt><dd>
1869   <table class="params">
1870     <tr><td class="paramname">pio</td><td>The PIO instance; e.g. <a class="el" href="group__hardware__pio.html#ga916d05e71da7f2173cd22b46bbfa0a11">pio0</a> or <a class="el" href="group__hardware__pio.html#ga923a261ba19804c404900228e99c9522">pio1</a> </td></tr>
1871     <tr><td class="paramname">source_mask</td><td>Mask of bits, one for each source number (see <a class="el" href="group__hardware__pio.html#ga0e60c768ea29f296b5ef40c02211bbcc">pio_interrupt_source</a>) to affect </td></tr>
1872     <tr><td class="paramname">enabled</td><td>true to enable all the sources specified in the mask on IRQ 0, false to disable all the sources specified in the mask on IRQ 0 </td></tr>
1873   </table>
1874   </dd>
1875 </dl>
1876
1877 </div>
1878 </div>
1879 <a id="ga4369e665ee8d2db58a83eccad65c917c" name="ga4369e665ee8d2db58a83eccad65c917c"></a>
1880 <h2 class="memtitle"><span class="permalink"><a href="#ga4369e665ee8d2db58a83eccad65c917c">&#9670;&nbsp;</a></span>pio_set_irq1_source_enabled()</h2>
1881
1882 <div class="memitem">
1883 <div class="memproto">
1884 <table class="mlabels">
1885   <tr>
1886   <td class="mlabels-left">
1887       <table class="memname">
1888         <tr>
1889           <td class="memname">static void pio_set_irq1_source_enabled </td>
1890           <td>(</td>
1891           <td class="paramtype"><a class="el" href="structpio__hw__t.html">PIO</a>&#160;</td>
1892           <td class="paramname"><em>pio</em>, </td>
1893         </tr>
1894         <tr>
1895           <td class="paramkey"></td>
1896           <td></td>
1897           <td class="paramtype"><a class="el" href="group__hardware__pio.html#gab9e9aed4bb165a040415ae342e0902fe">pio_interrupt_source_t</a>&#160;</td>
1898           <td class="paramname"><em>source</em>, </td>
1899         </tr>
1900         <tr>
1901           <td class="paramkey"></td>
1902           <td></td>
1903           <td class="paramtype">bool&#160;</td>
1904           <td class="paramname"><em>enabled</em>&#160;</td>
1905         </tr>
1906         <tr>
1907           <td></td>
1908           <td>)</td>
1909           <td></td><td></td>
1910         </tr>
1911       </table>
1912   </td>
1913   <td class="mlabels-right">
1914 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
1915   </tr>
1916 </table>
1917 </div><div class="memdoc">
1918
1919 <p>Enable/Disable a single source on a PIO's IRQ 1. </p>
1920 <dl class="params"><dt>Parameters</dt><dd>
1921   <table class="params">
1922     <tr><td class="paramname">pio</td><td>The PIO instance; e.g. <a class="el" href="group__hardware__pio.html#ga916d05e71da7f2173cd22b46bbfa0a11">pio0</a> or <a class="el" href="group__hardware__pio.html#ga923a261ba19804c404900228e99c9522">pio1</a> </td></tr>
1923     <tr><td class="paramname">source</td><td>the source number (see <a class="el" href="group__hardware__pio.html#ga0e60c768ea29f296b5ef40c02211bbcc">pio_interrupt_source</a>) </td></tr>
1924     <tr><td class="paramname">enabled</td><td>true to enable IRQ 0 for the source, false to disable. </td></tr>
1925   </table>
1926   </dd>
1927 </dl>
1928
1929 </div>
1930 </div>
1931 <a id="gae39150dd6910d2776484526059911b79" name="gae39150dd6910d2776484526059911b79"></a>
1932 <h2 class="memtitle"><span class="permalink"><a href="#gae39150dd6910d2776484526059911b79">&#9670;&nbsp;</a></span>pio_set_irq1_source_mask_enabled()</h2>
1933
1934 <div class="memitem">
1935 <div class="memproto">
1936 <table class="mlabels">
1937   <tr>
1938   <td class="mlabels-left">
1939       <table class="memname">
1940         <tr>
1941           <td class="memname">static void pio_set_irq1_source_mask_enabled </td>
1942           <td>(</td>
1943           <td class="paramtype"><a class="el" href="structpio__hw__t.html">PIO</a>&#160;</td>
1944           <td class="paramname"><em>pio</em>, </td>
1945         </tr>
1946         <tr>
1947           <td class="paramkey"></td>
1948           <td></td>
1949           <td class="paramtype">uint32_t&#160;</td>
1950           <td class="paramname"><em>source_mask</em>, </td>
1951         </tr>
1952         <tr>
1953           <td class="paramkey"></td>
1954           <td></td>
1955           <td class="paramtype">bool&#160;</td>
1956           <td class="paramname"><em>enabled</em>&#160;</td>
1957         </tr>
1958         <tr>
1959           <td></td>
1960           <td>)</td>
1961           <td></td><td></td>
1962         </tr>
1963       </table>
1964   </td>
1965   <td class="mlabels-right">
1966 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
1967   </tr>
1968 </table>
1969 </div><div class="memdoc">
1970
1971 <p>Enable/Disable multiple sources on a PIO's IRQ 1. </p>
1972 <dl class="params"><dt>Parameters</dt><dd>
1973   <table class="params">
1974     <tr><td class="paramname">pio</td><td>The PIO instance; e.g. <a class="el" href="group__hardware__pio.html#ga916d05e71da7f2173cd22b46bbfa0a11">pio0</a> or <a class="el" href="group__hardware__pio.html#ga923a261ba19804c404900228e99c9522">pio1</a> </td></tr>
1975     <tr><td class="paramname">source_mask</td><td>Mask of bits, one for each source number (see <a class="el" href="group__hardware__pio.html#ga0e60c768ea29f296b5ef40c02211bbcc">pio_interrupt_source</a>) to affect </td></tr>
1976     <tr><td class="paramname">enabled</td><td>true to enable all the sources specified in the mask on IRQ 1, false to disable all the source specified in the mask on IRQ 1 </td></tr>
1977   </table>
1978   </dd>
1979 </dl>
1980
1981 </div>
1982 </div>
1983 <a id="ga06d0fd918247a86e8394afac67cf6992" name="ga06d0fd918247a86e8394afac67cf6992"></a>
1984 <h2 class="memtitle"><span class="permalink"><a href="#ga06d0fd918247a86e8394afac67cf6992">&#9670;&nbsp;</a></span>pio_set_irqn_source_enabled()</h2>
1985
1986 <div class="memitem">
1987 <div class="memproto">
1988 <table class="mlabels">
1989   <tr>
1990   <td class="mlabels-left">
1991       <table class="memname">
1992         <tr>
1993           <td class="memname">static void pio_set_irqn_source_enabled </td>
1994           <td>(</td>
1995           <td class="paramtype"><a class="el" href="structpio__hw__t.html">PIO</a>&#160;</td>
1996           <td class="paramname"><em>pio</em>, </td>
1997         </tr>
1998         <tr>
1999           <td class="paramkey"></td>
2000           <td></td>
2001           <td class="paramtype">uint&#160;</td>
2002           <td class="paramname"><em>irq_index</em>, </td>
2003         </tr>
2004         <tr>
2005           <td class="paramkey"></td>
2006           <td></td>
2007           <td class="paramtype"><a class="el" href="group__hardware__pio.html#gab9e9aed4bb165a040415ae342e0902fe">pio_interrupt_source_t</a>&#160;</td>
2008           <td class="paramname"><em>source</em>, </td>
2009         </tr>
2010         <tr>
2011           <td class="paramkey"></td>
2012           <td></td>
2013           <td class="paramtype">bool&#160;</td>
2014           <td class="paramname"><em>enabled</em>&#160;</td>
2015         </tr>
2016         <tr>
2017           <td></td>
2018           <td>)</td>
2019           <td></td><td></td>
2020         </tr>
2021       </table>
2022   </td>
2023   <td class="mlabels-right">
2024 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
2025   </tr>
2026 </table>
2027 </div><div class="memdoc">
2028
2029 <p>Enable/Disable a single source on a PIO's specified (0/1) IRQ index. </p>
2030 <dl class="params"><dt>Parameters</dt><dd>
2031   <table class="params">
2032     <tr><td class="paramname">pio</td><td>The PIO instance; e.g. <a class="el" href="group__hardware__pio.html#ga916d05e71da7f2173cd22b46bbfa0a11">pio0</a> or <a class="el" href="group__hardware__pio.html#ga923a261ba19804c404900228e99c9522">pio1</a> </td></tr>
2033     <tr><td class="paramname">irq_index</td><td>the IRQ index; either 0 or 1 </td></tr>
2034     <tr><td class="paramname">source</td><td>the source number (see <a class="el" href="group__hardware__pio.html#ga0e60c768ea29f296b5ef40c02211bbcc">pio_interrupt_source</a>) </td></tr>
2035     <tr><td class="paramname">enabled</td><td>true to enable the source on the specified IRQ, false to disable. </td></tr>
2036   </table>
2037   </dd>
2038 </dl>
2039
2040 </div>
2041 </div>
2042 <a id="gafc173eb3cb980ed3c823384e42e265bb" name="gafc173eb3cb980ed3c823384e42e265bb"></a>
2043 <h2 class="memtitle"><span class="permalink"><a href="#gafc173eb3cb980ed3c823384e42e265bb">&#9670;&nbsp;</a></span>pio_set_irqn_source_mask_enabled()</h2>
2044
2045 <div class="memitem">
2046 <div class="memproto">
2047 <table class="mlabels">
2048   <tr>
2049   <td class="mlabels-left">
2050       <table class="memname">
2051         <tr>
2052           <td class="memname">static void pio_set_irqn_source_mask_enabled </td>
2053           <td>(</td>
2054           <td class="paramtype"><a class="el" href="structpio__hw__t.html">PIO</a>&#160;</td>
2055           <td class="paramname"><em>pio</em>, </td>
2056         </tr>
2057         <tr>
2058           <td class="paramkey"></td>
2059           <td></td>
2060           <td class="paramtype">uint&#160;</td>
2061           <td class="paramname"><em>irq_index</em>, </td>
2062         </tr>
2063         <tr>
2064           <td class="paramkey"></td>
2065           <td></td>
2066           <td class="paramtype">uint32_t&#160;</td>
2067           <td class="paramname"><em>source_mask</em>, </td>
2068         </tr>
2069         <tr>
2070           <td class="paramkey"></td>
2071           <td></td>
2072           <td class="paramtype">bool&#160;</td>
2073           <td class="paramname"><em>enabled</em>&#160;</td>
2074         </tr>
2075         <tr>
2076           <td></td>
2077           <td>)</td>
2078           <td></td><td></td>
2079         </tr>
2080       </table>
2081   </td>
2082   <td class="mlabels-right">
2083 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
2084   </tr>
2085 </table>
2086 </div><div class="memdoc">
2087
2088 <p>Enable/Disable multiple sources on a PIO's specified (0/1) IRQ index. </p>
2089 <dl class="params"><dt>Parameters</dt><dd>
2090   <table class="params">
2091     <tr><td class="paramname">pio</td><td>The PIO instance; e.g. <a class="el" href="group__hardware__pio.html#ga916d05e71da7f2173cd22b46bbfa0a11">pio0</a> or <a class="el" href="group__hardware__pio.html#ga923a261ba19804c404900228e99c9522">pio1</a> </td></tr>
2092     <tr><td class="paramname">irq_index</td><td>the IRQ index; either 0 or 1 </td></tr>
2093     <tr><td class="paramname">source_mask</td><td>Mask of bits, one for each source number (see <a class="el" href="group__hardware__pio.html#ga0e60c768ea29f296b5ef40c02211bbcc">pio_interrupt_source</a>) to affect </td></tr>
2094     <tr><td class="paramname">enabled</td><td>true to enable all the sources specified in the mask on the specified IRQ, false to disable all the sources specified in the mask on the specified IRQ </td></tr>
2095   </table>
2096   </dd>
2097 </dl>
2098
2099 </div>
2100 </div>
2101 <a id="gaf726f77ee21f5373cadf064a4e0b4935" name="gaf726f77ee21f5373cadf064a4e0b4935"></a>
2102 <h2 class="memtitle"><span class="permalink"><a href="#gaf726f77ee21f5373cadf064a4e0b4935">&#9670;&nbsp;</a></span>pio_set_sm_mask_enabled()</h2>
2103
2104 <div class="memitem">
2105 <div class="memproto">
2106 <table class="mlabels">
2107   <tr>
2108   <td class="mlabels-left">
2109       <table class="memname">
2110         <tr>
2111           <td class="memname">static void pio_set_sm_mask_enabled </td>
2112           <td>(</td>
2113           <td class="paramtype"><a class="el" href="structpio__hw__t.html">PIO</a>&#160;</td>
2114           <td class="paramname"><em>pio</em>, </td>
2115         </tr>
2116         <tr>
2117           <td class="paramkey"></td>
2118           <td></td>
2119           <td class="paramtype">uint32_t&#160;</td>
2120           <td class="paramname"><em>mask</em>, </td>
2121         </tr>
2122         <tr>
2123           <td class="paramkey"></td>
2124           <td></td>
2125           <td class="paramtype">bool&#160;</td>
2126           <td class="paramname"><em>enabled</em>&#160;</td>
2127         </tr>
2128         <tr>
2129           <td></td>
2130           <td>)</td>
2131           <td></td><td></td>
2132         </tr>
2133       </table>
2134   </td>
2135   <td class="mlabels-right">
2136 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
2137   </tr>
2138 </table>
2139 </div><div class="memdoc">
2140
2141 <p>Enable or disable multiple PIO state machines. </p>
2142 <p >Note that this method just sets the enabled state of the state machine; if now enabled they continue exactly from where they left off.</p>
2143 <dl class="section see"><dt>See also</dt><dd><a class="el" href="group__hardware__pio.html#gac3797a9f7e80606152eb44af9ca96398" title="Enable multiple PIO state machines synchronizing their clock dividers.">pio_enable_sm_mask_in_sync()</a> if you wish to enable multiple state machines and ensure their clock dividers are in sync.</dd></dl>
2144 <dl class="params"><dt>Parameters</dt><dd>
2145   <table class="params">
2146     <tr><td class="paramname">pio</td><td>The PIO instance; e.g. <a class="el" href="group__hardware__pio.html#ga916d05e71da7f2173cd22b46bbfa0a11">pio0</a> or <a class="el" href="group__hardware__pio.html#ga923a261ba19804c404900228e99c9522">pio1</a> </td></tr>
2147     <tr><td class="paramname">mask</td><td>bit mask of state machine indexes to modify the enabled state of </td></tr>
2148     <tr><td class="paramname">enabled</td><td>true to enable the state machines; false to disable </td></tr>
2149   </table>
2150   </dd>
2151 </dl>
2152
2153 </div>
2154 </div>
2155 <a id="gaa75bc8b2060929ec2b2599da8081a99b" name="gaa75bc8b2060929ec2b2599da8081a99b"></a>
2156 <h2 class="memtitle"><span class="permalink"><a href="#gaa75bc8b2060929ec2b2599da8081a99b">&#9670;&nbsp;</a></span>pio_sm_claim()</h2>
2157
2158 <div class="memitem">
2159 <div class="memproto">
2160       <table class="memname">
2161         <tr>
2162           <td class="memname">void pio_sm_claim </td>
2163           <td>(</td>
2164           <td class="paramtype"><a class="el" href="structpio__hw__t.html">PIO</a>&#160;</td>
2165           <td class="paramname"><em>pio</em>, </td>
2166         </tr>
2167         <tr>
2168           <td class="paramkey"></td>
2169           <td></td>
2170           <td class="paramtype">uint&#160;</td>
2171           <td class="paramname"><em>sm</em>&#160;</td>
2172         </tr>
2173         <tr>
2174           <td></td>
2175           <td>)</td>
2176           <td></td><td></td>
2177         </tr>
2178       </table>
2179 </div><div class="memdoc">
2180
2181 <p>Mark a state machine as used. </p>
2182 <p >Method for cooperative claiming of hardware. Will cause a panic if the state machine is already claimed. Use of this method by libraries detects accidental configurations that would fail in unpredictable ways.</p>
2183 <dl class="params"><dt>Parameters</dt><dd>
2184   <table class="params">
2185     <tr><td class="paramname">pio</td><td>The PIO instance; e.g. <a class="el" href="group__hardware__pio.html#ga916d05e71da7f2173cd22b46bbfa0a11">pio0</a> or <a class="el" href="group__hardware__pio.html#ga923a261ba19804c404900228e99c9522">pio1</a> </td></tr>
2186     <tr><td class="paramname">sm</td><td>State machine index (0..3) </td></tr>
2187   </table>
2188   </dd>
2189 </dl>
2190
2191 </div>
2192 </div>
2193 <a id="gab4cb36e85ee8807b51fd03021adff9ca" name="gab4cb36e85ee8807b51fd03021adff9ca"></a>
2194 <h2 class="memtitle"><span class="permalink"><a href="#gab4cb36e85ee8807b51fd03021adff9ca">&#9670;&nbsp;</a></span>pio_sm_clear_fifos()</h2>
2195
2196 <div class="memitem">
2197 <div class="memproto">
2198 <table class="mlabels">
2199   <tr>
2200   <td class="mlabels-left">
2201       <table class="memname">
2202         <tr>
2203           <td class="memname">static void pio_sm_clear_fifos </td>
2204           <td>(</td>
2205           <td class="paramtype"><a class="el" href="structpio__hw__t.html">PIO</a>&#160;</td>
2206           <td class="paramname"><em>pio</em>, </td>
2207         </tr>
2208         <tr>
2209           <td class="paramkey"></td>
2210           <td></td>
2211           <td class="paramtype">uint&#160;</td>
2212           <td class="paramname"><em>sm</em>&#160;</td>
2213         </tr>
2214         <tr>
2215           <td></td>
2216           <td>)</td>
2217           <td></td><td></td>
2218         </tr>
2219       </table>
2220   </td>
2221   <td class="mlabels-right">
2222 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
2223   </tr>
2224 </table>
2225 </div><div class="memdoc">
2226
2227 <p>Clear a state machine's TX and RX FIFOs. </p>
2228 <dl class="params"><dt>Parameters</dt><dd>
2229   <table class="params">
2230     <tr><td class="paramname">pio</td><td>The PIO instance; e.g. <a class="el" href="group__hardware__pio.html#ga916d05e71da7f2173cd22b46bbfa0a11">pio0</a> or <a class="el" href="group__hardware__pio.html#ga923a261ba19804c404900228e99c9522">pio1</a> </td></tr>
2231     <tr><td class="paramname">sm</td><td>State machine index (0..3) </td></tr>
2232   </table>
2233   </dd>
2234 </dl>
2235
2236 </div>
2237 </div>
2238 <a id="gacd981b2206b02eb1c4573a0f328d7819" name="gacd981b2206b02eb1c4573a0f328d7819"></a>
2239 <h2 class="memtitle"><span class="permalink"><a href="#gacd981b2206b02eb1c4573a0f328d7819">&#9670;&nbsp;</a></span>pio_sm_clkdiv_restart()</h2>
2240
2241 <div class="memitem">
2242 <div class="memproto">
2243 <table class="mlabels">
2244   <tr>
2245   <td class="mlabels-left">
2246       <table class="memname">
2247         <tr>
2248           <td class="memname">static void pio_sm_clkdiv_restart </td>
2249           <td>(</td>
2250           <td class="paramtype"><a class="el" href="structpio__hw__t.html">PIO</a>&#160;</td>
2251           <td class="paramname"><em>pio</em>, </td>
2252         </tr>
2253         <tr>
2254           <td class="paramkey"></td>
2255           <td></td>
2256           <td class="paramtype">uint&#160;</td>
2257           <td class="paramname"><em>sm</em>&#160;</td>
2258         </tr>
2259         <tr>
2260           <td></td>
2261           <td>)</td>
2262           <td></td><td></td>
2263         </tr>
2264       </table>
2265   </td>
2266   <td class="mlabels-right">
2267 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
2268   </tr>
2269 </table>
2270 </div><div class="memdoc">
2271
2272 <p>Restart a state machine's clock divider from a phase of 0. </p>
2273 <p >Each state machine's clock divider is a free-running piece of hardware, that generates a pattern of clock enable pulses for the state machine, based <em>only</em> on the configured integer/fractional divisor. The pattern of running/halted cycles slows the state machine's execution to some controlled rate.</p>
2274 <p >This function clears the divider's integer and fractional phase accumulators so that it restarts this pattern from the beginning. It is called automatically by pio_sm_init() but can also be called at a later time, when you enable the state machine, to ensure precisely consistent timing each time you load and run a given PIO program.</p>
2275 <p >More commonly this hardware mechanism is used to synchronise the execution clocks of multiple state machines &ndash; see <a class="el" href="group__hardware__pio.html#ga63e13f639ae50ee9cb8afeceba6bb118" title="Restart multiple state machines&#39; clock dividers from a phase of 0.">pio_clkdiv_restart_sm_mask()</a>.</p>
2276 <dl class="params"><dt>Parameters</dt><dd>
2277   <table class="params">
2278     <tr><td class="paramname">pio</td><td>The PIO instance; e.g. <a class="el" href="group__hardware__pio.html#ga916d05e71da7f2173cd22b46bbfa0a11">pio0</a> or <a class="el" href="group__hardware__pio.html#ga923a261ba19804c404900228e99c9522">pio1</a> </td></tr>
2279     <tr><td class="paramname">sm</td><td>State machine index (0..3) </td></tr>
2280   </table>
2281   </dd>
2282 </dl>
2283
2284 </div>
2285 </div>
2286 <a id="ga46af88f03a0c5abe4d55d45c5b2ccfb7" name="ga46af88f03a0c5abe4d55d45c5b2ccfb7"></a>
2287 <h2 class="memtitle"><span class="permalink"><a href="#ga46af88f03a0c5abe4d55d45c5b2ccfb7">&#9670;&nbsp;</a></span>pio_sm_drain_tx_fifo()</h2>
2288
2289 <div class="memitem">
2290 <div class="memproto">
2291       <table class="memname">
2292         <tr>
2293           <td class="memname">void pio_sm_drain_tx_fifo </td>
2294           <td>(</td>
2295           <td class="paramtype"><a class="el" href="structpio__hw__t.html">PIO</a>&#160;</td>
2296           <td class="paramname"><em>pio</em>, </td>
2297         </tr>
2298         <tr>
2299           <td class="paramkey"></td>
2300           <td></td>
2301           <td class="paramtype">uint&#160;</td>
2302           <td class="paramname"><em>sm</em>&#160;</td>
2303         </tr>
2304         <tr>
2305           <td></td>
2306           <td>)</td>
2307           <td></td><td></td>
2308         </tr>
2309       </table>
2310 </div><div class="memdoc">
2311
2312 <p>Empty out a state machine's TX FIFO. </p>
2313 <p >This method executes <code>pull</code> instructions on the state machine until the TX FIFO is empty. This disturbs the contents of the OSR, so see also <a class="el" href="group__hardware__pio.html#gab4cb36e85ee8807b51fd03021adff9ca" title="Clear a state machine&#39;s TX and RX FIFOs.">pio_sm_clear_fifos()</a> which clears both FIFOs but leaves the state machine's internal state undisturbed.</p>
2314 <dl class="params"><dt>Parameters</dt><dd>
2315   <table class="params">
2316     <tr><td class="paramname">pio</td><td>The PIO instance; e.g. <a class="el" href="group__hardware__pio.html#ga916d05e71da7f2173cd22b46bbfa0a11">pio0</a> or <a class="el" href="group__hardware__pio.html#ga923a261ba19804c404900228e99c9522">pio1</a> </td></tr>
2317     <tr><td class="paramname">sm</td><td>State machine index (0..3)</td></tr>
2318   </table>
2319   </dd>
2320 </dl>
2321 <dl class="section see"><dt>See also</dt><dd><a class="el" href="group__hardware__pio.html#gab4cb36e85ee8807b51fd03021adff9ca" title="Clear a state machine&#39;s TX and RX FIFOs.">pio_sm_clear_fifos()</a> </dd></dl>
2322
2323 </div>
2324 </div>
2325 <a id="ga800d8949b5d04dfe635d4c12241f0cd2" name="ga800d8949b5d04dfe635d4c12241f0cd2"></a>
2326 <h2 class="memtitle"><span class="permalink"><a href="#ga800d8949b5d04dfe635d4c12241f0cd2">&#9670;&nbsp;</a></span>pio_sm_exec()</h2>
2327
2328 <div class="memitem">
2329 <div class="memproto">
2330 <table class="mlabels">
2331   <tr>
2332   <td class="mlabels-left">
2333       <table class="memname">
2334         <tr>
2335           <td class="memname">static void pio_sm_exec </td>
2336           <td>(</td>
2337           <td class="paramtype"><a class="el" href="structpio__hw__t.html">PIO</a>&#160;</td>
2338           <td class="paramname"><em>pio</em>, </td>
2339         </tr>
2340         <tr>
2341           <td class="paramkey"></td>
2342           <td></td>
2343           <td class="paramtype">uint&#160;</td>
2344           <td class="paramname"><em>sm</em>, </td>
2345         </tr>
2346         <tr>
2347           <td class="paramkey"></td>
2348           <td></td>
2349           <td class="paramtype">uint&#160;</td>
2350           <td class="paramname"><em>instr</em>&#160;</td>
2351         </tr>
2352         <tr>
2353           <td></td>
2354           <td>)</td>
2355           <td></td><td></td>
2356         </tr>
2357       </table>
2358   </td>
2359   <td class="mlabels-right">
2360 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
2361   </tr>
2362 </table>
2363 </div><div class="memdoc">
2364
2365 <p>Immediately execute an instruction on a state machine. </p>
2366 <p >This instruction is executed instead of the next instruction in the normal control flow on the state machine. Subsequent calls to this method replace the previous executed instruction if it is still running. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="group__hardware__pio.html#gaaa44e504a2abd8ca2c1ee2db91d0652b" title="Determine if an instruction set by pio_sm_exec() is stalled executing.">pio_sm_is_exec_stalled()</a> to see if an executed instruction is still running (i.e. it is stalled on some condition)</dd></dl>
2367 <dl class="params"><dt>Parameters</dt><dd>
2368   <table class="params">
2369     <tr><td class="paramname">pio</td><td>The PIO instance; e.g. <a class="el" href="group__hardware__pio.html#ga916d05e71da7f2173cd22b46bbfa0a11">pio0</a> or <a class="el" href="group__hardware__pio.html#ga923a261ba19804c404900228e99c9522">pio1</a> </td></tr>
2370     <tr><td class="paramname">sm</td><td>State machine index (0..3) </td></tr>
2371     <tr><td class="paramname">instr</td><td>the encoded PIO instruction </td></tr>
2372   </table>
2373   </dd>
2374 </dl>
2375
2376 </div>
2377 </div>
2378 <a id="ga1bf1b296713b76e19b87b59b84136b2c" name="ga1bf1b296713b76e19b87b59b84136b2c"></a>
2379 <h2 class="memtitle"><span class="permalink"><a href="#ga1bf1b296713b76e19b87b59b84136b2c">&#9670;&nbsp;</a></span>pio_sm_exec_wait_blocking()</h2>
2380
2381 <div class="memitem">
2382 <div class="memproto">
2383 <table class="mlabels">
2384   <tr>
2385   <td class="mlabels-left">
2386       <table class="memname">
2387         <tr>
2388           <td class="memname">static void pio_sm_exec_wait_blocking </td>
2389           <td>(</td>
2390           <td class="paramtype"><a class="el" href="structpio__hw__t.html">PIO</a>&#160;</td>
2391           <td class="paramname"><em>pio</em>, </td>
2392         </tr>
2393         <tr>
2394           <td class="paramkey"></td>
2395           <td></td>
2396           <td class="paramtype">uint&#160;</td>
2397           <td class="paramname"><em>sm</em>, </td>
2398         </tr>
2399         <tr>
2400           <td class="paramkey"></td>
2401           <td></td>
2402           <td class="paramtype">uint&#160;</td>
2403           <td class="paramname"><em>instr</em>&#160;</td>
2404         </tr>
2405         <tr>
2406           <td></td>
2407           <td>)</td>
2408           <td></td><td></td>
2409         </tr>
2410       </table>
2411   </td>
2412   <td class="mlabels-right">
2413 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
2414   </tr>
2415 </table>
2416 </div><div class="memdoc">
2417
2418 <p>Immediately execute an instruction on a state machine and wait for it to complete. </p>
2419 <p >This instruction is executed instead of the next instruction in the normal control flow on the state machine. Subsequent calls to this method replace the previous executed instruction if it is still running. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="group__hardware__pio.html#gaaa44e504a2abd8ca2c1ee2db91d0652b" title="Determine if an instruction set by pio_sm_exec() is stalled executing.">pio_sm_is_exec_stalled()</a> to see if an executed instruction is still running (i.e. it is stalled on some condition)</dd></dl>
2420 <dl class="params"><dt>Parameters</dt><dd>
2421   <table class="params">
2422     <tr><td class="paramname">pio</td><td>The PIO instance; e.g. <a class="el" href="group__hardware__pio.html#ga916d05e71da7f2173cd22b46bbfa0a11">pio0</a> or <a class="el" href="group__hardware__pio.html#ga923a261ba19804c404900228e99c9522">pio1</a> </td></tr>
2423     <tr><td class="paramname">sm</td><td>State machine index (0..3) </td></tr>
2424     <tr><td class="paramname">instr</td><td>the encoded PIO instruction </td></tr>
2425   </table>
2426   </dd>
2427 </dl>
2428
2429 </div>
2430 </div>
2431 <a id="ga6fe6273d63665fdb16964790d55709fa" name="ga6fe6273d63665fdb16964790d55709fa"></a>
2432 <h2 class="memtitle"><span class="permalink"><a href="#ga6fe6273d63665fdb16964790d55709fa">&#9670;&nbsp;</a></span>pio_sm_get()</h2>
2433
2434 <div class="memitem">
2435 <div class="memproto">
2436 <table class="mlabels">
2437   <tr>
2438   <td class="mlabels-left">
2439       <table class="memname">
2440         <tr>
2441           <td class="memname">static uint32_t pio_sm_get </td>
2442           <td>(</td>
2443           <td class="paramtype"><a class="el" href="structpio__hw__t.html">PIO</a>&#160;</td>
2444           <td class="paramname"><em>pio</em>, </td>
2445         </tr>
2446         <tr>
2447           <td class="paramkey"></td>
2448           <td></td>
2449           <td class="paramtype">uint&#160;</td>
2450           <td class="paramname"><em>sm</em>&#160;</td>
2451         </tr>
2452         <tr>
2453           <td></td>
2454           <td>)</td>
2455           <td></td><td></td>
2456         </tr>
2457       </table>
2458   </td>
2459   <td class="mlabels-right">
2460 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
2461   </tr>
2462 </table>
2463 </div><div class="memdoc">
2464
2465 <p>Read a word of data from a state machine's RX FIFO. </p>
2466 <p >This is a raw FIFO access that does not check for emptiness. If the FIFO is empty, the hardware ignores the attempt to read from the FIFO (the FIFO remains in an empty state following the read) and the sticky RXUNDER flag for this FIFO is set in FDEBUG to indicate that the system tried to read from this FIFO when empty. The data returned by this function is undefined when the FIFO is empty.</p>
2467 <dl class="params"><dt>Parameters</dt><dd>
2468   <table class="params">
2469     <tr><td class="paramname">pio</td><td>The PIO instance; e.g. <a class="el" href="group__hardware__pio.html#ga916d05e71da7f2173cd22b46bbfa0a11">pio0</a> or <a class="el" href="group__hardware__pio.html#ga923a261ba19804c404900228e99c9522">pio1</a> </td></tr>
2470     <tr><td class="paramname">sm</td><td>State machine index (0..3)</td></tr>
2471   </table>
2472   </dd>
2473 </dl>
2474 <dl class="section see"><dt>See also</dt><dd><a class="el" href="group__hardware__pio.html#ga12650f49c110cb1bfd8092ab67210885" title="Read a word of data from a state machine&#39;s RX FIFO, blocking if the FIFO is empty.">pio_sm_get_blocking()</a> </dd></dl>
2475
2476 </div>
2477 </div>
2478 <a id="ga12650f49c110cb1bfd8092ab67210885" name="ga12650f49c110cb1bfd8092ab67210885"></a>
2479 <h2 class="memtitle"><span class="permalink"><a href="#ga12650f49c110cb1bfd8092ab67210885">&#9670;&nbsp;</a></span>pio_sm_get_blocking()</h2>
2480
2481 <div class="memitem">
2482 <div class="memproto">
2483 <table class="mlabels">
2484   <tr>
2485   <td class="mlabels-left">
2486       <table class="memname">
2487         <tr>
2488           <td class="memname">static uint32_t pio_sm_get_blocking </td>
2489           <td>(</td>
2490           <td class="paramtype"><a class="el" href="structpio__hw__t.html">PIO</a>&#160;</td>
2491           <td class="paramname"><em>pio</em>, </td>
2492         </tr>
2493         <tr>
2494           <td class="paramkey"></td>
2495           <td></td>
2496           <td class="paramtype">uint&#160;</td>
2497           <td class="paramname"><em>sm</em>&#160;</td>
2498         </tr>
2499         <tr>
2500           <td></td>
2501           <td>)</td>
2502           <td></td><td></td>
2503         </tr>
2504       </table>
2505   </td>
2506   <td class="mlabels-right">
2507 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
2508   </tr>
2509 </table>
2510 </div><div class="memdoc">
2511
2512 <p>Read a word of data from a state machine's RX FIFO, blocking if the FIFO is empty. </p>
2513 <dl class="params"><dt>Parameters</dt><dd>
2514   <table class="params">
2515     <tr><td class="paramname">pio</td><td>The PIO instance; e.g. <a class="el" href="group__hardware__pio.html#ga916d05e71da7f2173cd22b46bbfa0a11">pio0</a> or <a class="el" href="group__hardware__pio.html#ga923a261ba19804c404900228e99c9522">pio1</a> </td></tr>
2516     <tr><td class="paramname">sm</td><td>State machine index (0..3) </td></tr>
2517   </table>
2518   </dd>
2519 </dl>
2520
2521 </div>
2522 </div>
2523 <a id="ga9c0ea409da4fcb98586120b575921c31" name="ga9c0ea409da4fcb98586120b575921c31"></a>
2524 <h2 class="memtitle"><span class="permalink"><a href="#ga9c0ea409da4fcb98586120b575921c31">&#9670;&nbsp;</a></span>pio_sm_get_pc()</h2>
2525
2526 <div class="memitem">
2527 <div class="memproto">
2528 <table class="mlabels">
2529   <tr>
2530   <td class="mlabels-left">
2531       <table class="memname">
2532         <tr>
2533           <td class="memname">static uint8_t pio_sm_get_pc </td>
2534           <td>(</td>
2535           <td class="paramtype"><a class="el" href="structpio__hw__t.html">PIO</a>&#160;</td>
2536           <td class="paramname"><em>pio</em>, </td>
2537         </tr>
2538         <tr>
2539           <td class="paramkey"></td>
2540           <td></td>
2541           <td class="paramtype">uint&#160;</td>
2542           <td class="paramname"><em>sm</em>&#160;</td>
2543         </tr>
2544         <tr>
2545           <td></td>
2546           <td>)</td>
2547           <td></td><td></td>
2548         </tr>
2549       </table>
2550   </td>
2551   <td class="mlabels-right">
2552 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
2553   </tr>
2554 </table>
2555 </div><div class="memdoc">
2556
2557 <p>Return the current program counter for a state machine. </p>
2558 <dl class="params"><dt>Parameters</dt><dd>
2559   <table class="params">
2560     <tr><td class="paramname">pio</td><td>The PIO instance; e.g. <a class="el" href="group__hardware__pio.html#ga916d05e71da7f2173cd22b46bbfa0a11">pio0</a> or <a class="el" href="group__hardware__pio.html#ga923a261ba19804c404900228e99c9522">pio1</a> </td></tr>
2561     <tr><td class="paramname">sm</td><td>State machine index (0..3) </td></tr>
2562   </table>
2563   </dd>
2564 </dl>
2565 <dl class="section return"><dt>Returns</dt><dd>the program counter </dd></dl>
2566
2567 </div>
2568 </div>
2569 <a id="ga8fa0b87fde0db10be2934de542f9d6c2" name="ga8fa0b87fde0db10be2934de542f9d6c2"></a>
2570 <h2 class="memtitle"><span class="permalink"><a href="#ga8fa0b87fde0db10be2934de542f9d6c2">&#9670;&nbsp;</a></span>pio_sm_get_rx_fifo_level()</h2>
2571
2572 <div class="memitem">
2573 <div class="memproto">
2574 <table class="mlabels">
2575   <tr>
2576   <td class="mlabels-left">
2577       <table class="memname">
2578         <tr>
2579           <td class="memname">static uint pio_sm_get_rx_fifo_level </td>
2580           <td>(</td>
2581           <td class="paramtype"><a class="el" href="structpio__hw__t.html">PIO</a>&#160;</td>
2582           <td class="paramname"><em>pio</em>, </td>
2583         </tr>
2584         <tr>
2585           <td class="paramkey"></td>
2586           <td></td>
2587           <td class="paramtype">uint&#160;</td>
2588           <td class="paramname"><em>sm</em>&#160;</td>
2589         </tr>
2590         <tr>
2591           <td></td>
2592           <td>)</td>
2593           <td></td><td></td>
2594         </tr>
2595       </table>
2596   </td>
2597   <td class="mlabels-right">
2598 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
2599   </tr>
2600 </table>
2601 </div><div class="memdoc">
2602
2603 <p>Return the number of elements currently in a state machine's RX FIFO. </p>
2604 <dl class="params"><dt>Parameters</dt><dd>
2605   <table class="params">
2606     <tr><td class="paramname">pio</td><td>The PIO instance; e.g. <a class="el" href="group__hardware__pio.html#ga916d05e71da7f2173cd22b46bbfa0a11">pio0</a> or <a class="el" href="group__hardware__pio.html#ga923a261ba19804c404900228e99c9522">pio1</a> </td></tr>
2607     <tr><td class="paramname">sm</td><td>State machine index (0..3) </td></tr>
2608   </table>
2609   </dd>
2610 </dl>
2611 <dl class="section return"><dt>Returns</dt><dd>the number of elements in the RX FIFO </dd></dl>
2612
2613 </div>
2614 </div>
2615 <a id="ga009b3f44f112208114972c32546dfddb" name="ga009b3f44f112208114972c32546dfddb"></a>
2616 <h2 class="memtitle"><span class="permalink"><a href="#ga009b3f44f112208114972c32546dfddb">&#9670;&nbsp;</a></span>pio_sm_get_tx_fifo_level()</h2>
2617
2618 <div class="memitem">
2619 <div class="memproto">
2620 <table class="mlabels">
2621   <tr>
2622   <td class="mlabels-left">
2623       <table class="memname">
2624         <tr>
2625           <td class="memname">static uint pio_sm_get_tx_fifo_level </td>
2626           <td>(</td>
2627           <td class="paramtype"><a class="el" href="structpio__hw__t.html">PIO</a>&#160;</td>
2628           <td class="paramname"><em>pio</em>, </td>
2629         </tr>
2630         <tr>
2631           <td class="paramkey"></td>
2632           <td></td>
2633           <td class="paramtype">uint&#160;</td>
2634           <td class="paramname"><em>sm</em>&#160;</td>
2635         </tr>
2636         <tr>
2637           <td></td>
2638           <td>)</td>
2639           <td></td><td></td>
2640         </tr>
2641       </table>
2642   </td>
2643   <td class="mlabels-right">
2644 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
2645   </tr>
2646 </table>
2647 </div><div class="memdoc">
2648
2649 <p>Return the number of elements currently in a state machine's TX FIFO. </p>
2650 <dl class="params"><dt>Parameters</dt><dd>
2651   <table class="params">
2652     <tr><td class="paramname">pio</td><td>The PIO instance; e.g. <a class="el" href="group__hardware__pio.html#ga916d05e71da7f2173cd22b46bbfa0a11">pio0</a> or <a class="el" href="group__hardware__pio.html#ga923a261ba19804c404900228e99c9522">pio1</a> </td></tr>
2653     <tr><td class="paramname">sm</td><td>State machine index (0..3) </td></tr>
2654   </table>
2655   </dd>
2656 </dl>
2657 <dl class="section return"><dt>Returns</dt><dd>the number of elements in the TX FIFO </dd></dl>
2658
2659 </div>
2660 </div>
2661 <a id="ga699fb7272e3cb5ab76a84fbf3640325d" name="ga699fb7272e3cb5ab76a84fbf3640325d"></a>
2662 <h2 class="memtitle"><span class="permalink"><a href="#ga699fb7272e3cb5ab76a84fbf3640325d">&#9670;&nbsp;</a></span>pio_sm_is_claimed()</h2>
2663
2664 <div class="memitem">
2665 <div class="memproto">
2666       <table class="memname">
2667         <tr>
2668           <td class="memname">bool pio_sm_is_claimed </td>
2669           <td>(</td>
2670           <td class="paramtype"><a class="el" href="structpio__hw__t.html">PIO</a>&#160;</td>
2671           <td class="paramname"><em>pio</em>, </td>
2672         </tr>
2673         <tr>
2674           <td class="paramkey"></td>
2675           <td></td>
2676           <td class="paramtype">uint&#160;</td>
2677           <td class="paramname"><em>sm</em>&#160;</td>
2678         </tr>
2679         <tr>
2680           <td></td>
2681           <td>)</td>
2682           <td></td><td></td>
2683         </tr>
2684       </table>
2685 </div><div class="memdoc">
2686
2687 <p>Determine if a PIO state machine is claimed. </p>
2688 <dl class="params"><dt>Parameters</dt><dd>
2689   <table class="params">
2690     <tr><td class="paramname">pio</td><td>The PIO instance; e.g. <a class="el" href="group__hardware__pio.html#ga916d05e71da7f2173cd22b46bbfa0a11">pio0</a> or <a class="el" href="group__hardware__pio.html#ga923a261ba19804c404900228e99c9522">pio1</a> </td></tr>
2691     <tr><td class="paramname">sm</td><td>State machine index (0..3) </td></tr>
2692   </table>
2693   </dd>
2694 </dl>
2695 <dl class="section return"><dt>Returns</dt><dd>true if claimed, false otherwise </dd></dl>
2696 <dl class="section see"><dt>See also</dt><dd><a class="el" href="group__hardware__pio.html#gaa75bc8b2060929ec2b2599da8081a99b" title="Mark a state machine as used.">pio_sm_claim</a> </dd>
2697 <dd>
2698 <a class="el" href="group__hardware__pio.html#ga4c25ad61f15a76499997102e126cbdfd" title="Mark multiple state machines as used.">pio_claim_sm_mask</a> </dd></dl>
2699
2700 </div>
2701 </div>
2702 <a id="gaaa44e504a2abd8ca2c1ee2db91d0652b" name="gaaa44e504a2abd8ca2c1ee2db91d0652b"></a>
2703 <h2 class="memtitle"><span class="permalink"><a href="#gaaa44e504a2abd8ca2c1ee2db91d0652b">&#9670;&nbsp;</a></span>pio_sm_is_exec_stalled()</h2>
2704
2705 <div class="memitem">
2706 <div class="memproto">
2707 <table class="mlabels">
2708   <tr>
2709   <td class="mlabels-left">
2710       <table class="memname">
2711         <tr>
2712           <td class="memname">static bool pio_sm_is_exec_stalled </td>
2713           <td>(</td>
2714           <td class="paramtype"><a class="el" href="structpio__hw__t.html">PIO</a>&#160;</td>
2715           <td class="paramname"><em>pio</em>, </td>
2716         </tr>
2717         <tr>
2718           <td class="paramkey"></td>
2719           <td></td>
2720           <td class="paramtype">uint&#160;</td>
2721           <td class="paramname"><em>sm</em>&#160;</td>
2722         </tr>
2723         <tr>
2724           <td></td>
2725           <td>)</td>
2726           <td></td><td></td>
2727         </tr>
2728       </table>
2729   </td>
2730   <td class="mlabels-right">
2731 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
2732   </tr>
2733 </table>
2734 </div><div class="memdoc">
2735
2736 <p>Determine if an instruction set by <a class="el" href="group__hardware__pio.html#ga800d8949b5d04dfe635d4c12241f0cd2" title="Immediately execute an instruction on a state machine.">pio_sm_exec()</a> is stalled executing. </p>
2737 <dl class="params"><dt>Parameters</dt><dd>
2738   <table class="params">
2739     <tr><td class="paramname">pio</td><td>The PIO instance; e.g. <a class="el" href="group__hardware__pio.html#ga916d05e71da7f2173cd22b46bbfa0a11">pio0</a> or <a class="el" href="group__hardware__pio.html#ga923a261ba19804c404900228e99c9522">pio1</a> </td></tr>
2740     <tr><td class="paramname">sm</td><td>State machine index (0..3) </td></tr>
2741   </table>
2742   </dd>
2743 </dl>
2744 <dl class="section return"><dt>Returns</dt><dd>true if the executed instruction is still running (stalled) </dd></dl>
2745
2746 </div>
2747 </div>
2748 <a id="gadf404ba44b7f83e79fd6b57b3e2c89df" name="gadf404ba44b7f83e79fd6b57b3e2c89df"></a>
2749 <h2 class="memtitle"><span class="permalink"><a href="#gadf404ba44b7f83e79fd6b57b3e2c89df">&#9670;&nbsp;</a></span>pio_sm_is_rx_fifo_empty()</h2>
2750
2751 <div class="memitem">
2752 <div class="memproto">
2753 <table class="mlabels">
2754   <tr>
2755   <td class="mlabels-left">
2756       <table class="memname">
2757         <tr>
2758           <td class="memname">static bool pio_sm_is_rx_fifo_empty </td>
2759           <td>(</td>
2760           <td class="paramtype"><a class="el" href="structpio__hw__t.html">PIO</a>&#160;</td>
2761           <td class="paramname"><em>pio</em>, </td>
2762         </tr>
2763         <tr>
2764           <td class="paramkey"></td>
2765           <td></td>
2766           <td class="paramtype">uint&#160;</td>
2767           <td class="paramname"><em>sm</em>&#160;</td>
2768         </tr>
2769         <tr>
2770           <td></td>
2771           <td>)</td>
2772           <td></td><td></td>
2773         </tr>
2774       </table>
2775   </td>
2776   <td class="mlabels-right">
2777 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
2778   </tr>
2779 </table>
2780 </div><div class="memdoc">
2781
2782 <p>Determine if a state machine's RX FIFO is empty. </p>
2783 <dl class="params"><dt>Parameters</dt><dd>
2784   <table class="params">
2785     <tr><td class="paramname">pio</td><td>The PIO instance; e.g. <a class="el" href="group__hardware__pio.html#ga916d05e71da7f2173cd22b46bbfa0a11">pio0</a> or <a class="el" href="group__hardware__pio.html#ga923a261ba19804c404900228e99c9522">pio1</a> </td></tr>
2786     <tr><td class="paramname">sm</td><td>State machine index (0..3) </td></tr>
2787   </table>
2788   </dd>
2789 </dl>
2790 <dl class="section return"><dt>Returns</dt><dd>true if the RX FIFO is empty </dd></dl>
2791
2792 </div>
2793 </div>
2794 <a id="ga71e388315eb6a77a6560b77ec13145a4" name="ga71e388315eb6a77a6560b77ec13145a4"></a>
2795 <h2 class="memtitle"><span class="permalink"><a href="#ga71e388315eb6a77a6560b77ec13145a4">&#9670;&nbsp;</a></span>pio_sm_is_rx_fifo_full()</h2>
2796
2797 <div class="memitem">
2798 <div class="memproto">
2799 <table class="mlabels">
2800   <tr>
2801   <td class="mlabels-left">
2802       <table class="memname">
2803         <tr>
2804           <td class="memname">static bool pio_sm_is_rx_fifo_full </td>
2805           <td>(</td>
2806           <td class="paramtype"><a class="el" href="structpio__hw__t.html">PIO</a>&#160;</td>
2807           <td class="paramname"><em>pio</em>, </td>
2808         </tr>
2809         <tr>
2810           <td class="paramkey"></td>
2811           <td></td>
2812           <td class="paramtype">uint&#160;</td>
2813           <td class="paramname"><em>sm</em>&#160;</td>
2814         </tr>
2815         <tr>
2816           <td></td>
2817           <td>)</td>
2818           <td></td><td></td>
2819         </tr>
2820       </table>
2821   </td>
2822   <td class="mlabels-right">
2823 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
2824   </tr>
2825 </table>
2826 </div><div class="memdoc">
2827
2828 <p>Determine if a state machine's RX FIFO is full. </p>
2829 <dl class="params"><dt>Parameters</dt><dd>
2830   <table class="params">
2831     <tr><td class="paramname">pio</td><td>The PIO instance; e.g. <a class="el" href="group__hardware__pio.html#ga916d05e71da7f2173cd22b46bbfa0a11">pio0</a> or <a class="el" href="group__hardware__pio.html#ga923a261ba19804c404900228e99c9522">pio1</a> </td></tr>
2832     <tr><td class="paramname">sm</td><td>State machine index (0..3) </td></tr>
2833   </table>
2834   </dd>
2835 </dl>
2836 <dl class="section return"><dt>Returns</dt><dd>true if the RX FIFO is full </dd></dl>
2837
2838 </div>
2839 </div>
2840 <a id="gadf4ae3f4a334c1dcac1b62b148508bf2" name="gadf4ae3f4a334c1dcac1b62b148508bf2"></a>
2841 <h2 class="memtitle"><span class="permalink"><a href="#gadf4ae3f4a334c1dcac1b62b148508bf2">&#9670;&nbsp;</a></span>pio_sm_is_tx_fifo_empty()</h2>
2842
2843 <div class="memitem">
2844 <div class="memproto">
2845 <table class="mlabels">
2846   <tr>
2847   <td class="mlabels-left">
2848       <table class="memname">
2849         <tr>
2850           <td class="memname">static bool pio_sm_is_tx_fifo_empty </td>
2851           <td>(</td>
2852           <td class="paramtype"><a class="el" href="structpio__hw__t.html">PIO</a>&#160;</td>
2853           <td class="paramname"><em>pio</em>, </td>
2854         </tr>
2855         <tr>
2856           <td class="paramkey"></td>
2857           <td></td>
2858           <td class="paramtype">uint&#160;</td>
2859           <td class="paramname"><em>sm</em>&#160;</td>
2860         </tr>
2861         <tr>
2862           <td></td>
2863           <td>)</td>
2864           <td></td><td></td>
2865         </tr>
2866       </table>
2867   </td>
2868   <td class="mlabels-right">
2869 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
2870   </tr>
2871 </table>
2872 </div><div class="memdoc">
2873
2874 <p>Determine if a state machine's TX FIFO is empty. </p>
2875 <dl class="params"><dt>Parameters</dt><dd>
2876   <table class="params">
2877     <tr><td class="paramname">pio</td><td>The PIO instance; e.g. <a class="el" href="group__hardware__pio.html#ga916d05e71da7f2173cd22b46bbfa0a11">pio0</a> or <a class="el" href="group__hardware__pio.html#ga923a261ba19804c404900228e99c9522">pio1</a> </td></tr>
2878     <tr><td class="paramname">sm</td><td>State machine index (0..3) </td></tr>
2879   </table>
2880   </dd>
2881 </dl>
2882 <dl class="section return"><dt>Returns</dt><dd>true if the TX FIFO is empty </dd></dl>
2883
2884 </div>
2885 </div>
2886 <a id="ga3dbf64343a2fba75549ee7b0351f7e52" name="ga3dbf64343a2fba75549ee7b0351f7e52"></a>
2887 <h2 class="memtitle"><span class="permalink"><a href="#ga3dbf64343a2fba75549ee7b0351f7e52">&#9670;&nbsp;</a></span>pio_sm_is_tx_fifo_full()</h2>
2888
2889 <div class="memitem">
2890 <div class="memproto">
2891 <table class="mlabels">
2892   <tr>
2893   <td class="mlabels-left">
2894       <table class="memname">
2895         <tr>
2896           <td class="memname">static bool pio_sm_is_tx_fifo_full </td>
2897           <td>(</td>
2898           <td class="paramtype"><a class="el" href="structpio__hw__t.html">PIO</a>&#160;</td>
2899           <td class="paramname"><em>pio</em>, </td>
2900         </tr>
2901         <tr>
2902           <td class="paramkey"></td>
2903           <td></td>
2904           <td class="paramtype">uint&#160;</td>
2905           <td class="paramname"><em>sm</em>&#160;</td>
2906         </tr>
2907         <tr>
2908           <td></td>
2909           <td>)</td>
2910           <td></td><td></td>
2911         </tr>
2912       </table>
2913   </td>
2914   <td class="mlabels-right">
2915 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
2916   </tr>
2917 </table>
2918 </div><div class="memdoc">
2919
2920 <p>Determine if a state machine's TX FIFO is full. </p>
2921 <dl class="params"><dt>Parameters</dt><dd>
2922   <table class="params">
2923     <tr><td class="paramname">pio</td><td>The PIO instance; e.g. <a class="el" href="group__hardware__pio.html#ga916d05e71da7f2173cd22b46bbfa0a11">pio0</a> or <a class="el" href="group__hardware__pio.html#ga923a261ba19804c404900228e99c9522">pio1</a> </td></tr>
2924     <tr><td class="paramname">sm</td><td>State machine index (0..3) </td></tr>
2925   </table>
2926   </dd>
2927 </dl>
2928 <dl class="section return"><dt>Returns</dt><dd>true if the TX FIFO is full </dd></dl>
2929
2930 </div>
2931 </div>
2932 <a id="gab48b30da795dcd73b4a998d67a4af235" name="gab48b30da795dcd73b4a998d67a4af235"></a>
2933 <h2 class="memtitle"><span class="permalink"><a href="#gab48b30da795dcd73b4a998d67a4af235">&#9670;&nbsp;</a></span>pio_sm_put()</h2>
2934
2935 <div class="memitem">
2936 <div class="memproto">
2937 <table class="mlabels">
2938   <tr>
2939   <td class="mlabels-left">
2940       <table class="memname">
2941         <tr>
2942           <td class="memname">static void pio_sm_put </td>
2943           <td>(</td>
2944           <td class="paramtype"><a class="el" href="structpio__hw__t.html">PIO</a>&#160;</td>
2945           <td class="paramname"><em>pio</em>, </td>
2946         </tr>
2947         <tr>
2948           <td class="paramkey"></td>
2949           <td></td>
2950           <td class="paramtype">uint&#160;</td>
2951           <td class="paramname"><em>sm</em>, </td>
2952         </tr>
2953         <tr>
2954           <td class="paramkey"></td>
2955           <td></td>
2956           <td class="paramtype">uint32_t&#160;</td>
2957           <td class="paramname"><em>data</em>&#160;</td>
2958         </tr>
2959         <tr>
2960           <td></td>
2961           <td>)</td>
2962           <td></td><td></td>
2963         </tr>
2964       </table>
2965   </td>
2966   <td class="mlabels-right">
2967 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
2968   </tr>
2969 </table>
2970 </div><div class="memdoc">
2971
2972 <p>Write a word of data to a state machine's TX FIFO. </p>
2973 <p >This is a raw FIFO access that does not check for fullness. If the FIFO is full, the FIFO contents and state are not affected by the write attempt. Hardware sets the TXOVER sticky flag for this FIFO in FDEBUG, to indicate that the system attempted to write to a full FIFO.</p>
2974 <dl class="params"><dt>Parameters</dt><dd>
2975   <table class="params">
2976     <tr><td class="paramname">pio</td><td>The PIO instance; e.g. <a class="el" href="group__hardware__pio.html#ga916d05e71da7f2173cd22b46bbfa0a11">pio0</a> or <a class="el" href="group__hardware__pio.html#ga923a261ba19804c404900228e99c9522">pio1</a> </td></tr>
2977     <tr><td class="paramname">sm</td><td>State machine index (0..3) </td></tr>
2978     <tr><td class="paramname">data</td><td>the 32 bit data value</td></tr>
2979   </table>
2980   </dd>
2981 </dl>
2982 <dl class="section see"><dt>See also</dt><dd><a class="el" href="group__hardware__pio.html#gaee8bfc3409cb8d93cccdeda3961bc377" title="Write a word of data to a state machine&#39;s TX FIFO, blocking if the FIFO is full.">pio_sm_put_blocking()</a> </dd></dl>
2983
2984 </div>
2985 </div>
2986 <a id="gaee8bfc3409cb8d93cccdeda3961bc377" name="gaee8bfc3409cb8d93cccdeda3961bc377"></a>
2987 <h2 class="memtitle"><span class="permalink"><a href="#gaee8bfc3409cb8d93cccdeda3961bc377">&#9670;&nbsp;</a></span>pio_sm_put_blocking()</h2>
2988
2989 <div class="memitem">
2990 <div class="memproto">
2991 <table class="mlabels">
2992   <tr>
2993   <td class="mlabels-left">
2994       <table class="memname">
2995         <tr>
2996           <td class="memname">static void pio_sm_put_blocking </td>
2997           <td>(</td>
2998           <td class="paramtype"><a class="el" href="structpio__hw__t.html">PIO</a>&#160;</td>
2999           <td class="paramname"><em>pio</em>, </td>
3000         </tr>
3001         <tr>
3002           <td class="paramkey"></td>
3003           <td></td>
3004           <td class="paramtype">uint&#160;</td>
3005           <td class="paramname"><em>sm</em>, </td>
3006         </tr>
3007         <tr>
3008           <td class="paramkey"></td>
3009           <td></td>
3010           <td class="paramtype">uint32_t&#160;</td>
3011           <td class="paramname"><em>data</em>&#160;</td>
3012         </tr>
3013         <tr>
3014           <td></td>
3015           <td>)</td>
3016           <td></td><td></td>
3017         </tr>
3018       </table>
3019   </td>
3020   <td class="mlabels-right">
3021 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
3022   </tr>
3023 </table>
3024 </div><div class="memdoc">
3025
3026 <p>Write a word of data to a state machine's TX FIFO, blocking if the FIFO is full. </p>
3027 <dl class="params"><dt>Parameters</dt><dd>
3028   <table class="params">
3029     <tr><td class="paramname">pio</td><td>The PIO instance; e.g. <a class="el" href="group__hardware__pio.html#ga916d05e71da7f2173cd22b46bbfa0a11">pio0</a> or <a class="el" href="group__hardware__pio.html#ga923a261ba19804c404900228e99c9522">pio1</a> </td></tr>
3030     <tr><td class="paramname">sm</td><td>State machine index (0..3) </td></tr>
3031     <tr><td class="paramname">data</td><td>the 32 bit data value </td></tr>
3032   </table>
3033   </dd>
3034 </dl>
3035
3036 </div>
3037 </div>
3038 <a id="ga7b89b93dd0553c77538c70baf6a7e4f0" name="ga7b89b93dd0553c77538c70baf6a7e4f0"></a>
3039 <h2 class="memtitle"><span class="permalink"><a href="#ga7b89b93dd0553c77538c70baf6a7e4f0">&#9670;&nbsp;</a></span>pio_sm_restart()</h2>
3040
3041 <div class="memitem">
3042 <div class="memproto">
3043 <table class="mlabels">
3044   <tr>
3045   <td class="mlabels-left">
3046       <table class="memname">
3047         <tr>
3048           <td class="memname">static void pio_sm_restart </td>
3049           <td>(</td>
3050           <td class="paramtype"><a class="el" href="structpio__hw__t.html">PIO</a>&#160;</td>
3051           <td class="paramname"><em>pio</em>, </td>
3052         </tr>
3053         <tr>
3054           <td class="paramkey"></td>
3055           <td></td>
3056           <td class="paramtype">uint&#160;</td>
3057           <td class="paramname"><em>sm</em>&#160;</td>
3058         </tr>
3059         <tr>
3060           <td></td>
3061           <td>)</td>
3062           <td></td><td></td>
3063         </tr>
3064       </table>
3065   </td>
3066   <td class="mlabels-right">
3067 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
3068   </tr>
3069 </table>
3070 </div><div class="memdoc">
3071
3072 <p>Restart a state machine with a known state. </p>
3073 <p >This method clears the ISR, shift counters, clock divider counter pin write flags, delay counter, latched EXEC instruction, and IRQ wait condition.</p>
3074 <dl class="params"><dt>Parameters</dt><dd>
3075   <table class="params">
3076     <tr><td class="paramname">pio</td><td>The PIO instance; e.g. <a class="el" href="group__hardware__pio.html#ga916d05e71da7f2173cd22b46bbfa0a11">pio0</a> or <a class="el" href="group__hardware__pio.html#ga923a261ba19804c404900228e99c9522">pio1</a> </td></tr>
3077     <tr><td class="paramname">sm</td><td>State machine index (0..3) </td></tr>
3078   </table>
3079   </dd>
3080 </dl>
3081
3082 </div>
3083 </div>
3084 <a id="ga88df92ae6a4ef3320b6565117aca885b" name="ga88df92ae6a4ef3320b6565117aca885b"></a>
3085 <h2 class="memtitle"><span class="permalink"><a href="#ga88df92ae6a4ef3320b6565117aca885b">&#9670;&nbsp;</a></span>pio_sm_set_clkdiv()</h2>
3086
3087 <div class="memitem">
3088 <div class="memproto">
3089 <table class="mlabels">
3090   <tr>
3091   <td class="mlabels-left">
3092       <table class="memname">
3093         <tr>
3094           <td class="memname">static void pio_sm_set_clkdiv </td>
3095           <td>(</td>
3096           <td class="paramtype"><a class="el" href="structpio__hw__t.html">PIO</a>&#160;</td>
3097           <td class="paramname"><em>pio</em>, </td>
3098         </tr>
3099         <tr>
3100           <td class="paramkey"></td>
3101           <td></td>
3102           <td class="paramtype">uint&#160;</td>
3103           <td class="paramname"><em>sm</em>, </td>
3104         </tr>
3105         <tr>
3106           <td class="paramkey"></td>
3107           <td></td>
3108           <td class="paramtype">float&#160;</td>
3109           <td class="paramname"><em>div</em>&#160;</td>
3110         </tr>
3111         <tr>
3112           <td></td>
3113           <td>)</td>
3114           <td></td><td></td>
3115         </tr>
3116       </table>
3117   </td>
3118   <td class="mlabels-right">
3119 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
3120   </tr>
3121 </table>
3122 </div><div class="memdoc">
3123
3124 <p>set the current clock divider for a state machine </p>
3125 <dl class="params"><dt>Parameters</dt><dd>
3126   <table class="params">
3127     <tr><td class="paramname">pio</td><td>The PIO instance; e.g. <a class="el" href="group__hardware__pio.html#ga916d05e71da7f2173cd22b46bbfa0a11">pio0</a> or <a class="el" href="group__hardware__pio.html#ga923a261ba19804c404900228e99c9522">pio1</a> </td></tr>
3128     <tr><td class="paramname">sm</td><td>State machine index (0..3) </td></tr>
3129     <tr><td class="paramname">div</td><td>the floating point clock divider </td></tr>
3130   </table>
3131   </dd>
3132 </dl>
3133
3134 </div>
3135 </div>
3136 <a id="gaa9d1d18a7decd0068b8a2a9159c9fd34" name="gaa9d1d18a7decd0068b8a2a9159c9fd34"></a>
3137 <h2 class="memtitle"><span class="permalink"><a href="#gaa9d1d18a7decd0068b8a2a9159c9fd34">&#9670;&nbsp;</a></span>pio_sm_set_clkdiv_int_frac()</h2>
3138
3139 <div class="memitem">
3140 <div class="memproto">
3141 <table class="mlabels">
3142   <tr>
3143   <td class="mlabels-left">
3144       <table class="memname">
3145         <tr>
3146           <td class="memname">static void pio_sm_set_clkdiv_int_frac </td>
3147           <td>(</td>
3148           <td class="paramtype"><a class="el" href="structpio__hw__t.html">PIO</a>&#160;</td>
3149           <td class="paramname"><em>pio</em>, </td>
3150         </tr>
3151         <tr>
3152           <td class="paramkey"></td>
3153           <td></td>
3154           <td class="paramtype">uint&#160;</td>
3155           <td class="paramname"><em>sm</em>, </td>
3156         </tr>
3157         <tr>
3158           <td class="paramkey"></td>
3159           <td></td>
3160           <td class="paramtype">uint16_t&#160;</td>
3161           <td class="paramname"><em>div_int</em>, </td>
3162         </tr>
3163         <tr>
3164           <td class="paramkey"></td>
3165           <td></td>
3166           <td class="paramtype">uint8_t&#160;</td>
3167           <td class="paramname"><em>div_frac</em>&#160;</td>
3168         </tr>
3169         <tr>
3170           <td></td>
3171           <td>)</td>
3172           <td></td><td></td>
3173         </tr>
3174       </table>
3175   </td>
3176   <td class="mlabels-right">
3177 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
3178   </tr>
3179 </table>
3180 </div><div class="memdoc">
3181
3182 <p>set the current clock divider for a state machine using a 16:8 fraction </p>
3183 <dl class="params"><dt>Parameters</dt><dd>
3184   <table class="params">
3185     <tr><td class="paramname">pio</td><td>The PIO instance; e.g. <a class="el" href="group__hardware__pio.html#ga916d05e71da7f2173cd22b46bbfa0a11">pio0</a> or <a class="el" href="group__hardware__pio.html#ga923a261ba19804c404900228e99c9522">pio1</a> </td></tr>
3186     <tr><td class="paramname">sm</td><td>State machine index (0..3) </td></tr>
3187     <tr><td class="paramname">div_int</td><td>the integer part of the clock divider </td></tr>
3188     <tr><td class="paramname">div_frac</td><td>the fractional part of the clock divider in 1/256s </td></tr>
3189   </table>
3190   </dd>
3191 </dl>
3192
3193 </div>
3194 </div>
3195 <a id="ga28e9a84f3332ebf088f665d4b676117b" name="ga28e9a84f3332ebf088f665d4b676117b"></a>
3196 <h2 class="memtitle"><span class="permalink"><a href="#ga28e9a84f3332ebf088f665d4b676117b">&#9670;&nbsp;</a></span>pio_sm_set_config()</h2>
3197
3198 <div class="memitem">
3199 <div class="memproto">
3200 <table class="mlabels">
3201   <tr>
3202   <td class="mlabels-left">
3203       <table class="memname">
3204         <tr>
3205           <td class="memname">static int pio_sm_set_config </td>
3206           <td>(</td>
3207           <td class="paramtype"><a class="el" href="structpio__hw__t.html">PIO</a>&#160;</td>
3208           <td class="paramname"><em>pio</em>, </td>
3209         </tr>
3210         <tr>
3211           <td class="paramkey"></td>
3212           <td></td>
3213           <td class="paramtype">uint&#160;</td>
3214           <td class="paramname"><em>sm</em>, </td>
3215         </tr>
3216         <tr>
3217           <td class="paramkey"></td>
3218           <td></td>
3219           <td class="paramtype">const <a class="el" href="structpio__sm__config.html">pio_sm_config</a> *&#160;</td>
3220           <td class="paramname"><em>config</em>&#160;</td>
3221         </tr>
3222         <tr>
3223           <td></td>
3224           <td>)</td>
3225           <td></td><td></td>
3226         </tr>
3227       </table>
3228   </td>
3229   <td class="mlabels-right">
3230 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
3231   </tr>
3232 </table>
3233 </div><div class="memdoc">
3234
3235 <p>Apply a state machine configuration to a state machine. </p>
3236 <dl class="params"><dt>Parameters</dt><dd>
3237   <table class="params">
3238     <tr><td class="paramname">pio</td><td>Handle to PIO instance; e.g. <a class="el" href="group__hardware__pio.html#ga916d05e71da7f2173cd22b46bbfa0a11">pio0</a> or <a class="el" href="group__hardware__pio.html#ga923a261ba19804c404900228e99c9522">pio1</a> </td></tr>
3239     <tr><td class="paramname">sm</td><td>State machine index (0..3) </td></tr>
3240     <tr><td class="paramname">config</td><td>the configuration to apply </td></tr>
3241   </table>
3242   </dd>
3243 </dl>
3244 <dl class="section return"><dt>Returns</dt><dd>PICO_OK (0) on success, negative error code otherwise </dd></dl>
3245
3246 </div>
3247 </div>
3248 <a id="gaf5c965ef1ca21684630c8be2cf3e52e7" name="gaf5c965ef1ca21684630c8be2cf3e52e7"></a>
3249 <h2 class="memtitle"><span class="permalink"><a href="#gaf5c965ef1ca21684630c8be2cf3e52e7">&#9670;&nbsp;</a></span>pio_sm_set_consecutive_pindirs()</h2>
3250
3251 <div class="memitem">
3252 <div class="memproto">
3253       <table class="memname">
3254         <tr>
3255           <td class="memname">int pio_sm_set_consecutive_pindirs </td>
3256           <td>(</td>
3257           <td class="paramtype"><a class="el" href="structpio__hw__t.html">PIO</a>&#160;</td>
3258           <td class="paramname"><em>pio</em>, </td>
3259         </tr>
3260         <tr>
3261           <td class="paramkey"></td>
3262           <td></td>
3263           <td class="paramtype">uint&#160;</td>
3264           <td class="paramname"><em>sm</em>, </td>
3265         </tr>
3266         <tr>
3267           <td class="paramkey"></td>
3268           <td></td>
3269           <td class="paramtype">uint&#160;</td>
3270           <td class="paramname"><em>pins_base</em>, </td>
3271         </tr>
3272         <tr>
3273           <td class="paramkey"></td>
3274           <td></td>
3275           <td class="paramtype">uint&#160;</td>
3276           <td class="paramname"><em>pin_count</em>, </td>
3277         </tr>
3278         <tr>
3279           <td class="paramkey"></td>
3280           <td></td>
3281           <td class="paramtype">bool&#160;</td>
3282           <td class="paramname"><em>is_out</em>&#160;</td>
3283         </tr>
3284         <tr>
3285           <td></td>
3286           <td>)</td>
3287           <td></td><td></td>
3288         </tr>
3289       </table>
3290 </div><div class="memdoc">
3291
3292 <p>Use a state machine to set the same pin direction for multiple consecutive pins for the PIO instance. </p>
3293 <p >This method repeatedly reconfigures the target state machine's pin configuration and executes 'set' instructions to set the pin direction on consecutive pins, before restoring the state machine's pin configuration to what it was.</p>
3294 <p >This method is provided as a convenience to set initial pin directions, and should not be used against a state machine that is enabled.</p>
3295 <dl class="params"><dt>Parameters</dt><dd>
3296   <table class="params">
3297     <tr><td class="paramname">pio</td><td>The PIO instance; e.g. <a class="el" href="group__hardware__pio.html#ga916d05e71da7f2173cd22b46bbfa0a11">pio0</a> or <a class="el" href="group__hardware__pio.html#ga923a261ba19804c404900228e99c9522">pio1</a> </td></tr>
3298     <tr><td class="paramname">sm</td><td>State machine index (0..3) to use </td></tr>
3299     <tr><td class="paramname">pins_base</td><td>the first pin to set a direction for </td></tr>
3300     <tr><td class="paramname">pin_count</td><td>the count of consecutive pins to set the direction for </td></tr>
3301     <tr><td class="paramname">is_out</td><td>the direction to set; true = out, false = in </td></tr>
3302   </table>
3303   </dd>
3304 </dl>
3305 <dl class="section return"><dt>Returns</dt><dd>PICO_OK (0) on success, error code otherwise </dd></dl>
3306
3307 </div>
3308 </div>
3309 <a id="gaa47ec4090dcdc251e44bf4e4cb89a7bc" name="gaa47ec4090dcdc251e44bf4e4cb89a7bc"></a>
3310 <h2 class="memtitle"><span class="permalink"><a href="#gaa47ec4090dcdc251e44bf4e4cb89a7bc">&#9670;&nbsp;</a></span>pio_sm_set_enabled()</h2>
3311
3312 <div class="memitem">
3313 <div class="memproto">
3314 <table class="mlabels">
3315   <tr>
3316   <td class="mlabels-left">
3317       <table class="memname">
3318         <tr>
3319           <td class="memname">static void pio_sm_set_enabled </td>
3320           <td>(</td>
3321           <td class="paramtype"><a class="el" href="structpio__hw__t.html">PIO</a>&#160;</td>
3322           <td class="paramname"><em>pio</em>, </td>
3323         </tr>
3324         <tr>
3325           <td class="paramkey"></td>
3326           <td></td>
3327           <td class="paramtype">uint&#160;</td>
3328           <td class="paramname"><em>sm</em>, </td>
3329         </tr>
3330         <tr>
3331           <td class="paramkey"></td>
3332           <td></td>
3333           <td class="paramtype">bool&#160;</td>
3334           <td class="paramname"><em>enabled</em>&#160;</td>
3335         </tr>
3336         <tr>
3337           <td></td>
3338           <td>)</td>
3339           <td></td><td></td>
3340         </tr>
3341       </table>
3342   </td>
3343   <td class="mlabels-right">
3344 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
3345   </tr>
3346 </table>
3347 </div><div class="memdoc">
3348
3349 <p>Enable or disable a PIO state machine. </p>
3350 <dl class="params"><dt>Parameters</dt><dd>
3351   <table class="params">
3352     <tr><td class="paramname">pio</td><td>The PIO instance; e.g. <a class="el" href="group__hardware__pio.html#ga916d05e71da7f2173cd22b46bbfa0a11">pio0</a> or <a class="el" href="group__hardware__pio.html#ga923a261ba19804c404900228e99c9522">pio1</a> </td></tr>
3353     <tr><td class="paramname">sm</td><td>State machine index (0..3) </td></tr>
3354     <tr><td class="paramname">enabled</td><td>true to enable the state machine; false to disable </td></tr>
3355   </table>
3356   </dd>
3357 </dl>
3358
3359 </div>
3360 </div>
3361 <a id="gaef50ef92f7ea0666dffe939c0b3fd24c" name="gaef50ef92f7ea0666dffe939c0b3fd24c"></a>
3362 <h2 class="memtitle"><span class="permalink"><a href="#gaef50ef92f7ea0666dffe939c0b3fd24c">&#9670;&nbsp;</a></span>pio_sm_set_in_pins()</h2>
3363
3364 <div class="memitem">
3365 <div class="memproto">
3366 <table class="mlabels">
3367   <tr>
3368   <td class="mlabels-left">
3369       <table class="memname">
3370         <tr>
3371           <td class="memname">static void pio_sm_set_in_pins </td>
3372           <td>(</td>
3373           <td class="paramtype"><a class="el" href="structpio__hw__t.html">PIO</a>&#160;</td>
3374           <td class="paramname"><em>pio</em>, </td>
3375         </tr>
3376         <tr>
3377           <td class="paramkey"></td>
3378           <td></td>
3379           <td class="paramtype">uint&#160;</td>
3380           <td class="paramname"><em>sm</em>, </td>
3381         </tr>
3382         <tr>
3383           <td class="paramkey"></td>
3384           <td></td>
3385           <td class="paramtype">uint&#160;</td>
3386           <td class="paramname"><em>in_base</em>&#160;</td>
3387         </tr>
3388         <tr>
3389           <td></td>
3390           <td>)</td>
3391           <td></td><td></td>
3392         </tr>
3393       </table>
3394   </td>
3395   <td class="mlabels-right">
3396 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
3397   </tr>
3398 </table>
3399 </div><div class="memdoc">
3400
3401 <p>Set the current 'in' pins for a state machine. </p>
3402 <p >'in' pins can overlap with the 'out', 'set' and 'sideset' pins</p>
3403 <dl class="params"><dt>Parameters</dt><dd>
3404   <table class="params">
3405     <tr><td class="paramname">pio</td><td>The PIO instance; e.g. <a class="el" href="group__hardware__pio.html#ga916d05e71da7f2173cd22b46bbfa0a11">pio0</a> or <a class="el" href="group__hardware__pio.html#ga923a261ba19804c404900228e99c9522">pio1</a> </td></tr>
3406     <tr><td class="paramname">sm</td><td>State machine index (0..3) </td></tr>
3407     <tr><td class="paramname">in_base</td><td>0-31 First pin to use as input </td></tr>
3408   </table>
3409   </dd>
3410 </dl>
3411
3412 </div>
3413 </div>
3414 <a id="ga97b135c9016b91fbf237c93313d25fd4" name="ga97b135c9016b91fbf237c93313d25fd4"></a>
3415 <h2 class="memtitle"><span class="permalink"><a href="#ga97b135c9016b91fbf237c93313d25fd4">&#9670;&nbsp;</a></span>pio_sm_set_jmp_pin()</h2>
3416
3417 <div class="memitem">
3418 <div class="memproto">
3419 <table class="mlabels">
3420   <tr>
3421   <td class="mlabels-left">
3422       <table class="memname">
3423         <tr>
3424           <td class="memname">static void pio_sm_set_jmp_pin </td>
3425           <td>(</td>
3426           <td class="paramtype"><a class="el" href="structpio__hw__t.html">PIO</a>&#160;</td>
3427           <td class="paramname"><em>pio</em>, </td>
3428         </tr>
3429         <tr>
3430           <td class="paramkey"></td>
3431           <td></td>
3432           <td class="paramtype">uint&#160;</td>
3433           <td class="paramname"><em>sm</em>, </td>
3434         </tr>
3435         <tr>
3436           <td class="paramkey"></td>
3437           <td></td>
3438           <td class="paramtype">uint&#160;</td>
3439           <td class="paramname"><em>pin</em>&#160;</td>
3440         </tr>
3441         <tr>
3442           <td></td>
3443           <td>)</td>
3444           <td></td><td></td>
3445         </tr>
3446       </table>
3447   </td>
3448   <td class="mlabels-right">
3449 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
3450   </tr>
3451 </table>
3452 </div><div class="memdoc">
3453
3454 <p>Set the 'jmp' pin for a state machine. </p>
3455 <dl class="params"><dt>Parameters</dt><dd>
3456   <table class="params">
3457     <tr><td class="paramname">pio</td><td>The PIO instance; e.g. <a class="el" href="group__hardware__pio.html#ga916d05e71da7f2173cd22b46bbfa0a11">pio0</a> or <a class="el" href="group__hardware__pio.html#ga923a261ba19804c404900228e99c9522">pio1</a> </td></tr>
3458     <tr><td class="paramname">sm</td><td>State machine index (0..3) </td></tr>
3459     <tr><td class="paramname">pin</td><td>The raw GPIO pin number to use as the source for a <code>jmp pin</code> instruction </td></tr>
3460   </table>
3461   </dd>
3462 </dl>
3463
3464 </div>
3465 </div>
3466 <a id="ga7f0190e662c5b6e24d91044b42010ffc" name="ga7f0190e662c5b6e24d91044b42010ffc"></a>
3467 <h2 class="memtitle"><span class="permalink"><a href="#ga7f0190e662c5b6e24d91044b42010ffc">&#9670;&nbsp;</a></span>pio_sm_set_out_pins()</h2>
3468
3469 <div class="memitem">
3470 <div class="memproto">
3471 <table class="mlabels">
3472   <tr>
3473   <td class="mlabels-left">
3474       <table class="memname">
3475         <tr>
3476           <td class="memname">static void pio_sm_set_out_pins </td>
3477           <td>(</td>
3478           <td class="paramtype"><a class="el" href="structpio__hw__t.html">PIO</a>&#160;</td>
3479           <td class="paramname"><em>pio</em>, </td>
3480         </tr>
3481         <tr>
3482           <td class="paramkey"></td>
3483           <td></td>
3484           <td class="paramtype">uint&#160;</td>
3485           <td class="paramname"><em>sm</em>, </td>
3486         </tr>
3487         <tr>
3488           <td class="paramkey"></td>
3489           <td></td>
3490           <td class="paramtype">uint&#160;</td>
3491           <td class="paramname"><em>out_base</em>, </td>
3492         </tr>
3493         <tr>
3494           <td class="paramkey"></td>
3495           <td></td>
3496           <td class="paramtype">uint&#160;</td>
3497           <td class="paramname"><em>out_count</em>&#160;</td>
3498         </tr>
3499         <tr>
3500           <td></td>
3501           <td>)</td>
3502           <td></td><td></td>
3503         </tr>
3504       </table>
3505   </td>
3506   <td class="mlabels-right">
3507 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
3508   </tr>
3509 </table>
3510 </div><div class="memdoc">
3511
3512 <p>Set the current 'out' pins for a state machine. </p>
3513 <p >'out' pins can overlap with the 'in', 'set' and 'sideset' pins</p>
3514 <dl class="params"><dt>Parameters</dt><dd>
3515   <table class="params">
3516     <tr><td class="paramname">pio</td><td>The PIO instance; e.g. <a class="el" href="group__hardware__pio.html#ga916d05e71da7f2173cd22b46bbfa0a11">pio0</a> or <a class="el" href="group__hardware__pio.html#ga923a261ba19804c404900228e99c9522">pio1</a> </td></tr>
3517     <tr><td class="paramname">sm</td><td>State machine index (0..3) </td></tr>
3518     <tr><td class="paramname">out_base</td><td>0-31 First pin to set as output </td></tr>
3519     <tr><td class="paramname">out_count</td><td>0-32 Number of pins to set. </td></tr>
3520   </table>
3521   </dd>
3522 </dl>
3523
3524 </div>
3525 </div>
3526 <a id="ga8269f1ef4cb1e4b3b957d5f1fa6fc623" name="ga8269f1ef4cb1e4b3b957d5f1fa6fc623"></a>
3527 <h2 class="memtitle"><span class="permalink"><a href="#ga8269f1ef4cb1e4b3b957d5f1fa6fc623">&#9670;&nbsp;</a></span>pio_sm_set_pindirs_with_mask()</h2>
3528
3529 <div class="memitem">
3530 <div class="memproto">
3531       <table class="memname">
3532         <tr>
3533           <td class="memname">void pio_sm_set_pindirs_with_mask </td>
3534           <td>(</td>
3535           <td class="paramtype"><a class="el" href="structpio__hw__t.html">PIO</a>&#160;</td>
3536           <td class="paramname"><em>pio</em>, </td>
3537         </tr>
3538         <tr>
3539           <td class="paramkey"></td>
3540           <td></td>
3541           <td class="paramtype">uint&#160;</td>
3542           <td class="paramname"><em>sm</em>, </td>
3543         </tr>
3544         <tr>
3545           <td class="paramkey"></td>
3546           <td></td>
3547           <td class="paramtype">uint32_t&#160;</td>
3548           <td class="paramname"><em>pin_dirs</em>, </td>
3549         </tr>
3550         <tr>
3551           <td class="paramkey"></td>
3552           <td></td>
3553           <td class="paramtype">uint32_t&#160;</td>
3554           <td class="paramname"><em>pin_mask</em>&#160;</td>
3555         </tr>
3556         <tr>
3557           <td></td>
3558           <td>)</td>
3559           <td></td><td></td>
3560         </tr>
3561       </table>
3562 </div><div class="memdoc">
3563
3564 <p>Use a state machine to set the pin directions for multiple pins for the PIO instance. </p>
3565 <p >This method repeatedly reconfigures the target state machine's pin configuration and executes 'set' instructions to set pin directions on up to 32 pins, before restoring the state machine's pin configuration to what it was.</p>
3566 <p >This method is provided as a convenience to set initial pin directions, and should not be used against a state machine that is enabled.</p>
3567 <dl class="params"><dt>Parameters</dt><dd>
3568   <table class="params">
3569     <tr><td class="paramname">pio</td><td>The PIO instance; e.g. <a class="el" href="group__hardware__pio.html#ga916d05e71da7f2173cd22b46bbfa0a11">pio0</a> or <a class="el" href="group__hardware__pio.html#ga923a261ba19804c404900228e99c9522">pio1</a> </td></tr>
3570     <tr><td class="paramname">sm</td><td>State machine index (0..3) to use </td></tr>
3571     <tr><td class="paramname">pin_dirs</td><td>the pin directions to set - 1 = out, 0 = in (if the corresponding bit in pin_mask is set) </td></tr>
3572     <tr><td class="paramname">pin_mask</td><td>a bit for each pin to indicate whether the corresponding pin_value for that pin should be applied. </td></tr>
3573   </table>
3574   </dd>
3575 </dl>
3576
3577 </div>
3578 </div>
3579 <a id="ga1286f306263b413a8002c9db2b433d8b" name="ga1286f306263b413a8002c9db2b433d8b"></a>
3580 <h2 class="memtitle"><span class="permalink"><a href="#ga1286f306263b413a8002c9db2b433d8b">&#9670;&nbsp;</a></span>pio_sm_set_pins()</h2>
3581
3582 <div class="memitem">
3583 <div class="memproto">
3584       <table class="memname">
3585         <tr>
3586           <td class="memname">void pio_sm_set_pins </td>
3587           <td>(</td>
3588           <td class="paramtype"><a class="el" href="structpio__hw__t.html">PIO</a>&#160;</td>
3589           <td class="paramname"><em>pio</em>, </td>
3590         </tr>
3591         <tr>
3592           <td class="paramkey"></td>
3593           <td></td>
3594           <td class="paramtype">uint&#160;</td>
3595           <td class="paramname"><em>sm</em>, </td>
3596         </tr>
3597         <tr>
3598           <td class="paramkey"></td>
3599           <td></td>
3600           <td class="paramtype">uint32_t&#160;</td>
3601           <td class="paramname"><em>pin_values</em>&#160;</td>
3602         </tr>
3603         <tr>
3604           <td></td>
3605           <td>)</td>
3606           <td></td><td></td>
3607         </tr>
3608       </table>
3609 </div><div class="memdoc">
3610
3611 <p>Use a state machine to set a value on all pins for the PIO instance. </p>
3612 <p >This method repeatedly reconfigures the target state machine's pin configuration and executes 'set' instructions to set values on all 32 pins, before restoring the state machine's pin configuration to what it was.</p>
3613 <p >This method is provided as a convenience to set initial pin states, and should not be used against a state machine that is enabled.</p>
3614 <dl class="params"><dt>Parameters</dt><dd>
3615   <table class="params">
3616     <tr><td class="paramname">pio</td><td>The PIO instance; e.g. <a class="el" href="group__hardware__pio.html#ga916d05e71da7f2173cd22b46bbfa0a11">pio0</a> or <a class="el" href="group__hardware__pio.html#ga923a261ba19804c404900228e99c9522">pio1</a> </td></tr>
3617     <tr><td class="paramname">sm</td><td>State machine index (0..3) to use </td></tr>
3618     <tr><td class="paramname">pin_values</td><td>the pin values to set </td></tr>
3619   </table>
3620   </dd>
3621 </dl>
3622
3623 </div>
3624 </div>
3625 <a id="ga963167ca42f67f79ec5de6b47d6027d5" name="ga963167ca42f67f79ec5de6b47d6027d5"></a>
3626 <h2 class="memtitle"><span class="permalink"><a href="#ga963167ca42f67f79ec5de6b47d6027d5">&#9670;&nbsp;</a></span>pio_sm_set_pins_with_mask()</h2>
3627
3628 <div class="memitem">
3629 <div class="memproto">
3630       <table class="memname">
3631         <tr>
3632           <td class="memname">void pio_sm_set_pins_with_mask </td>
3633           <td>(</td>
3634           <td class="paramtype"><a class="el" href="structpio__hw__t.html">PIO</a>&#160;</td>
3635           <td class="paramname"><em>pio</em>, </td>
3636         </tr>
3637         <tr>
3638           <td class="paramkey"></td>
3639           <td></td>
3640           <td class="paramtype">uint&#160;</td>
3641           <td class="paramname"><em>sm</em>, </td>
3642         </tr>
3643         <tr>
3644           <td class="paramkey"></td>
3645           <td></td>
3646           <td class="paramtype">uint32_t&#160;</td>
3647           <td class="paramname"><em>pin_values</em>, </td>
3648         </tr>
3649         <tr>
3650           <td class="paramkey"></td>
3651           <td></td>
3652           <td class="paramtype">uint32_t&#160;</td>
3653           <td class="paramname"><em>pin_mask</em>&#160;</td>
3654         </tr>
3655         <tr>
3656           <td></td>
3657           <td>)</td>
3658           <td></td><td></td>
3659         </tr>
3660       </table>
3661 </div><div class="memdoc">
3662
3663 <p>Use a state machine to set a value on multiple pins for the PIO instance. </p>
3664 <p >This method repeatedly reconfigures the target state machine's pin configuration and executes 'set' instructions to set values on up to 32 pins, before restoring the state machine's pin configuration to what it was.</p>
3665 <p >This method is provided as a convenience to set initial pin states, and should not be used against a state machine that is enabled.</p>
3666 <dl class="params"><dt>Parameters</dt><dd>
3667   <table class="params">
3668     <tr><td class="paramname">pio</td><td>The PIO instance; e.g. <a class="el" href="group__hardware__pio.html#ga916d05e71da7f2173cd22b46bbfa0a11">pio0</a> or <a class="el" href="group__hardware__pio.html#ga923a261ba19804c404900228e99c9522">pio1</a> </td></tr>
3669     <tr><td class="paramname">sm</td><td>State machine index (0..3) to use </td></tr>
3670     <tr><td class="paramname">pin_values</td><td>the pin values to set (if the corresponding bit in pin_mask is set) </td></tr>
3671     <tr><td class="paramname">pin_mask</td><td>a bit for each pin to indicate whether the corresponding pin_value for that pin should be applied. </td></tr>
3672   </table>
3673   </dd>
3674 </dl>
3675
3676 </div>
3677 </div>
3678 <a id="gacaf6ee284dc834fbb742d1eef6180e6c" name="gacaf6ee284dc834fbb742d1eef6180e6c"></a>
3679 <h2 class="memtitle"><span class="permalink"><a href="#gacaf6ee284dc834fbb742d1eef6180e6c">&#9670;&nbsp;</a></span>pio_sm_set_set_pins()</h2>
3680
3681 <div class="memitem">
3682 <div class="memproto">
3683 <table class="mlabels">
3684   <tr>
3685   <td class="mlabels-left">
3686       <table class="memname">
3687         <tr>
3688           <td class="memname">static void pio_sm_set_set_pins </td>
3689           <td>(</td>
3690           <td class="paramtype"><a class="el" href="structpio__hw__t.html">PIO</a>&#160;</td>
3691           <td class="paramname"><em>pio</em>, </td>
3692         </tr>
3693         <tr>
3694           <td class="paramkey"></td>
3695           <td></td>
3696           <td class="paramtype">uint&#160;</td>
3697           <td class="paramname"><em>sm</em>, </td>
3698         </tr>
3699         <tr>
3700           <td class="paramkey"></td>
3701           <td></td>
3702           <td class="paramtype">uint&#160;</td>
3703           <td class="paramname"><em>set_base</em>, </td>
3704         </tr>
3705         <tr>
3706           <td class="paramkey"></td>
3707           <td></td>
3708           <td class="paramtype">uint&#160;</td>
3709           <td class="paramname"><em>set_count</em>&#160;</td>
3710         </tr>
3711         <tr>
3712           <td></td>
3713           <td>)</td>
3714           <td></td><td></td>
3715         </tr>
3716       </table>
3717   </td>
3718   <td class="mlabels-right">
3719 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
3720   </tr>
3721 </table>
3722 </div><div class="memdoc">
3723
3724 <p>Set the current 'set' pins for a state machine. </p>
3725 <p >'set' pins can overlap with the 'in', 'out' and 'sideset' pins</p>
3726 <dl class="params"><dt>Parameters</dt><dd>
3727   <table class="params">
3728     <tr><td class="paramname">pio</td><td>The PIO instance; e.g. <a class="el" href="group__hardware__pio.html#ga916d05e71da7f2173cd22b46bbfa0a11">pio0</a> or <a class="el" href="group__hardware__pio.html#ga923a261ba19804c404900228e99c9522">pio1</a> </td></tr>
3729     <tr><td class="paramname">sm</td><td>State machine index (0..3) </td></tr>
3730     <tr><td class="paramname">set_base</td><td>0-31 First pin to set as </td></tr>
3731     <tr><td class="paramname">set_count</td><td>0-5 Number of pins to set. </td></tr>
3732   </table>
3733   </dd>
3734 </dl>
3735
3736 </div>
3737 </div>
3738 <a id="ga87cb36afe5783e2e92bf528b1d50ea07" name="ga87cb36afe5783e2e92bf528b1d50ea07"></a>
3739 <h2 class="memtitle"><span class="permalink"><a href="#ga87cb36afe5783e2e92bf528b1d50ea07">&#9670;&nbsp;</a></span>pio_sm_set_sideset_pins()</h2>
3740
3741 <div class="memitem">
3742 <div class="memproto">
3743 <table class="mlabels">
3744   <tr>
3745   <td class="mlabels-left">
3746       <table class="memname">
3747         <tr>
3748           <td class="memname">static void pio_sm_set_sideset_pins </td>
3749           <td>(</td>
3750           <td class="paramtype"><a class="el" href="structpio__hw__t.html">PIO</a>&#160;</td>
3751           <td class="paramname"><em>pio</em>, </td>
3752         </tr>
3753         <tr>
3754           <td class="paramkey"></td>
3755           <td></td>
3756           <td class="paramtype">uint&#160;</td>
3757           <td class="paramname"><em>sm</em>, </td>
3758         </tr>
3759         <tr>
3760           <td class="paramkey"></td>
3761           <td></td>
3762           <td class="paramtype">uint&#160;</td>
3763           <td class="paramname"><em>sideset_base</em>&#160;</td>
3764         </tr>
3765         <tr>
3766           <td></td>
3767           <td>)</td>
3768           <td></td><td></td>
3769         </tr>
3770       </table>
3771   </td>
3772   <td class="mlabels-right">
3773 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
3774   </tr>
3775 </table>
3776 </div><div class="memdoc">
3777
3778 <p>Set the current 'sideset' pins for a state machine. </p>
3779 <p >'sideset' pins can overlap with the 'in', 'out' and 'set' pins</p>
3780 <dl class="params"><dt>Parameters</dt><dd>
3781   <table class="params">
3782     <tr><td class="paramname">pio</td><td>The PIO instance; e.g. <a class="el" href="group__hardware__pio.html#ga916d05e71da7f2173cd22b46bbfa0a11">pio0</a> or <a class="el" href="group__hardware__pio.html#ga923a261ba19804c404900228e99c9522">pio1</a> </td></tr>
3783     <tr><td class="paramname">sm</td><td>State machine index (0..3) </td></tr>
3784     <tr><td class="paramname">sideset_base</td><td>0-31 base pin for 'side set' </td></tr>
3785   </table>
3786   </dd>
3787 </dl>
3788
3789 </div>
3790 </div>
3791 <a id="ga74a681208957ab2bc8c8aafff9bb9f7c" name="ga74a681208957ab2bc8c8aafff9bb9f7c"></a>
3792 <h2 class="memtitle"><span class="permalink"><a href="#ga74a681208957ab2bc8c8aafff9bb9f7c">&#9670;&nbsp;</a></span>pio_sm_set_wrap()</h2>
3793
3794 <div class="memitem">
3795 <div class="memproto">
3796 <table class="mlabels">
3797   <tr>
3798   <td class="mlabels-left">
3799       <table class="memname">
3800         <tr>
3801           <td class="memname">static void pio_sm_set_wrap </td>
3802           <td>(</td>
3803           <td class="paramtype"><a class="el" href="structpio__hw__t.html">PIO</a>&#160;</td>
3804           <td class="paramname"><em>pio</em>, </td>
3805         </tr>
3806         <tr>
3807           <td class="paramkey"></td>
3808           <td></td>
3809           <td class="paramtype">uint&#160;</td>
3810           <td class="paramname"><em>sm</em>, </td>
3811         </tr>
3812         <tr>
3813           <td class="paramkey"></td>
3814           <td></td>
3815           <td class="paramtype">uint&#160;</td>
3816           <td class="paramname"><em>wrap_target</em>, </td>
3817         </tr>
3818         <tr>
3819           <td class="paramkey"></td>
3820           <td></td>
3821           <td class="paramtype">uint&#160;</td>
3822           <td class="paramname"><em>wrap</em>&#160;</td>
3823         </tr>
3824         <tr>
3825           <td></td>
3826           <td>)</td>
3827           <td></td><td></td>
3828         </tr>
3829       </table>
3830   </td>
3831   <td class="mlabels-right">
3832 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span>  </td>
3833   </tr>
3834 </table>
3835 </div><div class="memdoc">
3836
3837 <p>Set the current wrap configuration for a state machine. </p>
3838 <dl class="params"><dt>Parameters</dt><dd>
3839   <table class="params">
3840     <tr><td class="paramname">pio</td><td>The PIO instance; e.g. <a class="el" href="group__hardware__pio.html#ga916d05e71da7f2173cd22b46bbfa0a11">pio0</a> or <a class="el" href="group__hardware__pio.html#ga923a261ba19804c404900228e99c9522">pio1</a> </td></tr>
3841     <tr><td class="paramname">sm</td><td>State machine index (0..3) </td></tr>
3842     <tr><td class="paramname">wrap_target</td><td>the instruction memory address to wrap to </td></tr>
3843     <tr><td class="paramname">wrap</td><td>the instruction memory address after which to set the program counter to wrap_target if the instruction does not itself update the program_counter </td></tr>
3844   </table>
3845   </dd>
3846 </dl>
3847
3848 </div>
3849 </div>
3850 <a id="ga62328112de918932e4ed0955ce0054ab" name="ga62328112de918932e4ed0955ce0054ab"></a>
3851 <h2 class="memtitle"><span class="permalink"><a href="#ga62328112de918932e4ed0955ce0054ab">&#9670;&nbsp;</a></span>pio_sm_unclaim()</h2>
3852
3853 <div class="memitem">
3854 <div class="memproto">
3855       <table class="memname">
3856         <tr>
3857           <td class="memname">void pio_sm_unclaim </td>
3858           <td>(</td>
3859           <td class="paramtype"><a class="el" href="structpio__hw__t.html">PIO</a>&#160;</td>
3860           <td class="paramname"><em>pio</em>, </td>
3861         </tr>
3862         <tr>
3863           <td class="paramkey"></td>
3864           <td></td>
3865           <td class="paramtype">uint&#160;</td>
3866           <td class="paramname"><em>sm</em>&#160;</td>
3867         </tr>
3868         <tr>
3869           <td></td>
3870           <td>)</td>
3871           <td></td><td></td>
3872         </tr>
3873       </table>
3874 </div><div class="memdoc">
3875
3876 <p>Mark a state machine as no longer used. </p>
3877 <p >Method for cooperative claiming of hardware.</p>
3878 <dl class="params"><dt>Parameters</dt><dd>
3879   <table class="params">
3880     <tr><td class="paramname">pio</td><td>The PIO instance; e.g. <a class="el" href="group__hardware__pio.html#ga916d05e71da7f2173cd22b46bbfa0a11">pio0</a> or <a class="el" href="group__hardware__pio.html#ga923a261ba19804c404900228e99c9522">pio1</a> </td></tr>
3881     <tr><td class="paramname">sm</td><td>State machine index (0..3) </td></tr>
3882   </table>
3883   </dd>
3884 </dl>
3885
3886 </div>
3887 </div>
3888 </div><!-- contents -->
3889 </div><!-- doc-content -->
3890
3891         <script src="main.js"></script>
3892 </body>
3893 </html>
This page took 0.281917 seconds and 4 git commands to generate.