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">
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: sm_config</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"/>
27 <div class="navigation-mobile">
28 <div class="logo--mobile">
29 <a href="/"><img src="logo-mobile.svg" alt="Raspberry Pi"></a>
31 <div class="navigation-toggle">
32 <span class="line-1"></span>
36 <span class="line-3"></span>
39 <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
41 <a href="index.html"> <img src="logo.svg" alt="Raspberry Pi"></a>
42 <span style="display: inline-block; margin-top: 10px;">
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>
50 <!-- <div class="search">
52 <input type="search" name="search" id="search" placeholder="Search">
53 <input type="submit" value="Search">
56 <!-- Generated by Doxygen 1.9.4 -->
57 <script type="text/javascript">
58 /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
59 var searchBox = new SearchBox("searchBox", "search",'Search','.html');
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&dn=expat.txt MIT */
67 initMenu('',true,false,'search.php','Search');
68 $(document).ready(function() { init_search(); });
72 <div id="main-nav"></div>
74 <div id="side-nav" class="ui-resizable side-nav-resizable">
76 <div id="nav-tree-contents">
77 <div id="nav-sync" class="sync"></div>
80 <div id="splitbar" style="-moz-user-select:none;"
81 class="ui-resizable-handle">
84 <script type="text/javascript">
85 /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
86 $(document).ready(function(){initNavTree('group__sm__config.html',''); initResizable(); });
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)">
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">
105 <div class="summary">
106 <a href="#nested-classes">Data Structures</a> |
107 <a href="#func-members">Functions</a> </div>
108 <div class="headertitle"><div class="title">sm_config<div class="ingroups"><a class="el" href="group__hardware.html">Hardware APIs</a> » <a class="el" href="group__hardware__pio.html">hardware_pio</a></div></div></div>
110 <div class="contents">
112 <p>PIO state machine configuration.
113 <a href="#details">More...</a></p>
114 <table class="memberdecls">
115 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
116 Data Structures</h2></td></tr>
117 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structpio__sm__config.html">pio_sm_config</a></td></tr>
118 <tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">PIO Configuration structure. <a href="structpio__sm__config.html#details">More...</a><br /></td></tr>
119 <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
120 </table><table class="memberdecls">
121 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
122 Functions</h2></td></tr>
123 <tr class="memitem:ga1dbca28933c083592e6e359effe250bf"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__sm__config.html#ga1dbca28933c083592e6e359effe250bf">sm_config_set_out_pin_base</a> (<a class="el" href="structpio__sm__config.html">pio_sm_config</a> *c, uint out_base)</td></tr>
124 <tr class="memdesc:ga1dbca28933c083592e6e359effe250bf"><td class="mdescLeft"> </td><td class="mdescRight">Set the base of the 'out' pins in a state machine configuration. <a href="group__sm__config.html#ga1dbca28933c083592e6e359effe250bf">More...</a><br /></td></tr>
125 <tr class="separator:ga1dbca28933c083592e6e359effe250bf"><td class="memSeparator" colspan="2"> </td></tr>
126 <tr class="memitem:gade3d072e319fc7d10bec180a9692ea89"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__sm__config.html#gade3d072e319fc7d10bec180a9692ea89">sm_config_set_out_pin_count</a> (<a class="el" href="structpio__sm__config.html">pio_sm_config</a> *c, uint out_count)</td></tr>
127 <tr class="memdesc:gade3d072e319fc7d10bec180a9692ea89"><td class="mdescLeft"> </td><td class="mdescRight">Set the number of 'out' pins in a state machine configuration. <a href="group__sm__config.html#gade3d072e319fc7d10bec180a9692ea89">More...</a><br /></td></tr>
128 <tr class="separator:gade3d072e319fc7d10bec180a9692ea89"><td class="memSeparator" colspan="2"> </td></tr>
129 <tr class="memitem:gaf3004bbd996443d0c841664ebc92905c"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__sm__config.html#gaf3004bbd996443d0c841664ebc92905c">sm_config_set_out_pins</a> (<a class="el" href="structpio__sm__config.html">pio_sm_config</a> *c, uint out_base, uint out_count)</td></tr>
130 <tr class="memdesc:gaf3004bbd996443d0c841664ebc92905c"><td class="mdescLeft"> </td><td class="mdescRight">Set the 'out' pins in a state machine configuration. <a href="group__sm__config.html#gaf3004bbd996443d0c841664ebc92905c">More...</a><br /></td></tr>
131 <tr class="separator:gaf3004bbd996443d0c841664ebc92905c"><td class="memSeparator" colspan="2"> </td></tr>
132 <tr class="memitem:ga40d4807c0665d30ceab153b7444560eb"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__sm__config.html#ga40d4807c0665d30ceab153b7444560eb">sm_config_set_set_pin_base</a> (<a class="el" href="structpio__sm__config.html">pio_sm_config</a> *c, uint set_base)</td></tr>
133 <tr class="memdesc:ga40d4807c0665d30ceab153b7444560eb"><td class="mdescLeft"> </td><td class="mdescRight">Set the base of the 'set' pins in a state machine configuration. <a href="group__sm__config.html#ga40d4807c0665d30ceab153b7444560eb">More...</a><br /></td></tr>
134 <tr class="separator:ga40d4807c0665d30ceab153b7444560eb"><td class="memSeparator" colspan="2"> </td></tr>
135 <tr class="memitem:ga78e129fe383f2af0fc5e1448dea4c3d6"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__sm__config.html#ga78e129fe383f2af0fc5e1448dea4c3d6">sm_config_set_set_pin_count</a> (<a class="el" href="structpio__sm__config.html">pio_sm_config</a> *c, uint set_count)</td></tr>
136 <tr class="memdesc:ga78e129fe383f2af0fc5e1448dea4c3d6"><td class="mdescLeft"> </td><td class="mdescRight">Set the count of 'set' pins in a state machine configuration. <a href="group__sm__config.html#ga78e129fe383f2af0fc5e1448dea4c3d6">More...</a><br /></td></tr>
137 <tr class="separator:ga78e129fe383f2af0fc5e1448dea4c3d6"><td class="memSeparator" colspan="2"> </td></tr>
138 <tr class="memitem:gada1dff2c00b7d3a1cf722880c8373424"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__sm__config.html#gada1dff2c00b7d3a1cf722880c8373424">sm_config_set_set_pins</a> (<a class="el" href="structpio__sm__config.html">pio_sm_config</a> *c, uint set_base, uint set_count)</td></tr>
139 <tr class="memdesc:gada1dff2c00b7d3a1cf722880c8373424"><td class="mdescLeft"> </td><td class="mdescRight">Set the 'set' pins in a state machine configuration. <a href="group__sm__config.html#gada1dff2c00b7d3a1cf722880c8373424">More...</a><br /></td></tr>
140 <tr class="separator:gada1dff2c00b7d3a1cf722880c8373424"><td class="memSeparator" colspan="2"> </td></tr>
141 <tr class="memitem:gaaf804a05a2ebaa127d0d216b3d4e3e80"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__sm__config.html#gaaf804a05a2ebaa127d0d216b3d4e3e80">sm_config_set_in_pin_base</a> (<a class="el" href="structpio__sm__config.html">pio_sm_config</a> *c, uint in_base)</td></tr>
142 <tr class="memdesc:gaaf804a05a2ebaa127d0d216b3d4e3e80"><td class="mdescLeft"> </td><td class="mdescRight">Set the base of the 'in' pins in a state machine configuration. <a href="group__sm__config.html#gaaf804a05a2ebaa127d0d216b3d4e3e80">More...</a><br /></td></tr>
143 <tr class="separator:gaaf804a05a2ebaa127d0d216b3d4e3e80"><td class="memSeparator" colspan="2"> </td></tr>
144 <tr class="memitem:gac418400e30520ea3961d8977c180a4f9"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__sm__config.html#gac418400e30520ea3961d8977c180a4f9">sm_config_set_in_pins</a> (<a class="el" href="structpio__sm__config.html">pio_sm_config</a> *c, uint in_base)</td></tr>
145 <tr class="memdesc:gac418400e30520ea3961d8977c180a4f9"><td class="mdescLeft"> </td><td class="mdescRight">Set the base fpr the 'in' pins in a state machine configuration. <a href="group__sm__config.html#gac418400e30520ea3961d8977c180a4f9">More...</a><br /></td></tr>
146 <tr class="separator:gac418400e30520ea3961d8977c180a4f9"><td class="memSeparator" colspan="2"> </td></tr>
147 <tr class="memitem:ga7abfda1f60c62565d5b13536b0605af7"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__sm__config.html#ga7abfda1f60c62565d5b13536b0605af7">sm_config_set_sideset_pin_base</a> (<a class="el" href="structpio__sm__config.html">pio_sm_config</a> *c, uint sideset_base)</td></tr>
148 <tr class="memdesc:ga7abfda1f60c62565d5b13536b0605af7"><td class="mdescLeft"> </td><td class="mdescRight">Set the base of the 'sideset' pins in a state machine configuration. <a href="group__sm__config.html#ga7abfda1f60c62565d5b13536b0605af7">More...</a><br /></td></tr>
149 <tr class="separator:ga7abfda1f60c62565d5b13536b0605af7"><td class="memSeparator" colspan="2"> </td></tr>
150 <tr class="memitem:gad55bf8b410fa1d13bd1bd020587e01d7"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__sm__config.html#gad55bf8b410fa1d13bd1bd020587e01d7">sm_config_set_sideset_pins</a> (<a class="el" href="structpio__sm__config.html">pio_sm_config</a> *c, uint sideset_base)</td></tr>
151 <tr class="memdesc:gad55bf8b410fa1d13bd1bd020587e01d7"><td class="mdescLeft"> </td><td class="mdescRight">Set the 'sideset' pins in a state machine configuration. <a href="group__sm__config.html#gad55bf8b410fa1d13bd1bd020587e01d7">More...</a><br /></td></tr>
152 <tr class="separator:gad55bf8b410fa1d13bd1bd020587e01d7"><td class="memSeparator" colspan="2"> </td></tr>
153 <tr class="memitem:gaf543422206a8dbdc2efea85818dd650e"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__sm__config.html#gaf543422206a8dbdc2efea85818dd650e">sm_config_set_sideset</a> (<a class="el" href="structpio__sm__config.html">pio_sm_config</a> *c, uint bit_count, bool optional, bool pindirs)</td></tr>
154 <tr class="memdesc:gaf543422206a8dbdc2efea85818dd650e"><td class="mdescLeft"> </td><td class="mdescRight">Set the 'sideset' options in a state machine configuration. <a href="group__sm__config.html#gaf543422206a8dbdc2efea85818dd650e">More...</a><br /></td></tr>
155 <tr class="separator:gaf543422206a8dbdc2efea85818dd650e"><td class="memSeparator" colspan="2"> </td></tr>
156 <tr class="memitem:ga365abc6d25301810ca5ee11e5b36c763"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__sm__config.html#ga365abc6d25301810ca5ee11e5b36c763">sm_config_set_clkdiv_int_frac</a> (<a class="el" href="structpio__sm__config.html">pio_sm_config</a> *c, uint16_t div_int, uint8_t div_frac)</td></tr>
157 <tr class="memdesc:ga365abc6d25301810ca5ee11e5b36c763"><td class="mdescLeft"> </td><td class="mdescRight">Set the state machine clock divider (from integer and fractional parts - 16:8) in a state machine configuration. <a href="group__sm__config.html#ga365abc6d25301810ca5ee11e5b36c763">More...</a><br /></td></tr>
158 <tr class="separator:ga365abc6d25301810ca5ee11e5b36c763"><td class="memSeparator" colspan="2"> </td></tr>
159 <tr class="memitem:gae8c09c7a4372da95ad777faae51c5a24"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__sm__config.html#gae8c09c7a4372da95ad777faae51c5a24">sm_config_set_clkdiv</a> (<a class="el" href="structpio__sm__config.html">pio_sm_config</a> *c, float div)</td></tr>
160 <tr class="memdesc:gae8c09c7a4372da95ad777faae51c5a24"><td class="mdescLeft"> </td><td class="mdescRight">Set the state machine clock divider (from a floating point value) in a state machine configuration. <a href="group__sm__config.html#gae8c09c7a4372da95ad777faae51c5a24">More...</a><br /></td></tr>
161 <tr class="separator:gae8c09c7a4372da95ad777faae51c5a24"><td class="memSeparator" colspan="2"> </td></tr>
162 <tr class="memitem:gafb753e8b35bbea9209ca4399a845f89c"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__sm__config.html#gafb753e8b35bbea9209ca4399a845f89c">sm_config_set_wrap</a> (<a class="el" href="structpio__sm__config.html">pio_sm_config</a> *c, uint wrap_target, uint wrap)</td></tr>
163 <tr class="memdesc:gafb753e8b35bbea9209ca4399a845f89c"><td class="mdescLeft"> </td><td class="mdescRight">Set the wrap addresses in a state machine configuration. <a href="group__sm__config.html#gafb753e8b35bbea9209ca4399a845f89c">More...</a><br /></td></tr>
164 <tr class="separator:gafb753e8b35bbea9209ca4399a845f89c"><td class="memSeparator" colspan="2"> </td></tr>
165 <tr class="memitem:gaf2bfc66d6427ff92519e38dcb611133b"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__sm__config.html#gaf2bfc66d6427ff92519e38dcb611133b">sm_config_set_jmp_pin</a> (<a class="el" href="structpio__sm__config.html">pio_sm_config</a> *c, uint pin)</td></tr>
166 <tr class="memdesc:gaf2bfc66d6427ff92519e38dcb611133b"><td class="mdescLeft"> </td><td class="mdescRight">Set the 'jmp' pin in a state machine configuration. <a href="group__sm__config.html#gaf2bfc66d6427ff92519e38dcb611133b">More...</a><br /></td></tr>
167 <tr class="separator:gaf2bfc66d6427ff92519e38dcb611133b"><td class="memSeparator" colspan="2"> </td></tr>
168 <tr class="memitem:gaed7a6e7dc4f1979c7c62e4773df8c79b"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__sm__config.html#gaed7a6e7dc4f1979c7c62e4773df8c79b">sm_config_set_in_shift</a> (<a class="el" href="structpio__sm__config.html">pio_sm_config</a> *c, bool shift_right, bool autopush, uint push_threshold)</td></tr>
169 <tr class="memdesc:gaed7a6e7dc4f1979c7c62e4773df8c79b"><td class="mdescLeft"> </td><td class="mdescRight">Setup 'in' shifting parameters in a state machine configuration. <a href="group__sm__config.html#gaed7a6e7dc4f1979c7c62e4773df8c79b">More...</a><br /></td></tr>
170 <tr class="separator:gaed7a6e7dc4f1979c7c62e4773df8c79b"><td class="memSeparator" colspan="2"> </td></tr>
171 <tr class="memitem:ga613bed03e10e569f1b7aede74d40a5b5"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__sm__config.html#ga613bed03e10e569f1b7aede74d40a5b5">sm_config_set_out_shift</a> (<a class="el" href="structpio__sm__config.html">pio_sm_config</a> *c, bool shift_right, bool autopull, uint pull_threshold)</td></tr>
172 <tr class="memdesc:ga613bed03e10e569f1b7aede74d40a5b5"><td class="mdescLeft"> </td><td class="mdescRight">Setup 'out' shifting parameters in a state machine configuration. <a href="group__sm__config.html#ga613bed03e10e569f1b7aede74d40a5b5">More...</a><br /></td></tr>
173 <tr class="separator:ga613bed03e10e569f1b7aede74d40a5b5"><td class="memSeparator" colspan="2"> </td></tr>
174 <tr class="memitem:gafea1a06362182514518ebd91b2d52fd5"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__sm__config.html#gafea1a06362182514518ebd91b2d52fd5">sm_config_set_fifo_join</a> (<a class="el" href="structpio__sm__config.html">pio_sm_config</a> *c, enum <a class="el" href="group__hardware__pio.html#ga7d415b966abbc1c25315d0775d093356">pio_fifo_join</a> join)</td></tr>
175 <tr class="memdesc:gafea1a06362182514518ebd91b2d52fd5"><td class="mdescLeft"> </td><td class="mdescRight">Setup the FIFO joining in a state machine configuration. <a href="group__sm__config.html#gafea1a06362182514518ebd91b2d52fd5">More...</a><br /></td></tr>
176 <tr class="separator:gafea1a06362182514518ebd91b2d52fd5"><td class="memSeparator" colspan="2"> </td></tr>
177 <tr class="memitem:ga8a9141ceadf9e735b1e96457865de3f6"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__sm__config.html#ga8a9141ceadf9e735b1e96457865de3f6">sm_config_set_out_special</a> (<a class="el" href="structpio__sm__config.html">pio_sm_config</a> *c, bool sticky, bool has_enable_pin, uint enable_pin_index)</td></tr>
178 <tr class="memdesc:ga8a9141ceadf9e735b1e96457865de3f6"><td class="mdescLeft"> </td><td class="mdescRight">Set special 'out' operations in a state machine configuration. <a href="group__sm__config.html#ga8a9141ceadf9e735b1e96457865de3f6">More...</a><br /></td></tr>
179 <tr class="separator:ga8a9141ceadf9e735b1e96457865de3f6"><td class="memSeparator" colspan="2"> </td></tr>
180 <tr class="memitem:gacd24870944ce2f00f3f7847bb3e5d543"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__sm__config.html#gacd24870944ce2f00f3f7847bb3e5d543">sm_config_set_mov_status</a> (<a class="el" href="structpio__sm__config.html">pio_sm_config</a> *c, enum <a class="el" href="group__hardware__pio.html#ga356b3f4974cd31fdc4a2de381aceea5e">pio_mov_status_type</a> status_sel, uint status_n)</td></tr>
181 <tr class="memdesc:gacd24870944ce2f00f3f7847bb3e5d543"><td class="mdescLeft"> </td><td class="mdescRight">Set source for 'mov status' in a state machine configuration. <a href="group__sm__config.html#gacd24870944ce2f00f3f7847bb3e5d543">More...</a><br /></td></tr>
182 <tr class="separator:gacd24870944ce2f00f3f7847bb3e5d543"><td class="memSeparator" colspan="2"> </td></tr>
183 <tr class="memitem:gaf2d2a23b08ba74188160469b3fd09936"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="structpio__sm__config.html">pio_sm_config</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__sm__config.html#gaf2d2a23b08ba74188160469b3fd09936">pio_get_default_sm_config</a> (void)</td></tr>
184 <tr class="memdesc:gaf2d2a23b08ba74188160469b3fd09936"><td class="mdescLeft"> </td><td class="mdescRight">Get the default state machine configuration. <a href="group__sm__config.html#gaf2d2a23b08ba74188160469b3fd09936">More...</a><br /></td></tr>
185 <tr class="separator:gaf2d2a23b08ba74188160469b3fd09936"><td class="memSeparator" colspan="2"> </td></tr>
187 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
188 <p >PIO state machine configuration. </p>
189 <p >A PIO block needs to be configured, these functions provide helpers to set up configuration structures. See <a class="el" href="group__hardware__pio.html#ga28e9a84f3332ebf088f665d4b676117b">pio_sm_set_config</a> </p>
190 <h2 class="groupheader">Function Documentation</h2>
191 <a id="gaf2d2a23b08ba74188160469b3fd09936" name="gaf2d2a23b08ba74188160469b3fd09936"></a>
192 <h2 class="memtitle"><span class="permalink"><a href="#gaf2d2a23b08ba74188160469b3fd09936">◆ </a></span>pio_get_default_sm_config()</h2>
194 <div class="memitem">
195 <div class="memproto">
196 <table class="mlabels">
198 <td class="mlabels-left">
199 <table class="memname">
201 <td class="memname">static <a class="el" href="structpio__sm__config.html">pio_sm_config</a> pio_get_default_sm_config </td>
203 <td class="paramtype">void </td>
204 <td class="paramname"></td><td>)</td>
209 <td class="mlabels-right">
210 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
213 </div><div class="memdoc">
215 <p>Get the default state machine configuration. </p>
216 <table class="markdownTable">
217 <tr class="markdownTableHead">
218 <th class="markdownTableHeadNone">Setting </th><th class="markdownTableHeadNone">Default </th></tr>
219 <tr class="markdownTableRowOdd">
220 <td class="markdownTableBodyNone">Out Pins </td><td class="markdownTableBodyNone">32 starting at 0 </td></tr>
221 <tr class="markdownTableRowEven">
222 <td class="markdownTableBodyNone">Set Pins </td><td class="markdownTableBodyNone">0 starting at 0 </td></tr>
223 <tr class="markdownTableRowOdd">
224 <td class="markdownTableBodyNone">In Pins (base) </td><td class="markdownTableBodyNone">0 </td></tr>
225 <tr class="markdownTableRowEven">
226 <td class="markdownTableBodyNone">Side Set Pins (base) </td><td class="markdownTableBodyNone">0 </td></tr>
227 <tr class="markdownTableRowOdd">
228 <td class="markdownTableBodyNone">Side Set </td><td class="markdownTableBodyNone">disabled </td></tr>
229 <tr class="markdownTableRowEven">
230 <td class="markdownTableBodyNone">Wrap </td><td class="markdownTableBodyNone">wrap=31, wrap_to=0 </td></tr>
231 <tr class="markdownTableRowOdd">
232 <td class="markdownTableBodyNone">In Shift </td><td class="markdownTableBodyNone">shift_direction=right, autopush=false, push_threshold=32 </td></tr>
233 <tr class="markdownTableRowEven">
234 <td class="markdownTableBodyNone">Out Shift </td><td class="markdownTableBodyNone">shift_direction=right, autopull=false, pull_threshold=32 </td></tr>
235 <tr class="markdownTableRowOdd">
236 <td class="markdownTableBodyNone">Jmp Pin </td><td class="markdownTableBodyNone">0 </td></tr>
237 <tr class="markdownTableRowEven">
238 <td class="markdownTableBodyNone">Out Special </td><td class="markdownTableBodyNone">sticky=false, has_enable_pin=false, enable_pin_index=0 </td></tr>
239 <tr class="markdownTableRowOdd">
240 <td class="markdownTableBodyNone">Mov Status </td><td class="markdownTableBodyNone">status_sel=STATUS_TX_LESSTHAN, n=0 </td></tr>
242 <dl class="section return"><dt>Returns</dt><dd>the default state machine configuration which can then be modified. </dd></dl>
246 <a id="gae8c09c7a4372da95ad777faae51c5a24" name="gae8c09c7a4372da95ad777faae51c5a24"></a>
247 <h2 class="memtitle"><span class="permalink"><a href="#gae8c09c7a4372da95ad777faae51c5a24">◆ </a></span>sm_config_set_clkdiv()</h2>
249 <div class="memitem">
250 <div class="memproto">
251 <table class="mlabels">
253 <td class="mlabels-left">
254 <table class="memname">
256 <td class="memname">static void sm_config_set_clkdiv </td>
258 <td class="paramtype"><a class="el" href="structpio__sm__config.html">pio_sm_config</a> * </td>
259 <td class="paramname"><em>c</em>, </td>
262 <td class="paramkey"></td>
264 <td class="paramtype">float </td>
265 <td class="paramname"><em>div</em> </td>
274 <td class="mlabels-right">
275 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
278 </div><div class="memdoc">
280 <p>Set the state machine clock divider (from a floating point value) in a state machine configuration. </p>
281 <p >The clock divider slows the state machine's execution by masking the system clock on some cycles, in a repeating pattern, so that the state machine does not advance. Effectively this produces a slower clock for the state machine to run from, which can be used to generate e.g. a particular UART baud rate. See the datasheet for further detail.</p>
282 <dl class="params"><dt>Parameters</dt><dd>
283 <table class="params">
284 <tr><td class="paramname">c</td><td>Pointer to the configuration structure to modify </td></tr>
285 <tr><td class="paramname">div</td><td>The fractional divisor to be set. 1 for full speed. An integer clock divisor of n will cause the state machine to run 1 cycle in every n. Note that for small n, the jitter introduced by a fractional divider (e.g. 2.5) may be unacceptable although it will depend on the use case. </td></tr>
292 <a id="ga365abc6d25301810ca5ee11e5b36c763" name="ga365abc6d25301810ca5ee11e5b36c763"></a>
293 <h2 class="memtitle"><span class="permalink"><a href="#ga365abc6d25301810ca5ee11e5b36c763">◆ </a></span>sm_config_set_clkdiv_int_frac()</h2>
295 <div class="memitem">
296 <div class="memproto">
297 <table class="mlabels">
299 <td class="mlabels-left">
300 <table class="memname">
302 <td class="memname">static void sm_config_set_clkdiv_int_frac </td>
304 <td class="paramtype"><a class="el" href="structpio__sm__config.html">pio_sm_config</a> * </td>
305 <td class="paramname"><em>c</em>, </td>
308 <td class="paramkey"></td>
310 <td class="paramtype">uint16_t </td>
311 <td class="paramname"><em>div_int</em>, </td>
314 <td class="paramkey"></td>
316 <td class="paramtype">uint8_t </td>
317 <td class="paramname"><em>div_frac</em> </td>
326 <td class="mlabels-right">
327 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
330 </div><div class="memdoc">
332 <p>Set the state machine clock divider (from integer and fractional parts - 16:8) in a state machine configuration. </p>
333 <p >The clock divider can slow the state machine's execution to some rate below the system clock frequency, by enabling the state machine on some cycles but not on others, in a regular pattern. This can be used to generate e.g. a given UART baud rate. See the datasheet for further detail.</p>
334 <dl class="params"><dt>Parameters</dt><dd>
335 <table class="params">
336 <tr><td class="paramname">c</td><td>Pointer to the configuration structure to modify </td></tr>
337 <tr><td class="paramname">div_int</td><td>Integer part of the divisor </td></tr>
338 <tr><td class="paramname">div_frac</td><td>Fractional part in 1/256ths </td></tr>
342 <dl class="section see"><dt>See also</dt><dd><a class="el" href="group__sm__config.html#gae8c09c7a4372da95ad777faae51c5a24" title="Set the state machine clock divider (from a floating point value) in a state machine configuration.">sm_config_set_clkdiv()</a> </dd></dl>
346 <a id="gafea1a06362182514518ebd91b2d52fd5" name="gafea1a06362182514518ebd91b2d52fd5"></a>
347 <h2 class="memtitle"><span class="permalink"><a href="#gafea1a06362182514518ebd91b2d52fd5">◆ </a></span>sm_config_set_fifo_join()</h2>
349 <div class="memitem">
350 <div class="memproto">
351 <table class="mlabels">
353 <td class="mlabels-left">
354 <table class="memname">
356 <td class="memname">static void sm_config_set_fifo_join </td>
358 <td class="paramtype"><a class="el" href="structpio__sm__config.html">pio_sm_config</a> * </td>
359 <td class="paramname"><em>c</em>, </td>
362 <td class="paramkey"></td>
364 <td class="paramtype">enum <a class="el" href="group__hardware__pio.html#ga7d415b966abbc1c25315d0775d093356">pio_fifo_join</a> </td>
365 <td class="paramname"><em>join</em> </td>
374 <td class="mlabels-right">
375 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
378 </div><div class="memdoc">
380 <p>Setup the FIFO joining in a state machine configuration. </p>
381 <dl class="params"><dt>Parameters</dt><dd>
382 <table class="params">
383 <tr><td class="paramname">c</td><td>Pointer to the configuration structure to modify </td></tr>
384 <tr><td class="paramname">join</td><td>Specifies the join type. </td></tr>
388 <dl class="section see"><dt>See also</dt><dd>enum <a class="el" href="group__hardware__pio.html#ga7d415b966abbc1c25315d0775d093356" title="FIFO join states.">pio_fifo_join</a> </dd></dl>
392 <a id="gaaf804a05a2ebaa127d0d216b3d4e3e80" name="gaaf804a05a2ebaa127d0d216b3d4e3e80"></a>
393 <h2 class="memtitle"><span class="permalink"><a href="#gaaf804a05a2ebaa127d0d216b3d4e3e80">◆ </a></span>sm_config_set_in_pin_base()</h2>
395 <div class="memitem">
396 <div class="memproto">
397 <table class="mlabels">
399 <td class="mlabels-left">
400 <table class="memname">
402 <td class="memname">static void sm_config_set_in_pin_base </td>
404 <td class="paramtype"><a class="el" href="structpio__sm__config.html">pio_sm_config</a> * </td>
405 <td class="paramname"><em>c</em>, </td>
408 <td class="paramkey"></td>
410 <td class="paramtype">uint </td>
411 <td class="paramname"><em>in_base</em> </td>
420 <td class="mlabels-right">
421 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
424 </div><div class="memdoc">
426 <p>Set the base of the 'in' pins in a state machine configuration. </p>
427 <p >'in' pins can overlap with the 'out', 'set' and 'sideset' pins</p>
428 <dl class="params"><dt>Parameters</dt><dd>
429 <table class="params">
430 <tr><td class="paramname">c</td><td>Pointer to the configuration structure to modify </td></tr>
431 <tr><td class="paramname">in_base</td><td>0-31 First pin to use as input </td></tr>
438 <a id="gac418400e30520ea3961d8977c180a4f9" name="gac418400e30520ea3961d8977c180a4f9"></a>
439 <h2 class="memtitle"><span class="permalink"><a href="#gac418400e30520ea3961d8977c180a4f9">◆ </a></span>sm_config_set_in_pins()</h2>
441 <div class="memitem">
442 <div class="memproto">
443 <table class="mlabels">
445 <td class="mlabels-left">
446 <table class="memname">
448 <td class="memname">static void sm_config_set_in_pins </td>
450 <td class="paramtype"><a class="el" href="structpio__sm__config.html">pio_sm_config</a> * </td>
451 <td class="paramname"><em>c</em>, </td>
454 <td class="paramkey"></td>
456 <td class="paramtype">uint </td>
457 <td class="paramname"><em>in_base</em> </td>
466 <td class="mlabels-right">
467 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
470 </div><div class="memdoc">
472 <p>Set the base fpr the 'in' pins in a state machine configuration. </p>
473 <p >'in' pins can overlap with the 'out', 'set' and 'sideset' pins</p>
474 <dl class="params"><dt>Parameters</dt><dd>
475 <table class="params">
476 <tr><td class="paramname">c</td><td>Pointer to the configuration structure to modify </td></tr>
477 <tr><td class="paramname">in_base</td><td>0-31 First pin to use as input </td></tr>
484 <a id="gaed7a6e7dc4f1979c7c62e4773df8c79b" name="gaed7a6e7dc4f1979c7c62e4773df8c79b"></a>
485 <h2 class="memtitle"><span class="permalink"><a href="#gaed7a6e7dc4f1979c7c62e4773df8c79b">◆ </a></span>sm_config_set_in_shift()</h2>
487 <div class="memitem">
488 <div class="memproto">
489 <table class="mlabels">
491 <td class="mlabels-left">
492 <table class="memname">
494 <td class="memname">static void sm_config_set_in_shift </td>
496 <td class="paramtype"><a class="el" href="structpio__sm__config.html">pio_sm_config</a> * </td>
497 <td class="paramname"><em>c</em>, </td>
500 <td class="paramkey"></td>
502 <td class="paramtype">bool </td>
503 <td class="paramname"><em>shift_right</em>, </td>
506 <td class="paramkey"></td>
508 <td class="paramtype">bool </td>
509 <td class="paramname"><em>autopush</em>, </td>
512 <td class="paramkey"></td>
514 <td class="paramtype">uint </td>
515 <td class="paramname"><em>push_threshold</em> </td>
524 <td class="mlabels-right">
525 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
528 </div><div class="memdoc">
530 <p>Setup 'in' shifting parameters in a state machine configuration. </p>
531 <dl class="params"><dt>Parameters</dt><dd>
532 <table class="params">
533 <tr><td class="paramname">c</td><td>Pointer to the configuration structure to modify </td></tr>
534 <tr><td class="paramname">shift_right</td><td>true to shift ISR to right, false to shift ISR to left </td></tr>
535 <tr><td class="paramname">autopush</td><td>whether autopush is enabled </td></tr>
536 <tr><td class="paramname">push_threshold</td><td>threshold in bits to shift in before auto/conditional re-pushing of the ISR </td></tr>
543 <a id="gaf2bfc66d6427ff92519e38dcb611133b" name="gaf2bfc66d6427ff92519e38dcb611133b"></a>
544 <h2 class="memtitle"><span class="permalink"><a href="#gaf2bfc66d6427ff92519e38dcb611133b">◆ </a></span>sm_config_set_jmp_pin()</h2>
546 <div class="memitem">
547 <div class="memproto">
548 <table class="mlabels">
550 <td class="mlabels-left">
551 <table class="memname">
553 <td class="memname">static void sm_config_set_jmp_pin </td>
555 <td class="paramtype"><a class="el" href="structpio__sm__config.html">pio_sm_config</a> * </td>
556 <td class="paramname"><em>c</em>, </td>
559 <td class="paramkey"></td>
561 <td class="paramtype">uint </td>
562 <td class="paramname"><em>pin</em> </td>
571 <td class="mlabels-right">
572 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
575 </div><div class="memdoc">
577 <p>Set the 'jmp' pin in a state machine configuration. </p>
578 <dl class="params"><dt>Parameters</dt><dd>
579 <table class="params">
580 <tr><td class="paramname">c</td><td>Pointer to the configuration structure to modify </td></tr>
581 <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>
588 <a id="gacd24870944ce2f00f3f7847bb3e5d543" name="gacd24870944ce2f00f3f7847bb3e5d543"></a>
589 <h2 class="memtitle"><span class="permalink"><a href="#gacd24870944ce2f00f3f7847bb3e5d543">◆ </a></span>sm_config_set_mov_status()</h2>
591 <div class="memitem">
592 <div class="memproto">
593 <table class="mlabels">
595 <td class="mlabels-left">
596 <table class="memname">
598 <td class="memname">static void sm_config_set_mov_status </td>
600 <td class="paramtype"><a class="el" href="structpio__sm__config.html">pio_sm_config</a> * </td>
601 <td class="paramname"><em>c</em>, </td>
604 <td class="paramkey"></td>
606 <td class="paramtype">enum <a class="el" href="group__hardware__pio.html#ga356b3f4974cd31fdc4a2de381aceea5e">pio_mov_status_type</a> </td>
607 <td class="paramname"><em>status_sel</em>, </td>
610 <td class="paramkey"></td>
612 <td class="paramtype">uint </td>
613 <td class="paramname"><em>status_n</em> </td>
622 <td class="mlabels-right">
623 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
626 </div><div class="memdoc">
628 <p>Set source for 'mov status' in a state machine configuration. </p>
629 <dl class="params"><dt>Parameters</dt><dd>
630 <table class="params">
631 <tr><td class="paramname">c</td><td>Pointer to the configuration structure to modify </td></tr>
632 <tr><td class="paramname">status_sel</td><td>the status operation selector. </td></tr>
636 <dl class="section see"><dt>See also</dt><dd>enum <a class="el" href="group__hardware__pio.html#ga356b3f4974cd31fdc4a2de381aceea5e" title="MOV status types.">pio_mov_status_type</a> </dd></dl>
637 <dl class="params"><dt>Parameters</dt><dd>
638 <table class="params">
639 <tr><td class="paramname">status_n</td><td>parameter for the mov status operation (currently a bit count) </td></tr>
646 <a id="ga1dbca28933c083592e6e359effe250bf" name="ga1dbca28933c083592e6e359effe250bf"></a>
647 <h2 class="memtitle"><span class="permalink"><a href="#ga1dbca28933c083592e6e359effe250bf">◆ </a></span>sm_config_set_out_pin_base()</h2>
649 <div class="memitem">
650 <div class="memproto">
651 <table class="mlabels">
653 <td class="mlabels-left">
654 <table class="memname">
656 <td class="memname">static void sm_config_set_out_pin_base </td>
658 <td class="paramtype"><a class="el" href="structpio__sm__config.html">pio_sm_config</a> * </td>
659 <td class="paramname"><em>c</em>, </td>
662 <td class="paramkey"></td>
664 <td class="paramtype">uint </td>
665 <td class="paramname"><em>out_base</em> </td>
674 <td class="mlabels-right">
675 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
678 </div><div class="memdoc">
680 <p>Set the base of the 'out' pins in a state machine configuration. </p>
681 <p >'out' pins can overlap with the 'in', 'set' and 'sideset' pins</p>
682 <dl class="params"><dt>Parameters</dt><dd>
683 <table class="params">
684 <tr><td class="paramname">c</td><td>Pointer to the configuration structure to modify </td></tr>
685 <tr><td class="paramname">out_base</td><td>0-31 First pin to set as output </td></tr>
692 <a id="gade3d072e319fc7d10bec180a9692ea89" name="gade3d072e319fc7d10bec180a9692ea89"></a>
693 <h2 class="memtitle"><span class="permalink"><a href="#gade3d072e319fc7d10bec180a9692ea89">◆ </a></span>sm_config_set_out_pin_count()</h2>
695 <div class="memitem">
696 <div class="memproto">
697 <table class="mlabels">
699 <td class="mlabels-left">
700 <table class="memname">
702 <td class="memname">static void sm_config_set_out_pin_count </td>
704 <td class="paramtype"><a class="el" href="structpio__sm__config.html">pio_sm_config</a> * </td>
705 <td class="paramname"><em>c</em>, </td>
708 <td class="paramkey"></td>
710 <td class="paramtype">uint </td>
711 <td class="paramname"><em>out_count</em> </td>
720 <td class="mlabels-right">
721 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
724 </div><div class="memdoc">
726 <p>Set the number of 'out' pins in a state machine configuration. </p>
727 <p >'out' pins can overlap with the 'in', 'set' and 'sideset' pins</p>
728 <dl class="params"><dt>Parameters</dt><dd>
729 <table class="params">
730 <tr><td class="paramname">c</td><td>Pointer to the configuration structure to modify </td></tr>
731 <tr><td class="paramname">out_count</td><td>0-32 Number of pins to set. </td></tr>
738 <a id="gaf3004bbd996443d0c841664ebc92905c" name="gaf3004bbd996443d0c841664ebc92905c"></a>
739 <h2 class="memtitle"><span class="permalink"><a href="#gaf3004bbd996443d0c841664ebc92905c">◆ </a></span>sm_config_set_out_pins()</h2>
741 <div class="memitem">
742 <div class="memproto">
743 <table class="mlabels">
745 <td class="mlabels-left">
746 <table class="memname">
748 <td class="memname">static void sm_config_set_out_pins </td>
750 <td class="paramtype"><a class="el" href="structpio__sm__config.html">pio_sm_config</a> * </td>
751 <td class="paramname"><em>c</em>, </td>
754 <td class="paramkey"></td>
756 <td class="paramtype">uint </td>
757 <td class="paramname"><em>out_base</em>, </td>
760 <td class="paramkey"></td>
762 <td class="paramtype">uint </td>
763 <td class="paramname"><em>out_count</em> </td>
772 <td class="mlabels-right">
773 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
776 </div><div class="memdoc">
778 <p>Set the 'out' pins in a state machine configuration. </p>
779 <p >'out' pins can overlap with the 'in', 'set' and 'sideset' pins</p>
780 <dl class="params"><dt>Parameters</dt><dd>
781 <table class="params">
782 <tr><td class="paramname">c</td><td>Pointer to the configuration structure to modify </td></tr>
783 <tr><td class="paramname">out_base</td><td>0-31 First pin to set as output </td></tr>
784 <tr><td class="paramname">out_count</td><td>0-32 Number of pins to set. </td></tr>
791 <a id="ga613bed03e10e569f1b7aede74d40a5b5" name="ga613bed03e10e569f1b7aede74d40a5b5"></a>
792 <h2 class="memtitle"><span class="permalink"><a href="#ga613bed03e10e569f1b7aede74d40a5b5">◆ </a></span>sm_config_set_out_shift()</h2>
794 <div class="memitem">
795 <div class="memproto">
796 <table class="mlabels">
798 <td class="mlabels-left">
799 <table class="memname">
801 <td class="memname">static void sm_config_set_out_shift </td>
803 <td class="paramtype"><a class="el" href="structpio__sm__config.html">pio_sm_config</a> * </td>
804 <td class="paramname"><em>c</em>, </td>
807 <td class="paramkey"></td>
809 <td class="paramtype">bool </td>
810 <td class="paramname"><em>shift_right</em>, </td>
813 <td class="paramkey"></td>
815 <td class="paramtype">bool </td>
816 <td class="paramname"><em>autopull</em>, </td>
819 <td class="paramkey"></td>
821 <td class="paramtype">uint </td>
822 <td class="paramname"><em>pull_threshold</em> </td>
831 <td class="mlabels-right">
832 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
835 </div><div class="memdoc">
837 <p>Setup 'out' shifting parameters in a state machine configuration. </p>
838 <dl class="params"><dt>Parameters</dt><dd>
839 <table class="params">
840 <tr><td class="paramname">c</td><td>Pointer to the configuration structure to modify </td></tr>
841 <tr><td class="paramname">shift_right</td><td>true to shift OSR to right, false to shift OSR to left </td></tr>
842 <tr><td class="paramname">autopull</td><td>whether autopull is enabled </td></tr>
843 <tr><td class="paramname">pull_threshold</td><td>threshold in bits to shift out before auto/conditional re-pulling of the OSR </td></tr>
850 <a id="ga8a9141ceadf9e735b1e96457865de3f6" name="ga8a9141ceadf9e735b1e96457865de3f6"></a>
851 <h2 class="memtitle"><span class="permalink"><a href="#ga8a9141ceadf9e735b1e96457865de3f6">◆ </a></span>sm_config_set_out_special()</h2>
853 <div class="memitem">
854 <div class="memproto">
855 <table class="mlabels">
857 <td class="mlabels-left">
858 <table class="memname">
860 <td class="memname">static void sm_config_set_out_special </td>
862 <td class="paramtype"><a class="el" href="structpio__sm__config.html">pio_sm_config</a> * </td>
863 <td class="paramname"><em>c</em>, </td>
866 <td class="paramkey"></td>
868 <td class="paramtype">bool </td>
869 <td class="paramname"><em>sticky</em>, </td>
872 <td class="paramkey"></td>
874 <td class="paramtype">bool </td>
875 <td class="paramname"><em>has_enable_pin</em>, </td>
878 <td class="paramkey"></td>
880 <td class="paramtype">uint </td>
881 <td class="paramname"><em>enable_pin_index</em> </td>
890 <td class="mlabels-right">
891 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
894 </div><div class="memdoc">
896 <p>Set special 'out' operations in a state machine configuration. </p>
897 <dl class="params"><dt>Parameters</dt><dd>
898 <table class="params">
899 <tr><td class="paramname">c</td><td>Pointer to the configuration structure to modify </td></tr>
900 <tr><td class="paramname">sticky</td><td>to enable 'sticky' output (i.e. re-asserting most recent OUT/SET pin values on subsequent cycles) </td></tr>
901 <tr><td class="paramname">has_enable_pin</td><td>true to enable auxiliary OUT enable pin </td></tr>
902 <tr><td class="paramname">enable_pin_index</td><td>pin index for auxiliary OUT enable </td></tr>
909 <a id="ga40d4807c0665d30ceab153b7444560eb" name="ga40d4807c0665d30ceab153b7444560eb"></a>
910 <h2 class="memtitle"><span class="permalink"><a href="#ga40d4807c0665d30ceab153b7444560eb">◆ </a></span>sm_config_set_set_pin_base()</h2>
912 <div class="memitem">
913 <div class="memproto">
914 <table class="mlabels">
916 <td class="mlabels-left">
917 <table class="memname">
919 <td class="memname">static void sm_config_set_set_pin_base </td>
921 <td class="paramtype"><a class="el" href="structpio__sm__config.html">pio_sm_config</a> * </td>
922 <td class="paramname"><em>c</em>, </td>
925 <td class="paramkey"></td>
927 <td class="paramtype">uint </td>
928 <td class="paramname"><em>set_base</em> </td>
937 <td class="mlabels-right">
938 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
941 </div><div class="memdoc">
943 <p>Set the base of the 'set' pins in a state machine configuration. </p>
944 <p >'set' pins can overlap with the 'in', 'out' and 'sideset' pins</p>
945 <dl class="params"><dt>Parameters</dt><dd>
946 <table class="params">
947 <tr><td class="paramname">c</td><td>Pointer to the configuration structure to modify </td></tr>
948 <tr><td class="paramname">set_base</td><td>0-31 First pin to set as </td></tr>
955 <a id="ga78e129fe383f2af0fc5e1448dea4c3d6" name="ga78e129fe383f2af0fc5e1448dea4c3d6"></a>
956 <h2 class="memtitle"><span class="permalink"><a href="#ga78e129fe383f2af0fc5e1448dea4c3d6">◆ </a></span>sm_config_set_set_pin_count()</h2>
958 <div class="memitem">
959 <div class="memproto">
960 <table class="mlabels">
962 <td class="mlabels-left">
963 <table class="memname">
965 <td class="memname">static void sm_config_set_set_pin_count </td>
967 <td class="paramtype"><a class="el" href="structpio__sm__config.html">pio_sm_config</a> * </td>
968 <td class="paramname"><em>c</em>, </td>
971 <td class="paramkey"></td>
973 <td class="paramtype">uint </td>
974 <td class="paramname"><em>set_count</em> </td>
983 <td class="mlabels-right">
984 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
987 </div><div class="memdoc">
989 <p>Set the count of 'set' pins in a state machine configuration. </p>
990 <p >'set' pins can overlap with the 'in', 'out' and 'sideset' pins</p>
991 <dl class="params"><dt>Parameters</dt><dd>
992 <table class="params">
993 <tr><td class="paramname">c</td><td>Pointer to the configuration structure to modify </td></tr>
994 <tr><td class="paramname">set_count</td><td>0-5 Number of pins to set. </td></tr>
1001 <a id="gada1dff2c00b7d3a1cf722880c8373424" name="gada1dff2c00b7d3a1cf722880c8373424"></a>
1002 <h2 class="memtitle"><span class="permalink"><a href="#gada1dff2c00b7d3a1cf722880c8373424">◆ </a></span>sm_config_set_set_pins()</h2>
1004 <div class="memitem">
1005 <div class="memproto">
1006 <table class="mlabels">
1008 <td class="mlabels-left">
1009 <table class="memname">
1011 <td class="memname">static void sm_config_set_set_pins </td>
1013 <td class="paramtype"><a class="el" href="structpio__sm__config.html">pio_sm_config</a> * </td>
1014 <td class="paramname"><em>c</em>, </td>
1017 <td class="paramkey"></td>
1019 <td class="paramtype">uint </td>
1020 <td class="paramname"><em>set_base</em>, </td>
1023 <td class="paramkey"></td>
1025 <td class="paramtype">uint </td>
1026 <td class="paramname"><em>set_count</em> </td>
1035 <td class="mlabels-right">
1036 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
1039 </div><div class="memdoc">
1041 <p>Set the 'set' pins in a state machine configuration. </p>
1042 <p >'set' pins can overlap with the 'in', 'out' and 'sideset' pins</p>
1043 <dl class="params"><dt>Parameters</dt><dd>
1044 <table class="params">
1045 <tr><td class="paramname">c</td><td>Pointer to the configuration structure to modify </td></tr>
1046 <tr><td class="paramname">set_base</td><td>0-31 First pin to set as </td></tr>
1047 <tr><td class="paramname">set_count</td><td>0-5 Number of pins to set. </td></tr>
1054 <a id="gaf543422206a8dbdc2efea85818dd650e" name="gaf543422206a8dbdc2efea85818dd650e"></a>
1055 <h2 class="memtitle"><span class="permalink"><a href="#gaf543422206a8dbdc2efea85818dd650e">◆ </a></span>sm_config_set_sideset()</h2>
1057 <div class="memitem">
1058 <div class="memproto">
1059 <table class="mlabels">
1061 <td class="mlabels-left">
1062 <table class="memname">
1064 <td class="memname">static void sm_config_set_sideset </td>
1066 <td class="paramtype"><a class="el" href="structpio__sm__config.html">pio_sm_config</a> * </td>
1067 <td class="paramname"><em>c</em>, </td>
1070 <td class="paramkey"></td>
1072 <td class="paramtype">uint </td>
1073 <td class="paramname"><em>bit_count</em>, </td>
1076 <td class="paramkey"></td>
1078 <td class="paramtype">bool </td>
1079 <td class="paramname"><em>optional</em>, </td>
1082 <td class="paramkey"></td>
1084 <td class="paramtype">bool </td>
1085 <td class="paramname"><em>pindirs</em> </td>
1094 <td class="mlabels-right">
1095 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
1098 </div><div class="memdoc">
1100 <p>Set the 'sideset' options in a state machine configuration. </p>
1101 <dl class="params"><dt>Parameters</dt><dd>
1102 <table class="params">
1103 <tr><td class="paramname">c</td><td>Pointer to the configuration structure to modify </td></tr>
1104 <tr><td class="paramname">bit_count</td><td>Number of bits to steal from delay field in the instruction for use of side set (max 5) </td></tr>
1105 <tr><td class="paramname">optional</td><td>True if the topmost side set bit is used as a flag for whether to apply side set on that instruction </td></tr>
1106 <tr><td class="paramname">pindirs</td><td>True if the side set affects pin directions rather than values </td></tr>
1113 <a id="ga7abfda1f60c62565d5b13536b0605af7" name="ga7abfda1f60c62565d5b13536b0605af7"></a>
1114 <h2 class="memtitle"><span class="permalink"><a href="#ga7abfda1f60c62565d5b13536b0605af7">◆ </a></span>sm_config_set_sideset_pin_base()</h2>
1116 <div class="memitem">
1117 <div class="memproto">
1118 <table class="mlabels">
1120 <td class="mlabels-left">
1121 <table class="memname">
1123 <td class="memname">static void sm_config_set_sideset_pin_base </td>
1125 <td class="paramtype"><a class="el" href="structpio__sm__config.html">pio_sm_config</a> * </td>
1126 <td class="paramname"><em>c</em>, </td>
1129 <td class="paramkey"></td>
1131 <td class="paramtype">uint </td>
1132 <td class="paramname"><em>sideset_base</em> </td>
1141 <td class="mlabels-right">
1142 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
1145 </div><div class="memdoc">
1147 <p>Set the base of the 'sideset' pins in a state machine configuration. </p>
1148 <p >'sideset' pins can overlap with the 'in', 'out' and 'set' pins</p>
1149 <dl class="params"><dt>Parameters</dt><dd>
1150 <table class="params">
1151 <tr><td class="paramname">c</td><td>Pointer to the configuration structure to modify </td></tr>
1152 <tr><td class="paramname">sideset_base</td><td>0-31 base pin for 'side set' </td></tr>
1159 <a id="gad55bf8b410fa1d13bd1bd020587e01d7" name="gad55bf8b410fa1d13bd1bd020587e01d7"></a>
1160 <h2 class="memtitle"><span class="permalink"><a href="#gad55bf8b410fa1d13bd1bd020587e01d7">◆ </a></span>sm_config_set_sideset_pins()</h2>
1162 <div class="memitem">
1163 <div class="memproto">
1164 <table class="mlabels">
1166 <td class="mlabels-left">
1167 <table class="memname">
1169 <td class="memname">static void sm_config_set_sideset_pins </td>
1171 <td class="paramtype"><a class="el" href="structpio__sm__config.html">pio_sm_config</a> * </td>
1172 <td class="paramname"><em>c</em>, </td>
1175 <td class="paramkey"></td>
1177 <td class="paramtype">uint </td>
1178 <td class="paramname"><em>sideset_base</em> </td>
1187 <td class="mlabels-right">
1188 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
1191 </div><div class="memdoc">
1193 <p>Set the 'sideset' pins in a state machine configuration. </p>
1194 <p >This method is identical to <a class="el" href="group__sm__config.html#ga7abfda1f60c62565d5b13536b0605af7">sm_config_set_sideset_pin_base</a>, and is provided for backwards compatibility</p>
1195 <p >'sideset' pins can overlap with the 'in', 'out' and 'set' pins</p>
1196 <dl class="params"><dt>Parameters</dt><dd>
1197 <table class="params">
1198 <tr><td class="paramname">c</td><td>Pointer to the configuration structure to modify </td></tr>
1199 <tr><td class="paramname">sideset_base</td><td>0-31 base pin for 'side set' </td></tr>
1206 <a id="gafb753e8b35bbea9209ca4399a845f89c" name="gafb753e8b35bbea9209ca4399a845f89c"></a>
1207 <h2 class="memtitle"><span class="permalink"><a href="#gafb753e8b35bbea9209ca4399a845f89c">◆ </a></span>sm_config_set_wrap()</h2>
1209 <div class="memitem">
1210 <div class="memproto">
1211 <table class="mlabels">
1213 <td class="mlabels-left">
1214 <table class="memname">
1216 <td class="memname">static void sm_config_set_wrap </td>
1218 <td class="paramtype"><a class="el" href="structpio__sm__config.html">pio_sm_config</a> * </td>
1219 <td class="paramname"><em>c</em>, </td>
1222 <td class="paramkey"></td>
1224 <td class="paramtype">uint </td>
1225 <td class="paramname"><em>wrap_target</em>, </td>
1228 <td class="paramkey"></td>
1230 <td class="paramtype">uint </td>
1231 <td class="paramname"><em>wrap</em> </td>
1240 <td class="mlabels-right">
1241 <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
1244 </div><div class="memdoc">
1246 <p>Set the wrap addresses in a state machine configuration. </p>
1247 <dl class="params"><dt>Parameters</dt><dd>
1248 <table class="params">
1249 <tr><td class="paramname">c</td><td>Pointer to the configuration structure to modify </td></tr>
1250 <tr><td class="paramname">wrap_target</td><td>the instruction memory address to wrap to </td></tr>
1251 <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>
1258 </div><!-- contents -->
1259 </div><!-- doc-content -->
1261 <script src="main.js"></script>