]> Git Repo - pico-vscode.git/blob - web/docs/runtime.html
Added Documentation and debugLayout
[pico-vscode.git] / web / docs / runtime.html
1 <!doctype html>
2 <html lang="en">
3   <head>
4     <meta charset="utf-8">
5 <meta http-equiv="X-UA-Compatible" content="IE=edge">
6 <meta name="viewport" content="width=device-width, initial-scale=1">
7 <title>Raspberry Pi Documentation - Runtime Infrastructure</title>
8 <meta name="description" content="The official documentation for Raspberry Pi computers and microcontrollers">
9 <meta property="og:title" content="Raspberry Pi Documentation - Runtime Infrastructure">
10 <meta property="og:description" content="The official documentation for Raspberry Pi computers and microcontrollers">
11 <meta property="og:url" content="https://www.raspberrypi.com/documentation/pico-sdk/runtime.html">
12 <meta property="og:image" content="https://www.raspberrypi.com/documentation/images/opensocial.png">
13 <meta name="twitter:card" content="summary_large_image">
14 <meta name="twitter:site" content="@Raspberry_Pi">
15 <meta name="twitter:title" content="Raspberry Pi Documentation - Runtime Infrastructure">
16 <meta name="twitter:description" content="The official documentation for Raspberry Pi computers and microcontrollers">
17 <link rel="preconnect" href="https://fonts.googleapis.com">
18 <link rel="preconnect" href="https://fonts.gstatic.com">
19 <link href="https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,700;1,100;1,300;1,400;1,700&display=swap" rel="stylesheet">
20 <link rel="preconnect" href="https://IHWGNTJ1NP-dsn.algolia.net" crossorigin>
21 <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@docsearch/css@3"/>
22 <link rel="stylesheet" href="{{docstyle}}">
23 <style>
24   nav#contents h3,
25   nav#mobile-contents h3 {
26     display: none !important;
27   }
28   .toptitle {
29     display: none !important;
30   }
31   div#tab-menu {
32     display: none !important;
33   }
34   p#release {
35     display: none !important;
36   }
37   footer, header {
38     display: none !important;
39   }
40   #mobile-contents {
41     display: none !important;
42   }
43   #content h1,h2,h3,h4,h5,h6,p,span,li,td,th {
44     color: var(--vscode-editor-foreground) !important;
45   }
46   #content .memproto td {
47     color: initial !important;
48   }
49   #content code {
50     color: initial !important;
51   }
52   body {
53     background-color: var(--vscode-editor-background) !important;
54   }
55   nav#contents a, nav#mobile-contents a {
56     color: var(--vscode-editor-foreground) !important;
57   }
58   #content {
59     width: 100% !important;
60     min-width: auto !important;
61     margin-left: 0px !important;
62   }
63   #container {
64     margin: 50px 50px 0px 50px !important;
65   }
66   /* the links currently don't work */
67   nav {
68     display: none !important;
69   }
70 </style>
71  
72   </head>
73   <body>
74     <style>
75 #__rptl-header {
76   margin: 0;
77   padding: 0;
78   border: 0;
79   line-height: 1;
80   font-family: "Roboto", sans-serif;
81   font-size: medium;
82   font-weight: 400;
83   text-rendering: optimizeLegibility;
84   -webkit-text-size-adjust: 100%;
85      -moz-text-size-adjust: 100%;
86           text-size-adjust: 100%;
87   -webkit-font-smoothing: antialiased;
88   -moz-osx-font-smoothing: grayscale;
89   position: relative;
90   z-index: 100;
91 }
92 #__rptl-header .__rptl-header-wrapper {
93   margin: 0;
94   padding: 0;
95   border: 0;
96   box-sizing: border-box;
97   max-width: 1300px;
98   margin-left: auto;
99   margin-right: auto;
100   position: relative;
101 }
102 #__rptl-header .__rptl-header-navbar {
103   margin: 0;
104   padding: 0;
105   border: 0;
106   box-sizing: border-box;
107   position: relative;
108   z-index: 1;
109   background-color: #fff;
110   border-bottom: 1px solid #dedede;
111   width: 100%;
112   padding: 16px;
113 }
114 @media (min-width: 800px) {
115   #__rptl-header .__rptl-header-navbar {
116     padding: 16px 76px;
117   }
118 }
119 @media (min-width: 1200px) {
120   #__rptl-header .__rptl-header-navbar {
121     padding: 16px 84px;
122     border-bottom-style: none;
123   }
124 }
125 #__rptl-header .__rptl-header-brand {
126   margin: 0;
127   padding: 0;
128   border: 0;
129   text-decoration: none;
130   box-sizing: border-box;
131   display: inline-block;
132   vertical-align: middle;
133 }
134 #__rptl-header .__rptl-header-logo {
135   margin: 0;
136   padding: 0;
137   border: 0;
138   box-sizing: border-box;
139   display: block;
140   vertical-align: middle;
141 }
142 #__rptl-header .__rptl-header-burger {
143   margin: 0;
144   padding: 0;
145   border: 0;
146   box-sizing: border-box;
147   width: 30px;
148   height: 30px;
149   transform: rotate(0deg);
150   cursor: pointer;
151   position: absolute;
152   top: 0;
153   bottom: 0;
154   right: 0;
155   margin-top: auto;
156   margin-bottom: auto;
157 }
158 @media (min-width: 1200px) {
159   #__rptl-header .__rptl-header-burger {
160     display: none;
161   }
162 }
163 @media (prefers-reduced-motion: no-preference) {
164   #__rptl-header .__rptl-header-burger {
165     transition: 0.5s ease-in-out;
166   }
167 }
168 #__rptl-header .__rptl-header-burger-stroke {
169   margin: 0;
170   padding: 0;
171   border: 0;
172   box-sizing: border-box;
173   position: absolute;
174   left: 0;
175   height: 2px;
176   width: 100%;
177   background: #707070;
178   border-radius: 9px;
179   transform: rotate(0deg);
180 }
181 #__rptl-header .__rptl-header-burger-stroke:nth-child(1) {
182   top: 0;
183   transform-origin: left center;
184 }
185 #__rptl-header .__rptl-header-burger-stroke:nth-child(2) {
186   top: 14px;
187   transform-origin: left center;
188 }
189 #__rptl-header .__rptl-header-burger-stroke:nth-child(3) {
190   top: 28px;
191   transform-origin: left center;
192 }
193 @media (prefers-reduced-motion: no-preference) {
194   #__rptl-header .__rptl-header-burger-stroke {
195     transition: 0.25s ease-in-out;
196   }
197 }
198 #__rptl-header .__rptl-header-burger-state {
199   display: none;
200 }
201 #__rptl-header .__rptl-header-burger-state:checked + .__rptl-header-navbar .__rptl-header-burger-stroke:nth-child(1) {
202   transform: rotate(45deg);
203   top: 4.5px;
204   left: 4.5px;
205 }
206 #__rptl-header .__rptl-header-burger-state:checked + .__rptl-header-navbar .__rptl-header-burger-stroke:nth-child(2) {
207   width: 0;
208   opacity: 0;
209 }
210 #__rptl-header .__rptl-header-burger-state:checked + .__rptl-header-navbar .__rptl-header-burger-stroke:nth-child(3) {
211   transform: rotate(-45deg);
212   top: 25.5px;
213   left: 4.5px;
214 }
215 #__rptl-header .__rptl-header-burger-state:checked ~ .__rptl-header-nav {
216   transform: translateY(100%);
217   transition-duration: 500ms;
218   transition-timing-function: ease-out;
219 }
220 #__rptl-header .__rptl-header-nav {
221   margin: 0;
222   padding: 0;
223   border: 0;
224   font: inherit;
225   font-size: 100%;
226   display: block;
227   box-sizing: border-box;
228   position: absolute;
229   bottom: 0;
230   background-color: #fff;
231   width: 100%;
232   border-bottom: 1px solid #dedede;
233 }
234 #__rptl-header .__rptl-header-nav:focus-within {
235   transform: translateY(100%);
236 }
237 @media (min-width: 1200px) {
238   #__rptl-header .__rptl-header-nav {
239     position: static;
240     padding: 0 84px;
241     background-color: #f7f8fa;
242     transform: none !important;
243     transition: none !important;
244   }
245 }
246 @media (prefers-reduced-motion: no-preference) {
247   #__rptl-header .__rptl-header-nav {
248     transition: transform 0.25s ease-in;
249   }
250 }
251 #__rptl-header .__rptl-header-nav-inner {
252   margin: 0;
253   padding: 0;
254   border: 0;
255   font: inherit;
256   font-size: 100%;
257   display: block;
258   box-sizing: border-box;
259 }
260 @media (min-width: 1200px) {
261   #__rptl-header .__rptl-header-nav-inner {
262     display: flex;
263     justify-content: space-between;
264     flex-direction: row;
265   }
266 }
267 #__rptl-header .__rptl-header-nav-list {
268   margin: 0;
269   padding: 0;
270   border: 0;
271   font: inherit;
272   font-size: 100%;
273   list-style: none;
274   display: block;
275   box-sizing: border-box;
276 }
277 #__rptl-header .__rptl-header-nav-list:first-child .__rptl-header-nav-list-item:first-child {
278   border: 0;
279 }
280 #__rptl-header .__rptl-header-nav-list-item {
281   margin: 0;
282   padding: 0;
283   border: 0;
284   font: inherit;
285   font-size: 100%;
286   display: block;
287   box-sizing: border-box;
288   border-top: 1px solid #dedede;
289 }
290 @media (min-width: 1200px) {
291   #__rptl-header .__rptl-header-nav-list-item {
292     display: inline-block;
293     border-style: none;
294   }
295 }
296 #__rptl-header .__rptl-header-nav-link {
297   margin: 0;
298   padding: 0;
299   border: 0;
300   font: inherit;
301   display: block;
302   text-decoration: none;
303   box-sizing: border-box;
304   color: #333;
305   font-size: 1.65em;
306   padding: 16px;
307 }
308 #__rptl-header .__rptl-header-nav-link:hover {
309   color: #fff;
310   background-color: #333;
311 }
312 #__rptl-header .__rptl-header-nav-link--for-home {
313   color: #cd2355;
314   font-weight: 700;
315 }
316 #__rptl-header .__rptl-header-nav-link--for-home:hover {
317   background-color: #cd2355;
318 }
319 #__rptl-header .__rptl-header-nav-link--for-industry {
320   font-weight: 700;
321 }
322 @media (min-width: 800px) {
323   #__rptl-header .__rptl-header-nav-link {
324     padding: 16px 76px;
325   }
326 }
327 @media (min-width: 1200px) {
328   #__rptl-header .__rptl-header-nav-link {
329     font-size: 1em;
330     padding: 16px;
331   }
332 }
333 </style>
334 <header id="__rptl-header">
335   <input type="checkbox" class="__rptl-header-burger-state" id="__rptl-header-burger-state" />
336
337   <div class="__rptl-header-navbar">
338     <div class="__rptl-header-wrapper">
339       <a href="/" class="__rptl-header-brand" aria-label="Raspberry Pi">
340         <svg class="__rptl-header-logo" aria-hidden="true" focusable="false" height="44" viewBox="0 0 270 57" xmlns="http://www.w3.org/2000/svg" aria-labelledby="__rptl-header-logo"><title id="__rptl-header-logo">Raspberry Pi</title><g fill-rule="nonzero" fill="none"><path d="M65.275 33.317h-4.477v9.46c0 .29-.235.526-.525.526h-4.57a.525.525 0 0 1-.526-.525V16.55a.525.525 0 0 1 .525-.525h9.61c3.223 0 5.709.718 7.457 2.154a7.437 7.437 0 0 1 2.623 6.09 8.391 8.391 0 0 1-1.208 4.655 8.24 8.24 0 0 1-3.663 2.97l5.635 10.638a.525.525 0 0 1-.464.77h-4.917a.63.63 0 0 1-.56-.342l-4.94-9.643Zm-4.477-4.552h4.534a4.641 4.641 0 0 0 3.278-1.078 3.85 3.85 0 0 0 1.162-2.97 4.122 4.122 0 0 0-1.096-3.034 4.556 4.556 0 0 0-3.363-1.106h-4.515v8.188ZM90.426 42.997a6.562 6.562 0 0 1-.402-1.511 6.551 6.551 0 0 1-5.114 2.192 7.195 7.195 0 0 1-4.937-1.724 5.542 5.542 0 0 1-1.958-4.347 5.73 5.73 0 0 1 2.389-4.946c1.592-1.148 3.894-1.73 6.904-1.742h2.491v-1.162a3.342 3.342 0 0 0-.72-2.248 2.838 2.838 0 0 0-2.277-.843 3.226 3.226 0 0 0-2.145.656 2.13 2.13 0 0 0-.748 1.37.513.513 0 0 1-.513.428h-4.375a.533.533 0 0 1-.524-.596 5.494 5.494 0 0 1 1.054-2.663 7.184 7.184 0 0 1 3.073-2.352 11.2 11.2 0 0 1 4.459-.852 8.848 8.848 0 0 1 5.948 1.883 6.587 6.587 0 0 1 2.202 5.292v8.787a9.948 9.948 0 0 0 .629 3.93.525.525 0 0 1-.47.754h-4.485a.515.515 0 0 1-.48-.306Zm-4.336-3.46c.77.007 1.529-.176 2.21-.534a3.509 3.509 0 0 0 1.5-1.433v-3.485h-2.024c-2.71 0-4.153.937-4.328 2.81l-.019.319a2.166 2.166 0 0 0 .712 1.667 2.764 2.764 0 0 0 1.949.656ZM109.963 37.701a1.745 1.745 0 0 0-.983-1.564 11.18 11.18 0 0 0-3.157-1.021c-4.822-1.012-7.232-3.06-7.232-6.145a5.57 5.57 0 0 1 2.24-4.506 9.031 9.031 0 0 1 5.854-1.808 9.723 9.723 0 0 1 6.173 1.817 5.699 5.699 0 0 1 2.292 4.175.52.52 0 0 1-.525.546h-4.382a.514.514 0 0 1-.514-.435 2.538 2.538 0 0 0-.721-1.485 3.172 3.172 0 0 0-2.342-.759 3.24 3.24 0 0 0-2.117.619c-.483.377-.76.96-.75 1.573.001.603.327 1.158.853 1.452a8.76 8.76 0 0 0 2.876.956 23.54 23.54 0 0 1 3.41.908c2.86 1.05 4.29 2.867 4.29 5.452a5.288 5.288 0 0 1-2.38 4.487 10.264 10.264 0 0 1-6.145 1.715c-1.556.029-3.1-.281-4.524-.91a7.586 7.586 0 0 1-3.1-2.49 5.853 5.853 0 0 1-1.094-2.824.533.533 0 0 1 .523-.596h4.11a.513.513 0 0 1 .513.418c.091.71.46 1.354 1.024 1.793a4.233 4.233 0 0 0 2.66.768c.827.057 1.65-.15 2.352-.59.508-.35.807-.93.796-1.546ZM136.719 33.355a12.159 12.159 0 0 1-2.127 7.503 6.817 6.817 0 0 1-5.742 2.82 6.315 6.315 0 0 1-4.965-2.136v9.03c0 .29-.235.525-.525.525h-4.364a.525.525 0 0 1-.525-.525V23.557a.525.525 0 0 1 .525-.525h4.018c.27 0 .497.206.523.475l.142 1.51a6.363 6.363 0 0 1 5.134-2.36 6.865 6.865 0 0 1 5.826 2.773c1.387 1.848 2.08 4.396 2.08 7.644v.28Zm-5.415-.394a7.982 7.982 0 0 0-1.002-4.365 3.266 3.266 0 0 0-2.913-1.536 3.546 3.546 0 0 0-3.504 1.948v8.3a3.605 3.605 0 0 0 3.541 2.004c2.586 0 3.878-2.117 3.878-6.35ZM158.159 33.355c0 3.247-.694 5.78-2.08 7.597a6.889 6.889 0 0 1-5.808 2.726 6.329 6.329 0 0 1-5.264-2.53l-.191 1.689a.525.525 0 0 1-.522.466h-3.877a.525.525 0 0 1-.525-.525V15.05c0-.29.235-.525.525-.525h4.364a.525.525 0 0 1 .525.525v9.798a6.166 6.166 0 0 1 4.928-2.192 6.945 6.945 0 0 1 5.817 2.726c1.405 1.817 2.108 4.374 2.108 7.672v.3Zm-5.415-.394a8.068 8.068 0 0 0-.974-4.487 3.295 3.295 0 0 0-2.904-1.414 3.572 3.572 0 0 0-3.56 2.117v8a3.62 3.62 0 0 0 3.597 2.135c1.626.093 3.081-.999 3.448-2.585.31-1.23.442-2.498.393-3.766ZM170.555 43.678a9.95 9.95 0 0 1-7.26-2.736 9.722 9.722 0 0 1-2.8-7.288v-.524a12.247 12.247 0 0 1 1.18-5.461 8.666 8.666 0 0 1 3.344-3.71 9.387 9.387 0 0 1 4.936-1.302 8.413 8.413 0 0 1 6.548 2.623c1.593 1.749 2.39 4.228 2.39 7.438v1.685a.525.525 0 0 1-.526.525h-12.383a5.028 5.028 0 0 0 1.583 3.185 4.785 4.785 0 0 0 3.344 1.2 5.886 5.886 0 0 0 4.524-1.837.527.527 0 0 1 .773.026l1.964 2.198c.17.188.182.47.028.672a8.216 8.216 0 0 1-3.036 2.34 10.82 10.82 0 0 1-4.609.966Zm-.618-16.656a3.382 3.382 0 0 0-2.614 1.092 5.65 5.65 0 0 0-1.283 3.124h7.531v-.433a4.034 4.034 0 0 0-.974-2.795 3.492 3.492 0 0 0-2.66-.988ZM193.333 27.525a.523.523 0 0 1-.575.515c-.459-.051-.92-.078-1.382-.081-2.049 0-3.391.693-4.028 2.08v12.739a.525.525 0 0 1-.525.525h-4.364a.525.525 0 0 1-.525-.525V23.557a.525.525 0 0 1 .525-.525h4.096c.277 0 .507.215.524.492l.12 1.924a5.017 5.017 0 0 1 4.514-2.791c.434-.002.867.044 1.29.138a.515.515 0 0 1 .39.515l-.06 4.215ZM207.017 27.525a.523.523 0 0 1-.575.515c-.459-.051-.92-.078-1.382-.081-2.048 0-3.39.693-4.028 2.08v12.739a.525.525 0 0 1-.525.525h-4.364a.525.525 0 0 1-.525-.525V23.557a.525.525 0 0 1 .525-.525h4.096c.277 0 .507.215.524.492l.12 1.924a5.018 5.018 0 0 1 4.514-2.791c.434-.002.867.044 1.29.138a.515.515 0 0 1 .39.515l-.06 4.215ZM217.934 35.64l3.635-12.233a.525.525 0 0 1 .504-.375h4.677a.525.525 0 0 1 .496.697l-7.907 22.721-.45 1.068a6.18 6.18 0 0 1-5.995 3.972 8.368 8.368 0 0 1-2.003-.25.529.529 0 0 1-.395-.513v-3.15a.525.525 0 0 1 .546-.524l.538.02a3.442 3.442 0 0 0 2.035-.492 3.08 3.08 0 0 0 1.19-1.555l.637-1.667-6.857-19.63a.525.525 0 0 1 .496-.697h4.696c.232 0 .437.152.503.374l3.654 12.234ZM245.156 33.692v9.086c0 .29-.235.525-.525.525h-4.57a.525.525 0 0 1-.526-.525V16.55a.525.525 0 0 1 .525-.525h10.117a12.31 12.31 0 0 1 5.405 1.124 8.284 8.284 0 0 1 3.587 3.194 8.91 8.91 0 0 1 1.256 4.712 7.833 7.833 0 0 1-2.745 6.323c-1.83 1.543-4.362 2.314-7.597 2.314h-4.927Zm0-4.553h5.02a4.934 4.934 0 0 0 3.401-1.049 3.816 3.816 0 0 0 1.171-2.998 4.5 4.5 0 0 0-1.18-3.24 4.41 4.41 0 0 0-3.26-1.275h-5.152v8.562ZM263.081 17.786a2.666 2.666 0 0 1 .815-2.005 3.512 3.512 0 0 1 4.431 0 2.86 2.86 0 0 1-.01 4.028 3.473 3.473 0 0 1-4.402 0 2.66 2.66 0 0 1-.834-2.023Zm5.227 25.517h-4.383a.525.525 0 0 1-.525-.525V23.557a.525.525 0 0 1 .525-.525h4.383a.525.525 0 0 1 .525.525v19.22a.525.525 0 0 1-.525.526ZM45.008 32.949a8.74 8.74 0 0 0-3.104-6.182 7.664 7.664 0 0 0-1.44-2.801 8.594 8.594 0 0 0-3.058-5.777c.284-.244.524-.536.708-.862a6.186 6.186 0 0 0 3.63-4.23 5.558 5.558 0 0 0 1.755-3.64 3.481 3.481 0 0 0-.31-1.638 3.114 3.114 0 0 0 .81-3.215c-.606-1.756-2.73-2.896-5.584-3.017a4.497 4.497 0 0 0-3.11-1.065 7.188 7.188 0 0 0-1.678.207 3.821 3.821 0 0 0-1.65-.334 6.458 6.458 0 0 0-3.148.858 2.894 2.894 0 0 0-.38-.025 6.276 6.276 0 0 0-3.551 1.558 10.765 10.765 0 0 0-1.866 1.944 10.768 10.768 0 0 0-1.867-1.944 6.278 6.278 0 0 0-3.55-1.558c-.127 0-.254.008-.38.025a6.46 6.46 0 0 0-3.148-.858 3.822 3.822 0 0 0-1.65.334 7.188 7.188 0 0 0-1.68-.207 4.498 4.498 0 0 0-3.109 1.065c-2.854.12-4.978 1.261-5.585 3.018a3.114 3.114 0 0 0 .812 3.214 3.482 3.482 0 0 0-.31 1.639 5.557 5.557 0 0 0 1.755 3.64 6.186 6.186 0 0 0 3.63 4.229c.183.326.423.618.707.862A8.594 8.594 0 0 0 5.6 23.966a7.663 7.663 0 0 0-1.44 2.801 8.74 8.74 0 0 0-3.104 6.182 8.424 8.424 0 0 0 1.92 6.578c.26 1.31.8 2.549 1.581 3.632a9.452 9.452 0 0 0 2.386 5.514 9.768 9.768 0 0 0 5.262 3.126 12.74 12.74 0 0 0 4.208 2.605 9.763 9.763 0 0 0 13.24 0c1.559-.585 2.988-1.47 4.207-2.605a9.768 9.768 0 0 0 5.262-3.126 9.452 9.452 0 0 0 2.386-5.514 9.311 9.311 0 0 0 1.582-3.632 8.424 8.424 0 0 0 1.919-6.578Z" fill="#000"/><path d="M28.366 4.192a.225.225 0 0 1 .286.24c-.072.672.335.587.432.468a3.526 3.526 0 0 1 3.188-1.53.225.225 0 0 1 .154.363c-.4.593.03.706.19.6 1.631-1.02 3.187-1.023 3.785-.594a.225.225 0 0 1 .013.349c-.604.514-.266.77-.052.692a5.802 5.802 0 0 1 4.74.607.227.227 0 0 1 .006.343 4.493 4.493 0 0 0-1.73 3.018c-.045.396.614.313.891.241a.225.225 0 0 1 .28.21c.026.954-.876 2.002-2.218 2.898-.18.12-.154.408.256.42a.222.222 0 0 1 .191.334c-.478.888-1.13 1.724-3.345 2.298a.227.227 0 0 0-.032.429.217.217 0 0 1 .071.384c-2.207 1.896-7.8 1.148-8.51-2.043a.224.224 0 0 1 .04-.182 21.262 21.262 0 0 1 9.276-7.058.176.176 0 0 0-.087-.34 15.168 15.168 0 0 0-10.074 6.074.227.227 0 0 1-.289.065c-3.585-1.851-.64-7.317 2.538-8.286ZM7.285 12.85a.222.222 0 0 1 .191-.334c.41-.01.436-.299.256-.419C6.39 11.201 5.49 10.153 5.514 9.2a.225.225 0 0 1 .28-.21c.278.072.936.155.891-.241a4.493 4.493 0 0 0-1.73-3.017.227.227 0 0 1 .006-.344 5.802 5.802 0 0 1 4.74-.607c.214.079.552-.178-.052-.692a.225.225 0 0 1 .014-.35c.597-.428 2.153-.426 3.785.594.159.107.589-.006.19-.599a.225.225 0 0 1 .153-.363A3.526 3.526 0 0 1 16.98 4.9c.096.12.503.204.432-.469a.225.225 0 0 1 .286-.239c3.178.97 6.122 6.435 2.537 8.286a.227.227 0 0 1-.289-.065A15.168 15.168 0 0 0 9.873 6.34a.176.176 0 0 0-.088.34 21.262 21.262 0 0 1 9.276 7.057c.04.052.054.119.04.183-.71 3.19-6.303 3.938-8.51 2.042a.217.217 0 0 1 .071-.384.227.227 0 0 0-.031-.429c-2.216-.574-2.867-1.41-3.346-2.298Z" fill="#46AF4B"/><path d="M37.158 22.605c.92 2.446.203 3.622-1.978 2.377a15.632 15.632 0 0 1-4.58-3.84c-1.644-1.952-.576-2.821 2.012-2.352a6.985 6.985 0 0 1 4.546 3.815ZM27.375 19.853c3.12 2.593-.454 4.428-4.343 4.428-3.89 0-7.463-1.835-4.344-4.428a6.935 6.935 0 0 1 8.687 0ZM8.906 22.605a6.985 6.985 0 0 1 4.545-3.815c2.588-.47 3.656.4 2.013 2.352a15.632 15.632 0 0 1-4.58 3.84c-2.182 1.245-2.898.069-1.978-2.377ZM4.394 36.196a6.983 6.983 0 0 1 .518-5.942c1.153-1.96 2.313-1.883 2.773-.222.585 2.29.373 4.712-.6 6.867-.854 1.696-1.921 1.123-2.691-.703ZM12.704 48.896A6.942 6.942 0 0 1 7.482 42.7c.433-10.066 14.94 7.91 5.222 6.196ZM12.999 36.358c-2.433-1.404-3.077-4.844-1.438-7.682 1.639-2.839 4.94-4 7.372-2.596 2.433 1.404 3.077 4.844 1.438 7.682-1.639 2.839-4.94 4-7.372 2.596ZM27.091 52.737a6.947 6.947 0 0 1-8.119 0c-2.41-1.664.015-3.58 4.06-3.58s6.47 1.916 4.06 3.58Z" fill="#CD2355"/><ellipse fill="#CD2355" cx="23.032" cy="41.795" rx="5.647" ry="4.84"/><path d="M25.692 33.762c-1.639-2.838-.995-6.278 1.438-7.682 2.433-1.405 5.734-.243 7.372 2.596 1.64 2.838.995 6.278-1.438 7.682-2.432 1.405-5.733.243-7.372-2.596ZM33.36 48.896C23.64 50.61 38.149 32.634 38.58 42.7a6.941 6.941 0 0 1-5.221 6.196ZM41.67 36.196c-.77 1.826-1.838 2.399-2.691.703a10.417 10.417 0 0 1-.6-6.867c.46-1.66 1.62-1.739 2.772.222a6.983 6.983 0 0 1 .518 5.942Z" fill="#CD2355"/></g></svg>
341       </a>
342
343       <label class="__rptl-header-burger" for="__rptl-header-burger-state">
344         <span class="__rptl-header-burger-stroke"></span>
345         <span class="__rptl-header-burger-stroke"></span>
346         <span class="__rptl-header-burger-stroke"></span>
347       </label>
348     </div>
349   </div>
350
351   <nav class="__rptl-header-nav">
352     <div class="__rptl-header-wrapper">
353       <div class="__rptl-header-nav-inner">
354         <ul class="__rptl-header-nav-list">
355           <li class="__rptl-header-nav-list-item"><a href="/for-home/" class="__rptl-header-nav-link __rptl-header-nav-link--for-home">For home</a>
356           <li class="__rptl-header-nav-list-item"><a href="/for-industry/" class="__rptl-header-nav-link __rptl-header-nav-link--for-industry">For industry</a>
357         </ul>
358         <ul class="__rptl-header-nav-list">
359           <li class="__rptl-header-nav-list-item"><a href="/products/" class="__rptl-header-nav-link">Hardware</a>
360           <li class="__rptl-header-nav-list-item"><a href="/software/" class="__rptl-header-nav-link">Software</a>
361           <li class="__rptl-header-nav-list-item"><a href="/documentation/" class="__rptl-header-nav-link">Documentation</a>
362           <li class="__rptl-header-nav-list-item"><a href="/news/" class="__rptl-header-nav-link">News</a>
363           <li class="__rptl-header-nav-list-item"><a href="https://forums.raspberrypi.com/" class="__rptl-header-nav-link">Forums</a>
364           <li class="__rptl-header-nav-list-item"><a href="https://www.raspberrypi.org" class="__rptl-header-nav-link " rel="noopener">Foundation</a>
365         </ul>
366       </div>
367     </div>
368   </nav>
369 </header>
370 <script>
371   (function() {
372     var header = document.getElementById("__rptl-header"),
373         burgerState = document.getElementById("__rptl-header-burger-state");
374
375     document.addEventListener("click", function (e) {
376       if (!header.contains(e.target)) {
377         burgerState.checked = false;
378       }
379     });
380   })();
381 </script>
382       
383     <div class="toptitle">
384   <h1><a href="/documentation/"><strong>Raspberry Pi</strong> Documentation</a></h1>
385   <div id="docsearch"></div>
386 </div>
387
388     <div id="tab-menu">
389   <nav>
390     <ul id="tab-container">
391       
392         
393         <li>
394           
395           <a href="/documentation/computers/">Computers</a>
396         </li>
397       
398         
399         <li>
400           
401           <a href="/documentation/accessories/">Accessories</a>
402         </li>
403       
404         
405         <li>
406           
407           <a href="/documentation/microcontrollers/">Microcontrollers</a>
408         </li>
409       
410         
411         <li>
412           
413           <a href="/documentation/services/">Services</a>
414         </li>
415       
416         
417         <li class="selected">
418           
419           <a href="/documentation/pico-sdk/">Pico C SDK</a>
420         </li>
421       
422     </ul>
423   </nav>
424 </div>
425
426   <p id="release">Release 1.5.1</p>
427
428
429
430     <div id="container">
431       <nav id="mobile-contents">
432
433
434
435
436
437
438
439
440
441
442
443   
444     <div class="mobile-contents-menu" onclick="expandAndCollapseMobile(this)">
445       <span class="mobile-contents-line"></span>
446       <span class="mobile-contents-line"></span>
447       <span class="mobile-contents-line"></span>
448     </div>
449     <div class="contents-inner hidden">
450     
451       <h3 class="contentshead">Introduction</h3>
452       
453         <div class="itemcontents">
454           <ul class="sectlevel1">
455             
456               <li>
457                 <a href="/documentation/pico-sdk/index_doxygen.html#index">Raspberry Pi Pico SDK</a>
458                 
459                   <ul>
460                     
461                       <li>
462                         <a href="/documentation/pico-sdk/index_doxygen.html#autotoc_md3">SDK Design</a>
463                       </li>
464                     
465                       <li>
466                         <a href="/documentation/pico-sdk/index_doxygen.html#autotoc_md4">The Build System</a>
467                       </li>
468                     
469                       <li>
470                         <a href="/documentation/pico-sdk/index_doxygen.html#autotoc_md5">Examples</a>
471                       </li>
472                     
473                   </ul>
474                 
475               </li>
476             
477           </ul>
478         </div>
479       
480     
481       <h3 class="contentshead">Hardware APIs</h3>
482       
483         <div class="itemcontents">
484           <ul class="sectlevel1">
485             
486               <li>
487                 <a href="/documentation/pico-sdk/hardware.html#hardware_adc">hardware_adc</a>
488                 
489                   <ul>
490                     
491                       <li>
492                         <a href="/documentation/pico-sdk/hardware.html#rpipfbfe5b0fe8af96a15d1f">Functions</a>
493                       </li>
494                     
495                       <li>
496                         <a href="/documentation/pico-sdk/hardware.html#rpipe94a81e06ca005c7f718">Detailed Description</a>
497                       </li>
498                     
499                       <li>
500                         <a href="/documentation/pico-sdk/hardware.html#adc_example">Example</a>
501                       </li>
502                     
503                       <li>
504                         <a href="/documentation/pico-sdk/hardware.html#rpipb170229eb32af8fbb25b">Function Documentation</a>
505                       </li>
506                     
507                   </ul>
508                 
509               </li>
510             
511               <li>
512                 <a href="/documentation/pico-sdk/hardware.html#hardware_base">hardware_base</a>
513                 
514                   <ul>
515                     
516                       <li>
517                         <a href="/documentation/pico-sdk/hardware.html#rpip3926938a4b94e0a060f0">Functions</a>
518                       </li>
519                     
520                       <li>
521                         <a href="/documentation/pico-sdk/hardware.html#rpipf51cc1db3990ae8e6192">Detailed Description</a>
522                       </li>
523                     
524                       <li>
525                         <a href="/documentation/pico-sdk/hardware.html#rpip2bab066fe2ddd52f73df">Function Documentation</a>
526                       </li>
527                     
528                   </ul>
529                 
530               </li>
531             
532               <li>
533                 <a href="/documentation/pico-sdk/hardware.html#hardware_claim">hardware_claim</a>
534                 
535                   <ul>
536                     
537                       <li>
538                         <a href="/documentation/pico-sdk/hardware.html#rpipdfa7d254a5da841f0df2">Functions</a>
539                       </li>
540                     
541                       <li>
542                         <a href="/documentation/pico-sdk/hardware.html#rpipa788812432c842a919d0">Detailed Description</a>
543                       </li>
544                     
545                       <li>
546                         <a href="/documentation/pico-sdk/hardware.html#rpipe9940b67cdc9d015deee">Function Documentation</a>
547                       </li>
548                     
549                   </ul>
550                 
551               </li>
552             
553               <li>
554                 <a href="/documentation/pico-sdk/hardware.html#hardware_clocks">hardware_clocks</a>
555                 
556                   <ul>
557                     
558                       <li>
559                         <a href="/documentation/pico-sdk/hardware.html#rpip89c91da66ffde1cc30ac">Typedefs</a>
560                       </li>
561                     
562                       <li>
563                         <a href="/documentation/pico-sdk/hardware.html#rpip170d92c7209e76514d2b">Enumerations</a>
564                       </li>
565                     
566                       <li>
567                         <a href="/documentation/pico-sdk/hardware.html#rpipa56ad66478ae79ffb588">Functions</a>
568                       </li>
569                     
570                       <li>
571                         <a href="/documentation/pico-sdk/hardware.html#rpipe93dd39da7bd5b73a2e7">Detailed Description</a>
572                       </li>
573                     
574                       <li>
575                         <a href="/documentation/pico-sdk/hardware.html#clock_example">Example</a>
576                       </li>
577                     
578                       <li>
579                         <a href="/documentation/pico-sdk/hardware.html#rpip058d1a37d53125f96927">Typedef Documentation</a>
580                       </li>
581                     
582                       <li>
583                         <a href="/documentation/pico-sdk/hardware.html#rpipd0eaba69a740cd911694">Enumeration Type Documentation</a>
584                       </li>
585                     
586                       <li>
587                         <a href="/documentation/pico-sdk/hardware.html#rpip6e4e7e64e61a4b43601f">Function Documentation</a>
588                       </li>
589                     
590                   </ul>
591                 
592               </li>
593             
594               <li>
595                 <a href="/documentation/pico-sdk/hardware.html#hardware_divider">hardware_divider</a>
596                 
597                   <ul>
598                     
599                       <li>
600                         <a href="/documentation/pico-sdk/hardware.html#rpip7b4dfc6580b2c53a2f61">Functions</a>
601                       </li>
602                     
603                       <li>
604                         <a href="/documentation/pico-sdk/hardware.html#rpip115225b5493e8a07fe97">Detailed Description</a>
605                       </li>
606                     
607                       <li>
608                         <a href="/documentation/pico-sdk/hardware.html#divider_example">Example</a>
609                       </li>
610                     
611                       <li>
612                         <a href="/documentation/pico-sdk/hardware.html#rpip1078d95ce91b99434197">Function Documentation</a>
613                       </li>
614                     
615                   </ul>
616                 
617               </li>
618             
619               <li>
620                 <a href="/documentation/pico-sdk/hardware.html#hardware_dma">hardware_dma</a>
621                 
622                   <ul>
623                     
624                       <li>
625                         <a href="/documentation/pico-sdk/hardware.html#rpip5fc5374acc78a0097d96">Modules</a>
626                       </li>
627                     
628                       <li>
629                         <a href="/documentation/pico-sdk/hardware.html#rpip6d5488060fa28b69a5de">Enumerations</a>
630                       </li>
631                     
632                       <li>
633                         <a href="/documentation/pico-sdk/hardware.html#rpipa0fe778975f52970ba61">Functions</a>
634                       </li>
635                     
636                       <li>
637                         <a href="/documentation/pico-sdk/hardware.html#rpip7aba53e0335ad830a5b3">Detailed Description</a>
638                       </li>
639                     
640                       <li>
641                         <a href="/documentation/pico-sdk/hardware.html#rpipd4ba338c9c4b932eb68f">Enumeration Type Documentation</a>
642                       </li>
643                     
644                       <li>
645                         <a href="/documentation/pico-sdk/hardware.html#rpipe2cf7ead0796181b91e4">Function Documentation</a>
646                       </li>
647                     
648                       <li>
649                         <a href="/documentation/pico-sdk/hardware.html#channel_config">channel_config</a>
650                       </li>
651                     
652                   </ul>
653                 
654               </li>
655             
656               <li>
657                 <a href="/documentation/pico-sdk/hardware.html#hardware_exception">hardware_exception</a>
658                 
659                   <ul>
660                     
661                       <li>
662                         <a href="/documentation/pico-sdk/hardware.html#rpip18a3627e557367243979">Typedefs</a>
663                       </li>
664                     
665                       <li>
666                         <a href="/documentation/pico-sdk/hardware.html#rpip2093d294cba2d1648b91">Enumerations</a>
667                       </li>
668                     
669                       <li>
670                         <a href="/documentation/pico-sdk/hardware.html#rpip440d48a43ef52888c7f8">Functions</a>
671                       </li>
672                     
673                       <li>
674                         <a href="/documentation/pico-sdk/hardware.html#rpipc1138e9ba5ae1417bab7">Detailed Description</a>
675                       </li>
676                     
677                       <li>
678                         <a href="/documentation/pico-sdk/hardware.html#rpipa203a413b041690f5b3a">Typedef Documentation</a>
679                       </li>
680                     
681                       <li>
682                         <a href="/documentation/pico-sdk/hardware.html#rpip4b1393aca63cad7ac071">Enumeration Type Documentation</a>
683                       </li>
684                     
685                       <li>
686                         <a href="/documentation/pico-sdk/hardware.html#rpip59bacb8331c7305bf23f">Function Documentation</a>
687                       </li>
688                     
689                   </ul>
690                 
691               </li>
692             
693               <li>
694                 <a href="/documentation/pico-sdk/hardware.html#hardware_flash">hardware_flash</a>
695                 
696                   <ul>
697                     
698                       <li>
699                         <a href="/documentation/pico-sdk/hardware.html#rpip9bebeb9fda46d7931f29">Functions</a>
700                       </li>
701                     
702                       <li>
703                         <a href="/documentation/pico-sdk/hardware.html#rpip701484253c037df3b8c3">Detailed Description</a>
704                       </li>
705                     
706                       <li>
707                         <a href="/documentation/pico-sdk/hardware.html#flash_example">Example</a>
708                       </li>
709                     
710                       <li>
711                         <a href="/documentation/pico-sdk/hardware.html#rpip181aaf572db7d81ec48c">Function Documentation</a>
712                       </li>
713                     
714                   </ul>
715                 
716               </li>
717             
718               <li>
719                 <a href="/documentation/pico-sdk/hardware.html#hardware_gpio">hardware_gpio</a>
720                 
721                   <ul>
722                     
723                       <li>
724                         <a href="/documentation/pico-sdk/hardware.html#rpipfad69ce2636c0406f313">Typedefs</a>
725                       </li>
726                     
727                       <li>
728                         <a href="/documentation/pico-sdk/hardware.html#rpip3dc9f91b4873d19dd61e">Enumerations</a>
729                       </li>
730                     
731                       <li>
732                         <a href="/documentation/pico-sdk/hardware.html#rpipde51588ce1f57a29806f">Functions</a>
733                       </li>
734                     
735                       <li>
736                         <a href="/documentation/pico-sdk/hardware.html#rpip2fb6e3f0d25f72b5b750">Detailed Description</a>
737                       </li>
738                     
739                       <li>
740                         <a href="/documentation/pico-sdk/hardware.html#rpipa09cc3430089dfa6d35f">Typedef Documentation</a>
741                       </li>
742                     
743                       <li>
744                         <a href="/documentation/pico-sdk/hardware.html#rpipc1a3203083c98a8386db">Enumeration Type Documentation</a>
745                       </li>
746                     
747                       <li>
748                         <a href="/documentation/pico-sdk/hardware.html#rpip20bab61362be18e88989">Function Documentation</a>
749                       </li>
750                     
751                   </ul>
752                 
753               </li>
754             
755               <li>
756                 <a href="/documentation/pico-sdk/hardware.html#hardware_i2c">hardware_i2c</a>
757                 
758                   <ul>
759                     
760                       <li>
761                         <a href="/documentation/pico-sdk/hardware.html#rpipeb9b68cb7743d9da904d">Functions</a>
762                       </li>
763                     
764                       <li>
765                         <a href="/documentation/pico-sdk/hardware.html#rpip1c8da576903f52eac8f5">Detailed Description</a>
766                       </li>
767                     
768                       <li>
769                         <a href="/documentation/pico-sdk/hardware.html#i2c_example">Example</a>
770                       </li>
771                     
772                       <li>
773                         <a href="/documentation/pico-sdk/hardware.html#rpipe8156bbf78085b8efa90">Function Documentation</a>
774                       </li>
775                     
776                       <li>
777                         <a href="/documentation/pico-sdk/hardware.html#rpip762f57c89c87a7230e8a">Variable Documentation</a>
778                       </li>
779                     
780                   </ul>
781                 
782               </li>
783             
784               <li>
785                 <a href="/documentation/pico-sdk/hardware.html#hardware_interp">hardware_interp</a>
786                 
787                   <ul>
788                     
789                       <li>
790                         <a href="/documentation/pico-sdk/hardware.html#rpipc1cdb32b7c7ebdbf8c6d">Modules</a>
791                       </li>
792                     
793                       <li>
794                         <a href="/documentation/pico-sdk/hardware.html#rpip5af7eb7aca9e02ea40e0">Functions</a>
795                       </li>
796                     
797                       <li>
798                         <a href="/documentation/pico-sdk/hardware.html#rpipecac7251f20e18f482f0">Detailed Description</a>
799                       </li>
800                     
801                       <li>
802                         <a href="/documentation/pico-sdk/hardware.html#rpip7f589c9bda3f5c04eaf7">Function Documentation</a>
803                       </li>
804                     
805                       <li>
806                         <a href="/documentation/pico-sdk/hardware.html#interp_config">interp_config</a>
807                       </li>
808                     
809                   </ul>
810                 
811               </li>
812             
813               <li>
814                 <a href="/documentation/pico-sdk/hardware.html#hardware_irq">hardware_irq</a>
815                 
816                   <ul>
817                     
818                       <li>
819                         <a href="/documentation/pico-sdk/hardware.html#rpip7d7ce744d18b50aa39e0">Typedefs</a>
820                       </li>
821                     
822                       <li>
823                         <a href="/documentation/pico-sdk/hardware.html#rpipabf9dab89d154231fc7c">Functions</a>
824                       </li>
825                     
826                       <li>
827                         <a href="/documentation/pico-sdk/hardware.html#rpip8e9db58b4e37e3c6e6f7">Detailed Description</a>
828                       </li>
829                     
830                       <li>
831                         <a href="/documentation/pico-sdk/hardware.html#interrupt_nums">Interrupt Numbers</a>
832                       </li>
833                     
834                       <li>
835                         <a href="/documentation/pico-sdk/hardware.html#rpip3156275fc0925d498be5">Typedef Documentation</a>
836                       </li>
837                     
838                       <li>
839                         <a href="/documentation/pico-sdk/hardware.html#rpip809a516c3fb120805834">Function Documentation</a>
840                       </li>
841                     
842                   </ul>
843                 
844               </li>
845             
846               <li>
847                 <a href="/documentation/pico-sdk/hardware.html#hardware_pio">hardware_pio</a>
848                 
849                   <ul>
850                     
851                       <li>
852                         <a href="/documentation/pico-sdk/hardware.html#rpip6649e09e7b4258dca43b">Modules</a>
853                       </li>
854                     
855                       <li>
856                         <a href="/documentation/pico-sdk/hardware.html#rpipef554ed6ff6e2801159c">Macros</a>
857                       </li>
858                     
859                       <li>
860                         <a href="/documentation/pico-sdk/hardware.html#rpip09d45f9779a66eef27b9">Enumerations</a>
861                       </li>
862                     
863                       <li>
864                         <a href="/documentation/pico-sdk/hardware.html#rpipe4f94cdaa1864d487415">Functions</a>
865                       </li>
866                     
867                       <li>
868                         <a href="/documentation/pico-sdk/hardware.html#rpip08092671c649e5a7ed33">Detailed Description</a>
869                       </li>
870                     
871                       <li>
872                         <a href="/documentation/pico-sdk/hardware.html#rpip2c90e53db9e0b0eadaf0">Macro Definition Documentation</a>
873                       </li>
874                     
875                       <li>
876                         <a href="/documentation/pico-sdk/hardware.html#rpip993ff9b164db3c600f6c">Function Documentation</a>
877                       </li>
878                     
879                       <li>
880                         <a href="/documentation/pico-sdk/hardware.html#sm_config">sm_config</a>
881                       </li>
882                     
883                       <li>
884                         <a href="/documentation/pico-sdk/hardware.html#pio_instructions">pio_instructions</a>
885                       </li>
886                     
887                   </ul>
888                 
889               </li>
890             
891               <li>
892                 <a href="/documentation/pico-sdk/hardware.html#hardware_pll">hardware_pll</a>
893                 
894                   <ul>
895                     
896                       <li>
897                         <a href="/documentation/pico-sdk/hardware.html#rpip04a79fbadb11764c1347">Functions</a>
898                       </li>
899                     
900                       <li>
901                         <a href="/documentation/pico-sdk/hardware.html#rpip60321a9e3dea4db61ac5">Detailed Description</a>
902                       </li>
903                     
904                       <li>
905                         <a href="/documentation/pico-sdk/hardware.html#rpip3b39ffd09f4368ca9083">Function Documentation</a>
906                       </li>
907                     
908                   </ul>
909                 
910               </li>
911             
912               <li>
913                 <a href="/documentation/pico-sdk/hardware.html#hardware_pwm">hardware_pwm</a>
914                 
915                   <ul>
916                     
917                       <li>
918                         <a href="/documentation/pico-sdk/hardware.html#rpipb46b1035246cbafd4775">Enumerations</a>
919                       </li>
920                     
921                       <li>
922                         <a href="/documentation/pico-sdk/hardware.html#rpip539e288314d1cb6222a6">Functions</a>
923                       </li>
924                     
925                       <li>
926                         <a href="/documentation/pico-sdk/hardware.html#rpipa8b59f289fb1cca8b30f">Detailed Description</a>
927                       </li>
928                     
929                       <li>
930                         <a href="/documentation/pico-sdk/hardware.html#pwm_example">Example</a>
931                       </li>
932                     
933                       <li>
934                         <a href="/documentation/pico-sdk/hardware.html#rpip00ae929b6ad09e4f9f31">Enumeration Type Documentation</a>
935                       </li>
936                     
937                       <li>
938                         <a href="/documentation/pico-sdk/hardware.html#rpip596da54088102c730a85">Function Documentation</a>
939                       </li>
940                     
941                   </ul>
942                 
943               </li>
944             
945               <li>
946                 <a href="/documentation/pico-sdk/hardware.html#hardware_resets">hardware_resets</a>
947                 
948                   <ul>
949                     
950                       <li>
951                         <a href="/documentation/pico-sdk/hardware.html#rpip01db3f21293c4654deff">Functions</a>
952                       </li>
953                     
954                       <li>
955                         <a href="/documentation/pico-sdk/hardware.html#rpip670536031ba50ccc6589">Detailed Description</a>
956                       </li>
957                     
958                       <li>
959                         <a href="/documentation/pico-sdk/hardware.html#reset_example">Example</a>
960                       </li>
961                     
962                       <li>
963                         <a href="/documentation/pico-sdk/hardware.html#rpip696191bc283a6c8da6aa">Function Documentation</a>
964                       </li>
965                     
966                   </ul>
967                 
968               </li>
969             
970               <li>
971                 <a href="/documentation/pico-sdk/hardware.html#hardware_rtc">hardware_rtc</a>
972                 
973                   <ul>
974                     
975                       <li>
976                         <a href="/documentation/pico-sdk/hardware.html#rpip517ae21bc4c79589cb63">Typedefs</a>
977                       </li>
978                     
979                       <li>
980                         <a href="/documentation/pico-sdk/hardware.html#rpipfc133cc664b9e7da82a0">Functions</a>
981                       </li>
982                     
983                       <li>
984                         <a href="/documentation/pico-sdk/hardware.html#rpipfac24067380ecd0bc739">Detailed Description</a>
985                       </li>
986                     
987                       <li>
988                         <a href="/documentation/pico-sdk/hardware.html#rtc_example">Example</a>
989                       </li>
990                     
991                       <li>
992                         <a href="/documentation/pico-sdk/hardware.html#rpipf2ca5910c33c1f910921">Typedef Documentation</a>
993                       </li>
994                     
995                       <li>
996                         <a href="/documentation/pico-sdk/hardware.html#rpip1e2ec04f610bc6e2792d">Function Documentation</a>
997                       </li>
998                     
999                   </ul>
1000                 
1001               </li>
1002             
1003               <li>
1004                 <a href="/documentation/pico-sdk/hardware.html#hardware_spi">hardware_spi</a>
1005                 
1006                   <ul>
1007                     
1008                       <li>
1009                         <a href="/documentation/pico-sdk/hardware.html#rpip3f5aca6fc7b2f7e386a6">Macros</a>
1010                       </li>
1011                     
1012                       <li>
1013                         <a href="/documentation/pico-sdk/hardware.html#rpip9ec490b208c8a7d66ea5">Enumerations</a>
1014                       </li>
1015                     
1016                       <li>
1017                         <a href="/documentation/pico-sdk/hardware.html#rpip0e32134afff49352abbf">Functions</a>
1018                       </li>
1019                     
1020                       <li>
1021                         <a href="/documentation/pico-sdk/hardware.html#rpip53fbef906bbbb4c86c1b">Detailed Description</a>
1022                       </li>
1023                     
1024                       <li>
1025                         <a href="/documentation/pico-sdk/hardware.html#rpipfdd2ef7004f65b7695c8">Macro Definition Documentation</a>
1026                       </li>
1027                     
1028                       <li>
1029                         <a href="/documentation/pico-sdk/hardware.html#rpip8eaa5c705b10721fc604">Function Documentation</a>
1030                       </li>
1031                     
1032                   </ul>
1033                 
1034               </li>
1035             
1036               <li>
1037                 <a href="/documentation/pico-sdk/hardware.html#hardware_sync">hardware_sync</a>
1038                 
1039                   <ul>
1040                     
1041                       <li>
1042                         <a href="/documentation/pico-sdk/hardware.html#rpipaf2c26a82e2081c77391">Typedefs</a>
1043                       </li>
1044                     
1045                       <li>
1046                         <a href="/documentation/pico-sdk/hardware.html#rpip75ebd45136c83ea77417">Functions</a>
1047                       </li>
1048                     
1049                       <li>
1050                         <a href="/documentation/pico-sdk/hardware.html#rpipffceb67fd927abf19a64">Detailed Description</a>
1051                       </li>
1052                     
1053                       <li>
1054                         <a href="/documentation/pico-sdk/hardware.html#autotoc_md1">Spin Locks</a>
1055                       </li>
1056                     
1057                       <li>
1058                         <a href="/documentation/pico-sdk/hardware.html#rpipa9c3278cd7f23be6930f">Function Documentation</a>
1059                       </li>
1060                     
1061                   </ul>
1062                 
1063               </li>
1064             
1065               <li>
1066                 <a href="/documentation/pico-sdk/hardware.html#hardware_timer">hardware_timer</a>
1067                 
1068                   <ul>
1069                     
1070                       <li>
1071                         <a href="/documentation/pico-sdk/hardware.html#rpip54d900e51ca5d5f92dc1">Typedefs</a>
1072                       </li>
1073                     
1074                       <li>
1075                         <a href="/documentation/pico-sdk/hardware.html#rpipb47e300854299e8a2d40">Functions</a>
1076                       </li>
1077                     
1078                       <li>
1079                         <a href="/documentation/pico-sdk/hardware.html#rpip7ce2cdc1662dce59296b">Detailed Description</a>
1080                       </li>
1081                     
1082                       <li>
1083                         <a href="/documentation/pico-sdk/hardware.html#timer_example">Example</a>
1084                       </li>
1085                     
1086                       <li>
1087                         <a href="/documentation/pico-sdk/hardware.html#rpip8149d3296f588e1af4fb">Typedef Documentation</a>
1088                       </li>
1089                     
1090                       <li>
1091                         <a href="/documentation/pico-sdk/hardware.html#rpipdea6c4945bdc6f6374d4">Function Documentation</a>
1092                       </li>
1093                     
1094                   </ul>
1095                 
1096               </li>
1097             
1098               <li>
1099                 <a href="/documentation/pico-sdk/hardware.html#hardware_uart">hardware_uart</a>
1100                 
1101                   <ul>
1102                     
1103                       <li>
1104                         <a href="/documentation/pico-sdk/hardware.html#rpipa1024710aeeb196b78bd">Enumerations</a>
1105                       </li>
1106                     
1107                       <li>
1108                         <a href="/documentation/pico-sdk/hardware.html#rpipf53ff9493512b6885dbc">Functions</a>
1109                       </li>
1110                     
1111                       <li>
1112                         <a href="/documentation/pico-sdk/hardware.html#rpip4d3a4f9268d2ebb2f18f">Detailed Description</a>
1113                       </li>
1114                     
1115                       <li>
1116                         <a href="/documentation/pico-sdk/hardware.html#uart_example">Example</a>
1117                       </li>
1118                     
1119                       <li>
1120                         <a href="/documentation/pico-sdk/hardware.html#rpipe5889bce3760d2f2abc3">Macro Definition Documentation</a>
1121                       </li>
1122                     
1123                       <li>
1124                         <a href="/documentation/pico-sdk/hardware.html#rpip8a3222d9bd4f1a88f966">Function Documentation</a>
1125                       </li>
1126                     
1127                   </ul>
1128                 
1129               </li>
1130             
1131               <li>
1132                 <a href="/documentation/pico-sdk/hardware.html#hardware_vreg">hardware_vreg</a>
1133                 
1134                   <ul>
1135                     
1136                       <li>
1137                         <a href="/documentation/pico-sdk/hardware.html#rpip2e95f90d0e541df0fbd5">Functions</a>
1138                       </li>
1139                     
1140                       <li>
1141                         <a href="/documentation/pico-sdk/hardware.html#rpipff9b545b8ac19c31cf84">Detailed Description</a>
1142                       </li>
1143                     
1144                       <li>
1145                         <a href="/documentation/pico-sdk/hardware.html#rpip374b3f7b14694be44510">Function Documentation</a>
1146                       </li>
1147                     
1148                   </ul>
1149                 
1150               </li>
1151             
1152               <li>
1153                 <a href="/documentation/pico-sdk/hardware.html#hardware_watchdog">hardware_watchdog</a>
1154                 
1155                   <ul>
1156                     
1157                       <li>
1158                         <a href="/documentation/pico-sdk/hardware.html#rpip3e4251ba95a5958301b7">Functions</a>
1159                       </li>
1160                     
1161                       <li>
1162                         <a href="/documentation/pico-sdk/hardware.html#rpip0cf7dd571b6eaaeaf8c1">Detailed Description</a>
1163                       </li>
1164                     
1165                       <li>
1166                         <a href="/documentation/pico-sdk/hardware.html#watchdog_example">Example</a>
1167                       </li>
1168                     
1169                       <li>
1170                         <a href="/documentation/pico-sdk/hardware.html#rpipa364c96388e31cb15832">Function Documentation</a>
1171                       </li>
1172                     
1173                   </ul>
1174                 
1175               </li>
1176             
1177               <li>
1178                 <a href="/documentation/pico-sdk/hardware.html#hardware_xosc">hardware_xosc</a>
1179                 
1180                   <ul>
1181                     
1182                       <li>
1183                         <a href="/documentation/pico-sdk/hardware.html#rpipb7b0130814aa84716e89">Functions</a>
1184                       </li>
1185                     
1186                       <li>
1187                         <a href="/documentation/pico-sdk/hardware.html#rpip6d0698b303647774cdff">Detailed Description</a>
1188                       </li>
1189                     
1190                       <li>
1191                         <a href="/documentation/pico-sdk/hardware.html#rpip8c9cf630da61511f7468">Function Documentation</a>
1192                       </li>
1193                     
1194                   </ul>
1195                 
1196               </li>
1197             
1198           </ul>
1199         </div>
1200       
1201     
1202       <h3 class="contentshead">High Level APIs</h3>
1203       
1204         <div class="itemcontents">
1205           <ul class="sectlevel1">
1206             
1207               <li>
1208                 <a href="/documentation/pico-sdk/high_level.html#pico_async_context">pico_async_context</a>
1209                 
1210                   <ul>
1211                     
1212                       <li>
1213                         <a href="/documentation/pico-sdk/high_level.html#rpip334b1daca4d436cd2653">Modules</a>
1214                       </li>
1215                     
1216                       <li>
1217                         <a href="/documentation/pico-sdk/high_level.html#rpip34a43d49030e182275e8">Data Structures</a>
1218                       </li>
1219                     
1220                       <li>
1221                         <a href="/documentation/pico-sdk/high_level.html#rpip73422519f861a01369c4">Typedefs</a>
1222                       </li>
1223                     
1224                       <li>
1225                         <a href="/documentation/pico-sdk/high_level.html#rpipc33092ce8251b4b8dbf1">Functions</a>
1226                       </li>
1227                     
1228                       <li>
1229                         <a href="/documentation/pico-sdk/high_level.html#rpip79be1e27fbc098900953">Detailed Description</a>
1230                       </li>
1231                     
1232                       <li>
1233                         <a href="/documentation/pico-sdk/high_level.html#rpipe4818f2317923f615384">Typedef Documentation</a>
1234                       </li>
1235                     
1236                       <li>
1237                         <a href="/documentation/pico-sdk/high_level.html#rpip8be6ff2503083d1e44cb">Function Documentation</a>
1238                       </li>
1239                     
1240                       <li>
1241                         <a href="/documentation/pico-sdk/high_level.html#async_context_freertos">async_context_freertos</a>
1242                       </li>
1243                     
1244                       <li>
1245                         <a href="/documentation/pico-sdk/high_level.html#async_context_poll">async_context_poll</a>
1246                       </li>
1247                     
1248                       <li>
1249                         <a href="/documentation/pico-sdk/high_level.html#async_context_threadsafe_background">async_context_threadsafe_background</a>
1250                       </li>
1251                     
1252                   </ul>
1253                 
1254               </li>
1255             
1256               <li>
1257                 <a href="/documentation/pico-sdk/high_level.html#pico_flash">pico_flash</a>
1258                 
1259                   <ul>
1260                     
1261                       <li>
1262                         <a href="/documentation/pico-sdk/high_level.html#rpipcb13fd2e8f843c73e3be">Functions</a>
1263                       </li>
1264                     
1265                       <li>
1266                         <a href="/documentation/pico-sdk/high_level.html#rpip757f4a42c3de3c0b5283">Detailed Description</a>
1267                       </li>
1268                     
1269                       <li>
1270                         <a href="/documentation/pico-sdk/high_level.html#rpip984b61938ec2fe82b216">Function Documentation</a>
1271                       </li>
1272                     
1273                   </ul>
1274                 
1275               </li>
1276             
1277               <li>
1278                 <a href="/documentation/pico-sdk/high_level.html#pico_i2c_slave">pico_i2c_slave</a>
1279                 
1280                   <ul>
1281                     
1282                       <li>
1283                         <a href="/documentation/pico-sdk/high_level.html#rpipff46d0780fe042bf707c">Typedefs</a>
1284                       </li>
1285                     
1286                       <li>
1287                         <a href="/documentation/pico-sdk/high_level.html#rpip44c693c1c2d88aff02f4">Enumerations</a>
1288                       </li>
1289                     
1290                       <li>
1291                         <a href="/documentation/pico-sdk/high_level.html#rpip7d4e1982831b9d4bc1be">Functions</a>
1292                       </li>
1293                     
1294                       <li>
1295                         <a href="/documentation/pico-sdk/high_level.html#rpip9e01d206b833ed2d2422">Detailed Description</a>
1296                       </li>
1297                     
1298                       <li>
1299                         <a href="/documentation/pico-sdk/high_level.html#rpip64a0102e835d7a4aae09">Typedef Documentation</a>
1300                       </li>
1301                     
1302                       <li>
1303                         <a href="/documentation/pico-sdk/high_level.html#rpipafb978c9dd3ec6082f80">Enumeration Type Documentation</a>
1304                       </li>
1305                     
1306                       <li>
1307                         <a href="/documentation/pico-sdk/high_level.html#rpipbf5b82a0dc8d3d4bb2bf">Function Documentation</a>
1308                       </li>
1309                     
1310                   </ul>
1311                 
1312               </li>
1313             
1314               <li>
1315                 <a href="/documentation/pico-sdk/high_level.html#pico_multicore">pico_multicore</a>
1316                 
1317                   <ul>
1318                     
1319                       <li>
1320                         <a href="/documentation/pico-sdk/high_level.html#rpip7baf405557a57f41b9de">Modules</a>
1321                       </li>
1322                     
1323                       <li>
1324                         <a href="/documentation/pico-sdk/high_level.html#rpipf840d967c7b8d6fef316">Functions</a>
1325                       </li>
1326                     
1327                       <li>
1328                         <a href="/documentation/pico-sdk/high_level.html#rpipc30c9f02735cb3003f42">Detailed Description</a>
1329                       </li>
1330                     
1331                       <li>
1332                         <a href="/documentation/pico-sdk/high_level.html#multicore_example">Example</a>
1333                       </li>
1334                     
1335                       <li>
1336                         <a href="/documentation/pico-sdk/high_level.html#rpipe803fe9ffd182f2af357">Function Documentation</a>
1337                       </li>
1338                     
1339                       <li>
1340                         <a href="/documentation/pico-sdk/high_level.html#multicore_fifo">fifo</a>
1341                       </li>
1342                     
1343                       <li>
1344                         <a href="/documentation/pico-sdk/high_level.html#multicore_lockout">lockout</a>
1345                       </li>
1346                     
1347                   </ul>
1348                 
1349               </li>
1350             
1351               <li>
1352                 <a href="/documentation/pico-sdk/high_level.html#pico_rand">pico_rand</a>
1353                 
1354                   <ul>
1355                     
1356                       <li>
1357                         <a href="/documentation/pico-sdk/high_level.html#rpip2ac37766eddd02aaed07">Functions</a>
1358                       </li>
1359                     
1360                       <li>
1361                         <a href="/documentation/pico-sdk/high_level.html#rpipd9cd1e107a6238a969b8">Detailed Description</a>
1362                       </li>
1363                     
1364                       <li>
1365                         <a href="/documentation/pico-sdk/high_level.html#rpipaca07ee034d314acc4bf">Function Documentation</a>
1366                       </li>
1367                     
1368                   </ul>
1369                 
1370               </li>
1371             
1372               <li>
1373                 <a href="/documentation/pico-sdk/high_level.html#pico_stdlib">pico_stdlib</a>
1374                 
1375                   <ul>
1376                     
1377                       <li>
1378                         <a href="/documentation/pico-sdk/high_level.html#rpip04d09fa6ec88d8737403">Functions</a>
1379                       </li>
1380                     
1381                       <li>
1382                         <a href="/documentation/pico-sdk/high_level.html#rpip67e7d087a6d9d4177c9c">Detailed Description</a>
1383                       </li>
1384                     
1385                       <li>
1386                         <a href="/documentation/pico-sdk/high_level.html#rpip9d8a4958ff265de7762d">Function Documentation</a>
1387                       </li>
1388                     
1389                   </ul>
1390                 
1391               </li>
1392             
1393               <li>
1394                 <a href="/documentation/pico-sdk/high_level.html#pico_sync">pico_sync</a>
1395                 
1396                   <ul>
1397                     
1398                       <li>
1399                         <a href="/documentation/pico-sdk/high_level.html#rpip42988faa0a4de968a0fe">Modules</a>
1400                       </li>
1401                     
1402                       <li>
1403                         <a href="/documentation/pico-sdk/high_level.html#rpip0a443d120465214bff04">Detailed Description</a>
1404                       </li>
1405                     
1406                       <li>
1407                         <a href="/documentation/pico-sdk/high_level.html#critical_section">critical_section</a>
1408                       </li>
1409                     
1410                       <li>
1411                         <a href="/documentation/pico-sdk/high_level.html#lock_core">lock_core</a>
1412                       </li>
1413                     
1414                       <li>
1415                         <a href="/documentation/pico-sdk/high_level.html#mutex">mutex</a>
1416                       </li>
1417                     
1418                       <li>
1419                         <a href="/documentation/pico-sdk/high_level.html#sem">sem</a>
1420                       </li>
1421                     
1422                   </ul>
1423                 
1424               </li>
1425             
1426               <li>
1427                 <a href="/documentation/pico-sdk/high_level.html#pico_time">pico_time</a>
1428                 
1429                   <ul>
1430                     
1431                       <li>
1432                         <a href="/documentation/pico-sdk/high_level.html#rpip75fc0e1fb693907ffae4">Modules</a>
1433                       </li>
1434                     
1435                       <li>
1436                         <a href="/documentation/pico-sdk/high_level.html#rpip587c32f8059c662009b6">Detailed Description</a>
1437                       </li>
1438                     
1439                       <li>
1440                         <a href="/documentation/pico-sdk/high_level.html#timestamp">timestamp</a>
1441                       </li>
1442                     
1443                       <li>
1444                         <a href="/documentation/pico-sdk/high_level.html#sleep">sleep</a>
1445                       </li>
1446                     
1447                       <li>
1448                         <a href="/documentation/pico-sdk/high_level.html#alarm">alarm</a>
1449                       </li>
1450                     
1451                       <li>
1452                         <a href="/documentation/pico-sdk/high_level.html#repeating_timer">repeating_timer</a>
1453                       </li>
1454                     
1455                   </ul>
1456                 
1457               </li>
1458             
1459               <li>
1460                 <a href="/documentation/pico-sdk/high_level.html#pico_unique_id">pico_unique_id</a>
1461                 
1462                   <ul>
1463                     
1464                       <li>
1465                         <a href="/documentation/pico-sdk/high_level.html#rpip7981e60e740d763c8048">Data Structures</a>
1466                       </li>
1467                     
1468                       <li>
1469                         <a href="/documentation/pico-sdk/high_level.html#rpip04f6f057a3030914c7d2">Functions</a>
1470                       </li>
1471                     
1472                       <li>
1473                         <a href="/documentation/pico-sdk/high_level.html#rpip2a7175316ee370f706a8">Detailed Description</a>
1474                       </li>
1475                     
1476                       <li>
1477                         <a href="/documentation/pico-sdk/high_level.html#rpipec641d378cce59faa918">Function Documentation</a>
1478                       </li>
1479                     
1480                   </ul>
1481                 
1482               </li>
1483             
1484               <li>
1485                 <a href="/documentation/pico-sdk/high_level.html#pico_util">pico_util</a>
1486                 
1487                   <ul>
1488                     
1489                       <li>
1490                         <a href="/documentation/pico-sdk/high_level.html#rpip158b48d2746d665569ba">Modules</a>
1491                       </li>
1492                     
1493                       <li>
1494                         <a href="/documentation/pico-sdk/high_level.html#rpip8dab79e9dfcc333468bf">Detailed Description</a>
1495                       </li>
1496                     
1497                       <li>
1498                         <a href="/documentation/pico-sdk/high_level.html#util_datetime">datetime</a>
1499                       </li>
1500                     
1501                       <li>
1502                         <a href="/documentation/pico-sdk/high_level.html#util_pheap">pheap</a>
1503                       </li>
1504                     
1505                       <li>
1506                         <a href="/documentation/pico-sdk/high_level.html#queue">queue</a>
1507                       </li>
1508                     
1509                   </ul>
1510                 
1511               </li>
1512             
1513           </ul>
1514         </div>
1515       
1516     
1517       <h3 class="contentshead">Third-party Libraries</h3>
1518       
1519         <div class="itemcontents">
1520           <ul class="sectlevel1">
1521             
1522               <li>
1523                 <a href="/documentation/pico-sdk/third_party.html#tinyusb_device">tinyusb_device</a>
1524                 
1525               </li>
1526             
1527               <li>
1528                 <a href="/documentation/pico-sdk/third_party.html#tinyusb_host">tinyusb_host</a>
1529                 
1530               </li>
1531             
1532           </ul>
1533         </div>
1534       
1535     
1536       <h3 class="contentshead">Networking Libraries</h3>
1537       
1538         <div class="itemcontents">
1539           <ul class="sectlevel1">
1540             
1541               <li>
1542                 <a href="/documentation/pico-sdk/networking.html#pico_btstack">pico_btstack</a>
1543                 
1544                   <ul>
1545                     
1546                       <li>
1547                         <a href="/documentation/pico-sdk/networking.html#rpipabe482207518b13daea8">Functions</a>
1548                       </li>
1549                     
1550                       <li>
1551                         <a href="/documentation/pico-sdk/networking.html#rpip28aa570f7304feb24dd8">Detailed Description</a>
1552                       </li>
1553                     
1554                       <li>
1555                         <a href="/documentation/pico-sdk/networking.html#rpip81e86eeedf11e3669c51">Function Documentation</a>
1556                       </li>
1557                     
1558                   </ul>
1559                 
1560               </li>
1561             
1562               <li>
1563                 <a href="/documentation/pico-sdk/networking.html#pico_lwip">pico_lwip</a>
1564                 
1565                   <ul>
1566                     
1567                       <li>
1568                         <a href="/documentation/pico-sdk/networking.html#rpip192837c4e57e2f47dbf6">Modules</a>
1569                       </li>
1570                     
1571                       <li>
1572                         <a href="/documentation/pico-sdk/networking.html#rpip98f8ef4b7c7e1e6ce281">Detailed Description</a>
1573                       </li>
1574                     
1575                       <li>
1576                         <a href="/documentation/pico-sdk/networking.html#pico_lwip_arch">pico_lwip_arch</a>
1577                       </li>
1578                     
1579                       <li>
1580                         <a href="/documentation/pico-sdk/networking.html#pico_lwip_freertos">pico_lwip_freertos</a>
1581                       </li>
1582                     
1583                       <li>
1584                         <a href="/documentation/pico-sdk/networking.html#pico_lwip_nosys">pico_lwip_nosys</a>
1585                       </li>
1586                     
1587                   </ul>
1588                 
1589               </li>
1590             
1591               <li>
1592                 <a href="/documentation/pico-sdk/networking.html#pico_cyw43_driver">pico_cyw43_driver</a>
1593                 
1594                   <ul>
1595                     
1596                       <li>
1597                         <a href="/documentation/pico-sdk/networking.html#rpip0627746aa35c1c42f44c">Modules</a>
1598                       </li>
1599                     
1600                       <li>
1601                         <a href="/documentation/pico-sdk/networking.html#rpipae8b34f7bf0aa371c600">Files</a>
1602                       </li>
1603                     
1604                       <li>
1605                         <a href="/documentation/pico-sdk/networking.html#rpipd512513ec719cf7ab197">Functions</a>
1606                       </li>
1607                     
1608                       <li>
1609                         <a href="/documentation/pico-sdk/networking.html#rpipebe2d33331cf989e1d29">Detailed Description</a>
1610                       </li>
1611                     
1612                       <li>
1613                         <a href="/documentation/pico-sdk/networking.html#rpip7ddeab266708e76683af">Function Documentation</a>
1614                       </li>
1615                     
1616                       <li>
1617                         <a href="/documentation/pico-sdk/networking.html#pico_btstack_cyw43">pico_btstack_cyw43</a>
1618                       </li>
1619                     
1620                   </ul>
1621                 
1622               </li>
1623             
1624               <li>
1625                 <a href="/documentation/pico-sdk/networking.html#pico_cyw43_arch">pico_cyw43_arch</a>
1626                 
1627                   <ul>
1628                     
1629                       <li>
1630                         <a href="/documentation/pico-sdk/networking.html#rpip55bbe3b3adaa09c91f12">Modules</a>
1631                       </li>
1632                     
1633                       <li>
1634                         <a href="/documentation/pico-sdk/networking.html#rpipbd659dd2af29c569d582">Macros</a>
1635                       </li>
1636                     
1637                       <li>
1638                         <a href="/documentation/pico-sdk/networking.html#rpip2dbacd10d4e207dae370">Functions</a>
1639                       </li>
1640                     
1641                       <li>
1642                         <a href="/documentation/pico-sdk/networking.html#rpip2786c74350b1e1c2247c">Detailed Description</a>
1643                       </li>
1644                     
1645                       <li>
1646                         <a href="/documentation/pico-sdk/networking.html#rpip7e5d89be1cf9268f36c9">Macro Definition Documentation</a>
1647                       </li>
1648                     
1649                       <li>
1650                         <a href="/documentation/pico-sdk/networking.html#rpip2890f60e0c83d227f2ec">Function Documentation</a>
1651                       </li>
1652                     
1653                       <li>
1654                         <a href="/documentation/pico-sdk/networking.html#cyw43_driver">cyw43_driver</a>
1655                       </li>
1656                     
1657                   </ul>
1658                 
1659               </li>
1660             
1661           </ul>
1662         </div>
1663       
1664     
1665       <h3 class="contentshead">Runtime Infrastructure</h3>
1666       
1667         <div class="itemcontents">
1668           <ul class="sectlevel1">
1669             
1670               <li>
1671                 <a href="/documentation/pico-sdk/runtime.html#boot_stage2">boot_stage2</a>
1672                 
1673               </li>
1674             
1675               <li>
1676                 <a href="/documentation/pico-sdk/runtime.html#pico_base">pico_base</a>
1677                 
1678                   <ul>
1679                     
1680                       <li>
1681                         <a href="/documentation/pico-sdk/runtime.html#rpip45542cfabd24f25c2b10">Enumerations</a>
1682                       </li>
1683                     
1684                       <li>
1685                         <a href="/documentation/pico-sdk/runtime.html#rpipb665655c66e63f4a0c4a">Detailed Description</a>
1686                       </li>
1687                     
1688                   </ul>
1689                 
1690               </li>
1691             
1692               <li>
1693                 <a href="/documentation/pico-sdk/runtime.html#pico_binary_info">pico_binary_info</a>
1694                 
1695                   <ul>
1696                     
1697                       <li>
1698                         <a href="/documentation/pico-sdk/runtime.html#rpip7989f07e71fba07188be">Macros</a>
1699                       </li>
1700                     
1701                       <li>
1702                         <a href="/documentation/pico-sdk/runtime.html#rpipc27123c22ad347cefc87">Detailed Description</a>
1703                       </li>
1704                     
1705                       <li>
1706                         <a href="/documentation/pico-sdk/runtime.html#rpipa2ff445fb2a0a57f9dde">Macro Definition Documentation</a>
1707                       </li>
1708                     
1709                   </ul>
1710                 
1711               </li>
1712             
1713               <li>
1714                 <a href="/documentation/pico-sdk/runtime.html#pico_bit_ops">pico_bit_ops</a>
1715                 
1716                   <ul>
1717                     
1718                       <li>
1719                         <a href="/documentation/pico-sdk/runtime.html#rpipf1806233ab08edf2d1a4">Functions</a>
1720                       </li>
1721                     
1722                       <li>
1723                         <a href="/documentation/pico-sdk/runtime.html#rpip63c260c668f0f7e929e9">Detailed Description</a>
1724                       </li>
1725                     
1726                       <li>
1727                         <a href="/documentation/pico-sdk/runtime.html#rpip2b305c870314270af1e5">Function Documentation</a>
1728                       </li>
1729                     
1730                   </ul>
1731                 
1732               </li>
1733             
1734               <li>
1735                 <a href="/documentation/pico-sdk/runtime.html#pico_bootrom">pico_bootrom</a>
1736                 
1737                   <ul>
1738                     
1739                       <li>
1740                         <a href="/documentation/pico-sdk/runtime.html#rpipcf60d5fd56095181a98e">Macros</a>
1741                       </li>
1742                     
1743                       <li>
1744                         <a href="/documentation/pico-sdk/runtime.html#rpip05bb858150fa37b3e132">Functions</a>
1745                       </li>
1746                     
1747                       <li>
1748                         <a href="/documentation/pico-sdk/runtime.html#rpip005c32aa3418cd5dc77d">Detailed Description</a>
1749                       </li>
1750                     
1751                       <li>
1752                         <a href="/documentation/pico-sdk/runtime.html#rpipf9cc87ae1233fe613239">Macro Definition Documentation</a>
1753                       </li>
1754                     
1755                       <li>
1756                         <a href="/documentation/pico-sdk/runtime.html#rpipab643919091a482a2c7d">Function Documentation</a>
1757                       </li>
1758                     
1759                   </ul>
1760                 
1761               </li>
1762             
1763               <li>
1764                 <a href="/documentation/pico-sdk/runtime.html#pico_bootsel_via_double_reset">pico_bootsel_via_double_reset</a>
1765                 
1766               </li>
1767             
1768               <li>
1769                 <a href="/documentation/pico-sdk/runtime.html#pico_cxx_options">pico_cxx_options</a>
1770                 
1771               </li>
1772             
1773               <li>
1774                 <a href="/documentation/pico-sdk/runtime.html#pico_divider">pico_divider</a>
1775                 
1776                   <ul>
1777                     
1778                       <li>
1779                         <a href="/documentation/pico-sdk/runtime.html#rpipfb1beee11febefbf90cc">Files</a>
1780                       </li>
1781                     
1782                       <li>
1783                         <a href="/documentation/pico-sdk/runtime.html#rpipa79e631886e62fcd1cd0">Functions</a>
1784                       </li>
1785                     
1786                       <li>
1787                         <a href="/documentation/pico-sdk/runtime.html#rpip108233463d1122628ba9">Detailed Description</a>
1788                       </li>
1789                     
1790                       <li>
1791                         <a href="/documentation/pico-sdk/runtime.html#rpip0d33c4d7c6e0d08667ce">Function Documentation</a>
1792                       </li>
1793                     
1794                   </ul>
1795                 
1796               </li>
1797             
1798               <li>
1799                 <a href="/documentation/pico-sdk/runtime.html#pico_double">pico_double</a>
1800                 
1801               </li>
1802             
1803               <li>
1804                 <a href="/documentation/pico-sdk/runtime.html#pico_float">pico_float</a>
1805                 
1806               </li>
1807             
1808               <li>
1809                 <a href="/documentation/pico-sdk/runtime.html#pico_int64_ops">pico_int64_ops</a>
1810                 
1811               </li>
1812             
1813               <li>
1814                 <a href="/documentation/pico-sdk/runtime.html#pico_malloc">pico_malloc</a>
1815                 
1816               </li>
1817             
1818               <li>
1819                 <a href="/documentation/pico-sdk/runtime.html#pico_mem_ops">pico_mem_ops</a>
1820                 
1821               </li>
1822             
1823               <li>
1824                 <a href="/documentation/pico-sdk/runtime.html#pico_platform">pico_platform</a>
1825                 
1826                   <ul>
1827                     
1828                       <li>
1829                         <a href="/documentation/pico-sdk/runtime.html#rpipb6ca92b8ab23006742ba">Macros</a>
1830                       </li>
1831                     
1832                       <li>
1833                         <a href="/documentation/pico-sdk/runtime.html#rpip96324626dec724f7403d">Functions</a>
1834                       </li>
1835                     
1836                       <li>
1837                         <a href="/documentation/pico-sdk/runtime.html#rpip092e8191441c92cf5ccf">Detailed Description</a>
1838                       </li>
1839                     
1840                       <li>
1841                         <a href="/documentation/pico-sdk/runtime.html#rpip464a3792c78a5a9ffa73">Macro Definition Documentation</a>
1842                       </li>
1843                     
1844                       <li>
1845                         <a href="/documentation/pico-sdk/runtime.html#rpip14e9a416348dd6951167">Function Documentation</a>
1846                       </li>
1847                     
1848                   </ul>
1849                 
1850               </li>
1851             
1852               <li>
1853                 <a href="/documentation/pico-sdk/runtime.html#pico_printf">pico_printf</a>
1854                 
1855               </li>
1856             
1857               <li>
1858                 <a href="/documentation/pico-sdk/runtime.html#pico_runtime">pico_runtime</a>
1859                 
1860               </li>
1861             
1862               <li>
1863                 <a href="/documentation/pico-sdk/runtime.html#pico_stdio">pico_stdio</a>
1864                 
1865                   <ul>
1866                     
1867                       <li>
1868                         <a href="/documentation/pico-sdk/runtime.html#rpip66600d8c06f1ab929c23">Modules</a>
1869                       </li>
1870                     
1871                       <li>
1872                         <a href="/documentation/pico-sdk/runtime.html#rpipbfbe419ab3a18de01187">Functions</a>
1873                       </li>
1874                     
1875                       <li>
1876                         <a href="/documentation/pico-sdk/runtime.html#rpip3eccc7d7592c0528c9ae">Detailed Description</a>
1877                       </li>
1878                     
1879                       <li>
1880                         <a href="/documentation/pico-sdk/runtime.html#rpip2fc272e282686cb4da01">Function Documentation</a>
1881                       </li>
1882                     
1883                       <li>
1884                         <a href="/documentation/pico-sdk/runtime.html#pico_stdio_semihosting">pico_stdio_semihosting</a>
1885                       </li>
1886                     
1887                       <li>
1888                         <a href="/documentation/pico-sdk/runtime.html#pico_stdio_uart">pico_stdio_uart</a>
1889                       </li>
1890                     
1891                       <li>
1892                         <a href="/documentation/pico-sdk/runtime.html#pico_stdio_usb">pico_stdio_usb</a>
1893                       </li>
1894                     
1895                   </ul>
1896                 
1897               </li>
1898             
1899               <li>
1900                 <a href="/documentation/pico-sdk/runtime.html#pico_standard_link">pico_standard_link</a>
1901                 
1902               </li>
1903             
1904           </ul>
1905         </div>
1906       
1907     
1908       <h3 class="contentshead">External API Headers</h3>
1909       
1910         <div class="itemcontents">
1911           <ul class="sectlevel1">
1912             
1913               <li>
1914                 <a href="/documentation/pico-sdk/misc.html#boot_picoboot">boot_picoboot</a>
1915                 
1916               </li>
1917             
1918               <li>
1919                 <a href="/documentation/pico-sdk/misc.html#boot_uf2">boot_uf2</a>
1920                 
1921               </li>
1922             
1923           </ul>
1924         </div>
1925       
1926     
1927   </div>
1928   
1929
1930
1931
1932 </nav>
1933       <nav id="contents">
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945   
1946     <h2><a href="/documentation/pico-sdk/">Pico C SDK</a></h2>
1947     
1948       <h3 class="contentshead" onclick="expandAndCollapse(this)">Introduction</h3>
1949       
1950         
1951         <div class="itemcontents">
1952           <ul class="sectlevel1">
1953             
1954               <li>
1955                 <a href="/documentation/pico-sdk/index_doxygen.html#index">Raspberry Pi Pico SDK</a>
1956                 
1957                   <ul>
1958                     
1959                       <li>
1960                         <a href="/documentation/pico-sdk/index_doxygen.html#autotoc_md3">SDK Design</a>
1961                       </li>
1962                     
1963                       <li>
1964                         <a href="/documentation/pico-sdk/index_doxygen.html#autotoc_md4">The Build System</a>
1965                       </li>
1966                     
1967                       <li>
1968                         <a href="/documentation/pico-sdk/index_doxygen.html#autotoc_md5">Examples</a>
1969                       </li>
1970                     
1971                   </ul>
1972                 
1973               </li>
1974             
1975           </ul>
1976         </div>
1977         
1978       
1979     
1980       <h3 class="contentshead" onclick="expandAndCollapse(this)">Hardware APIs</h3>
1981       
1982         
1983         <div class="itemcontents">
1984           <ul class="sectlevel1">
1985             
1986               <li>
1987                 <a href="/documentation/pico-sdk/hardware.html#hardware_adc">hardware_adc</a>
1988                 
1989                   <ul>
1990                     
1991                       <li>
1992                         <a href="/documentation/pico-sdk/hardware.html#rpipfbfe5b0fe8af96a15d1f">Functions</a>
1993                       </li>
1994                     
1995                       <li>
1996                         <a href="/documentation/pico-sdk/hardware.html#rpipe94a81e06ca005c7f718">Detailed Description</a>
1997                       </li>
1998                     
1999                       <li>
2000                         <a href="/documentation/pico-sdk/hardware.html#adc_example">Example</a>
2001                       </li>
2002                     
2003                       <li>
2004                         <a href="/documentation/pico-sdk/hardware.html#rpipb170229eb32af8fbb25b">Function Documentation</a>
2005                       </li>
2006                     
2007                   </ul>
2008                 
2009               </li>
2010             
2011               <li>
2012                 <a href="/documentation/pico-sdk/hardware.html#hardware_base">hardware_base</a>
2013                 
2014                   <ul>
2015                     
2016                       <li>
2017                         <a href="/documentation/pico-sdk/hardware.html#rpip3926938a4b94e0a060f0">Functions</a>
2018                       </li>
2019                     
2020                       <li>
2021                         <a href="/documentation/pico-sdk/hardware.html#rpipf51cc1db3990ae8e6192">Detailed Description</a>
2022                       </li>
2023                     
2024                       <li>
2025                         <a href="/documentation/pico-sdk/hardware.html#rpip2bab066fe2ddd52f73df">Function Documentation</a>
2026                       </li>
2027                     
2028                   </ul>
2029                 
2030               </li>
2031             
2032               <li>
2033                 <a href="/documentation/pico-sdk/hardware.html#hardware_claim">hardware_claim</a>
2034                 
2035                   <ul>
2036                     
2037                       <li>
2038                         <a href="/documentation/pico-sdk/hardware.html#rpipdfa7d254a5da841f0df2">Functions</a>
2039                       </li>
2040                     
2041                       <li>
2042                         <a href="/documentation/pico-sdk/hardware.html#rpipa788812432c842a919d0">Detailed Description</a>
2043                       </li>
2044                     
2045                       <li>
2046                         <a href="/documentation/pico-sdk/hardware.html#rpipe9940b67cdc9d015deee">Function Documentation</a>
2047                       </li>
2048                     
2049                   </ul>
2050                 
2051               </li>
2052             
2053               <li>
2054                 <a href="/documentation/pico-sdk/hardware.html#hardware_clocks">hardware_clocks</a>
2055                 
2056                   <ul>
2057                     
2058                       <li>
2059                         <a href="/documentation/pico-sdk/hardware.html#rpip89c91da66ffde1cc30ac">Typedefs</a>
2060                       </li>
2061                     
2062                       <li>
2063                         <a href="/documentation/pico-sdk/hardware.html#rpip170d92c7209e76514d2b">Enumerations</a>
2064                       </li>
2065                     
2066                       <li>
2067                         <a href="/documentation/pico-sdk/hardware.html#rpipa56ad66478ae79ffb588">Functions</a>
2068                       </li>
2069                     
2070                       <li>
2071                         <a href="/documentation/pico-sdk/hardware.html#rpipe93dd39da7bd5b73a2e7">Detailed Description</a>
2072                       </li>
2073                     
2074                       <li>
2075                         <a href="/documentation/pico-sdk/hardware.html#clock_example">Example</a>
2076                       </li>
2077                     
2078                       <li>
2079                         <a href="/documentation/pico-sdk/hardware.html#rpip058d1a37d53125f96927">Typedef Documentation</a>
2080                       </li>
2081                     
2082                       <li>
2083                         <a href="/documentation/pico-sdk/hardware.html#rpipd0eaba69a740cd911694">Enumeration Type Documentation</a>
2084                       </li>
2085                     
2086                       <li>
2087                         <a href="/documentation/pico-sdk/hardware.html#rpip6e4e7e64e61a4b43601f">Function Documentation</a>
2088                       </li>
2089                     
2090                   </ul>
2091                 
2092               </li>
2093             
2094               <li>
2095                 <a href="/documentation/pico-sdk/hardware.html#hardware_divider">hardware_divider</a>
2096                 
2097                   <ul>
2098                     
2099                       <li>
2100                         <a href="/documentation/pico-sdk/hardware.html#rpip7b4dfc6580b2c53a2f61">Functions</a>
2101                       </li>
2102                     
2103                       <li>
2104                         <a href="/documentation/pico-sdk/hardware.html#rpip115225b5493e8a07fe97">Detailed Description</a>
2105                       </li>
2106                     
2107                       <li>
2108                         <a href="/documentation/pico-sdk/hardware.html#divider_example">Example</a>
2109                       </li>
2110                     
2111                       <li>
2112                         <a href="/documentation/pico-sdk/hardware.html#rpip1078d95ce91b99434197">Function Documentation</a>
2113                       </li>
2114                     
2115                   </ul>
2116                 
2117               </li>
2118             
2119               <li>
2120                 <a href="/documentation/pico-sdk/hardware.html#hardware_dma">hardware_dma</a>
2121                 
2122                   <ul>
2123                     
2124                       <li>
2125                         <a href="/documentation/pico-sdk/hardware.html#rpip5fc5374acc78a0097d96">Modules</a>
2126                       </li>
2127                     
2128                       <li>
2129                         <a href="/documentation/pico-sdk/hardware.html#rpip6d5488060fa28b69a5de">Enumerations</a>
2130                       </li>
2131                     
2132                       <li>
2133                         <a href="/documentation/pico-sdk/hardware.html#rpipa0fe778975f52970ba61">Functions</a>
2134                       </li>
2135                     
2136                       <li>
2137                         <a href="/documentation/pico-sdk/hardware.html#rpip7aba53e0335ad830a5b3">Detailed Description</a>
2138                       </li>
2139                     
2140                       <li>
2141                         <a href="/documentation/pico-sdk/hardware.html#rpipd4ba338c9c4b932eb68f">Enumeration Type Documentation</a>
2142                       </li>
2143                     
2144                       <li>
2145                         <a href="/documentation/pico-sdk/hardware.html#rpipe2cf7ead0796181b91e4">Function Documentation</a>
2146                       </li>
2147                     
2148                       <li>
2149                         <a href="/documentation/pico-sdk/hardware.html#channel_config">channel_config</a>
2150                       </li>
2151                     
2152                   </ul>
2153                 
2154               </li>
2155             
2156               <li>
2157                 <a href="/documentation/pico-sdk/hardware.html#hardware_exception">hardware_exception</a>
2158                 
2159                   <ul>
2160                     
2161                       <li>
2162                         <a href="/documentation/pico-sdk/hardware.html#rpip18a3627e557367243979">Typedefs</a>
2163                       </li>
2164                     
2165                       <li>
2166                         <a href="/documentation/pico-sdk/hardware.html#rpip2093d294cba2d1648b91">Enumerations</a>
2167                       </li>
2168                     
2169                       <li>
2170                         <a href="/documentation/pico-sdk/hardware.html#rpip440d48a43ef52888c7f8">Functions</a>
2171                       </li>
2172                     
2173                       <li>
2174                         <a href="/documentation/pico-sdk/hardware.html#rpipc1138e9ba5ae1417bab7">Detailed Description</a>
2175                       </li>
2176                     
2177                       <li>
2178                         <a href="/documentation/pico-sdk/hardware.html#rpipa203a413b041690f5b3a">Typedef Documentation</a>
2179                       </li>
2180                     
2181                       <li>
2182                         <a href="/documentation/pico-sdk/hardware.html#rpip4b1393aca63cad7ac071">Enumeration Type Documentation</a>
2183                       </li>
2184                     
2185                       <li>
2186                         <a href="/documentation/pico-sdk/hardware.html#rpip59bacb8331c7305bf23f">Function Documentation</a>
2187                       </li>
2188                     
2189                   </ul>
2190                 
2191               </li>
2192             
2193               <li>
2194                 <a href="/documentation/pico-sdk/hardware.html#hardware_flash">hardware_flash</a>
2195                 
2196                   <ul>
2197                     
2198                       <li>
2199                         <a href="/documentation/pico-sdk/hardware.html#rpip9bebeb9fda46d7931f29">Functions</a>
2200                       </li>
2201                     
2202                       <li>
2203                         <a href="/documentation/pico-sdk/hardware.html#rpip701484253c037df3b8c3">Detailed Description</a>
2204                       </li>
2205                     
2206                       <li>
2207                         <a href="/documentation/pico-sdk/hardware.html#flash_example">Example</a>
2208                       </li>
2209                     
2210                       <li>
2211                         <a href="/documentation/pico-sdk/hardware.html#rpip181aaf572db7d81ec48c">Function Documentation</a>
2212                       </li>
2213                     
2214                   </ul>
2215                 
2216               </li>
2217             
2218               <li>
2219                 <a href="/documentation/pico-sdk/hardware.html#hardware_gpio">hardware_gpio</a>
2220                 
2221                   <ul>
2222                     
2223                       <li>
2224                         <a href="/documentation/pico-sdk/hardware.html#rpipfad69ce2636c0406f313">Typedefs</a>
2225                       </li>
2226                     
2227                       <li>
2228                         <a href="/documentation/pico-sdk/hardware.html#rpip3dc9f91b4873d19dd61e">Enumerations</a>
2229                       </li>
2230                     
2231                       <li>
2232                         <a href="/documentation/pico-sdk/hardware.html#rpipde51588ce1f57a29806f">Functions</a>
2233                       </li>
2234                     
2235                       <li>
2236                         <a href="/documentation/pico-sdk/hardware.html#rpip2fb6e3f0d25f72b5b750">Detailed Description</a>
2237                       </li>
2238                     
2239                       <li>
2240                         <a href="/documentation/pico-sdk/hardware.html#rpipa09cc3430089dfa6d35f">Typedef Documentation</a>
2241                       </li>
2242                     
2243                       <li>
2244                         <a href="/documentation/pico-sdk/hardware.html#rpipc1a3203083c98a8386db">Enumeration Type Documentation</a>
2245                       </li>
2246                     
2247                       <li>
2248                         <a href="/documentation/pico-sdk/hardware.html#rpip20bab61362be18e88989">Function Documentation</a>
2249                       </li>
2250                     
2251                   </ul>
2252                 
2253               </li>
2254             
2255               <li>
2256                 <a href="/documentation/pico-sdk/hardware.html#hardware_i2c">hardware_i2c</a>
2257                 
2258                   <ul>
2259                     
2260                       <li>
2261                         <a href="/documentation/pico-sdk/hardware.html#rpipeb9b68cb7743d9da904d">Functions</a>
2262                       </li>
2263                     
2264                       <li>
2265                         <a href="/documentation/pico-sdk/hardware.html#rpip1c8da576903f52eac8f5">Detailed Description</a>
2266                       </li>
2267                     
2268                       <li>
2269                         <a href="/documentation/pico-sdk/hardware.html#i2c_example">Example</a>
2270                       </li>
2271                     
2272                       <li>
2273                         <a href="/documentation/pico-sdk/hardware.html#rpipe8156bbf78085b8efa90">Function Documentation</a>
2274                       </li>
2275                     
2276                       <li>
2277                         <a href="/documentation/pico-sdk/hardware.html#rpip762f57c89c87a7230e8a">Variable Documentation</a>
2278                       </li>
2279                     
2280                   </ul>
2281                 
2282               </li>
2283             
2284               <li>
2285                 <a href="/documentation/pico-sdk/hardware.html#hardware_interp">hardware_interp</a>
2286                 
2287                   <ul>
2288                     
2289                       <li>
2290                         <a href="/documentation/pico-sdk/hardware.html#rpipc1cdb32b7c7ebdbf8c6d">Modules</a>
2291                       </li>
2292                     
2293                       <li>
2294                         <a href="/documentation/pico-sdk/hardware.html#rpip5af7eb7aca9e02ea40e0">Functions</a>
2295                       </li>
2296                     
2297                       <li>
2298                         <a href="/documentation/pico-sdk/hardware.html#rpipecac7251f20e18f482f0">Detailed Description</a>
2299                       </li>
2300                     
2301                       <li>
2302                         <a href="/documentation/pico-sdk/hardware.html#rpip7f589c9bda3f5c04eaf7">Function Documentation</a>
2303                       </li>
2304                     
2305                       <li>
2306                         <a href="/documentation/pico-sdk/hardware.html#interp_config">interp_config</a>
2307                       </li>
2308                     
2309                   </ul>
2310                 
2311               </li>
2312             
2313               <li>
2314                 <a href="/documentation/pico-sdk/hardware.html#hardware_irq">hardware_irq</a>
2315                 
2316                   <ul>
2317                     
2318                       <li>
2319                         <a href="/documentation/pico-sdk/hardware.html#rpip7d7ce744d18b50aa39e0">Typedefs</a>
2320                       </li>
2321                     
2322                       <li>
2323                         <a href="/documentation/pico-sdk/hardware.html#rpipabf9dab89d154231fc7c">Functions</a>
2324                       </li>
2325                     
2326                       <li>
2327                         <a href="/documentation/pico-sdk/hardware.html#rpip8e9db58b4e37e3c6e6f7">Detailed Description</a>
2328                       </li>
2329                     
2330                       <li>
2331                         <a href="/documentation/pico-sdk/hardware.html#interrupt_nums">Interrupt Numbers</a>
2332                       </li>
2333                     
2334                       <li>
2335                         <a href="/documentation/pico-sdk/hardware.html#rpip3156275fc0925d498be5">Typedef Documentation</a>
2336                       </li>
2337                     
2338                       <li>
2339                         <a href="/documentation/pico-sdk/hardware.html#rpip809a516c3fb120805834">Function Documentation</a>
2340                       </li>
2341                     
2342                   </ul>
2343                 
2344               </li>
2345             
2346               <li>
2347                 <a href="/documentation/pico-sdk/hardware.html#hardware_pio">hardware_pio</a>
2348                 
2349                   <ul>
2350                     
2351                       <li>
2352                         <a href="/documentation/pico-sdk/hardware.html#rpip6649e09e7b4258dca43b">Modules</a>
2353                       </li>
2354                     
2355                       <li>
2356                         <a href="/documentation/pico-sdk/hardware.html#rpipef554ed6ff6e2801159c">Macros</a>
2357                       </li>
2358                     
2359                       <li>
2360                         <a href="/documentation/pico-sdk/hardware.html#rpip09d45f9779a66eef27b9">Enumerations</a>
2361                       </li>
2362                     
2363                       <li>
2364                         <a href="/documentation/pico-sdk/hardware.html#rpipe4f94cdaa1864d487415">Functions</a>
2365                       </li>
2366                     
2367                       <li>
2368                         <a href="/documentation/pico-sdk/hardware.html#rpip08092671c649e5a7ed33">Detailed Description</a>
2369                       </li>
2370                     
2371                       <li>
2372                         <a href="/documentation/pico-sdk/hardware.html#rpip2c90e53db9e0b0eadaf0">Macro Definition Documentation</a>
2373                       </li>
2374                     
2375                       <li>
2376                         <a href="/documentation/pico-sdk/hardware.html#rpip993ff9b164db3c600f6c">Function Documentation</a>
2377                       </li>
2378                     
2379                       <li>
2380                         <a href="/documentation/pico-sdk/hardware.html#sm_config">sm_config</a>
2381                       </li>
2382                     
2383                       <li>
2384                         <a href="/documentation/pico-sdk/hardware.html#pio_instructions">pio_instructions</a>
2385                       </li>
2386                     
2387                   </ul>
2388                 
2389               </li>
2390             
2391               <li>
2392                 <a href="/documentation/pico-sdk/hardware.html#hardware_pll">hardware_pll</a>
2393                 
2394                   <ul>
2395                     
2396                       <li>
2397                         <a href="/documentation/pico-sdk/hardware.html#rpip04a79fbadb11764c1347">Functions</a>
2398                       </li>
2399                     
2400                       <li>
2401                         <a href="/documentation/pico-sdk/hardware.html#rpip60321a9e3dea4db61ac5">Detailed Description</a>
2402                       </li>
2403                     
2404                       <li>
2405                         <a href="/documentation/pico-sdk/hardware.html#rpip3b39ffd09f4368ca9083">Function Documentation</a>
2406                       </li>
2407                     
2408                   </ul>
2409                 
2410               </li>
2411             
2412               <li>
2413                 <a href="/documentation/pico-sdk/hardware.html#hardware_pwm">hardware_pwm</a>
2414                 
2415                   <ul>
2416                     
2417                       <li>
2418                         <a href="/documentation/pico-sdk/hardware.html#rpipb46b1035246cbafd4775">Enumerations</a>
2419                       </li>
2420                     
2421                       <li>
2422                         <a href="/documentation/pico-sdk/hardware.html#rpip539e288314d1cb6222a6">Functions</a>
2423                       </li>
2424                     
2425                       <li>
2426                         <a href="/documentation/pico-sdk/hardware.html#rpipa8b59f289fb1cca8b30f">Detailed Description</a>
2427                       </li>
2428                     
2429                       <li>
2430                         <a href="/documentation/pico-sdk/hardware.html#pwm_example">Example</a>
2431                       </li>
2432                     
2433                       <li>
2434                         <a href="/documentation/pico-sdk/hardware.html#rpip00ae929b6ad09e4f9f31">Enumeration Type Documentation</a>
2435                       </li>
2436                     
2437                       <li>
2438                         <a href="/documentation/pico-sdk/hardware.html#rpip596da54088102c730a85">Function Documentation</a>
2439                       </li>
2440                     
2441                   </ul>
2442                 
2443               </li>
2444             
2445               <li>
2446                 <a href="/documentation/pico-sdk/hardware.html#hardware_resets">hardware_resets</a>
2447                 
2448                   <ul>
2449                     
2450                       <li>
2451                         <a href="/documentation/pico-sdk/hardware.html#rpip01db3f21293c4654deff">Functions</a>
2452                       </li>
2453                     
2454                       <li>
2455                         <a href="/documentation/pico-sdk/hardware.html#rpip670536031ba50ccc6589">Detailed Description</a>
2456                       </li>
2457                     
2458                       <li>
2459                         <a href="/documentation/pico-sdk/hardware.html#reset_example">Example</a>
2460                       </li>
2461                     
2462                       <li>
2463                         <a href="/documentation/pico-sdk/hardware.html#rpip696191bc283a6c8da6aa">Function Documentation</a>
2464                       </li>
2465                     
2466                   </ul>
2467                 
2468               </li>
2469             
2470               <li>
2471                 <a href="/documentation/pico-sdk/hardware.html#hardware_rtc">hardware_rtc</a>
2472                 
2473                   <ul>
2474                     
2475                       <li>
2476                         <a href="/documentation/pico-sdk/hardware.html#rpip517ae21bc4c79589cb63">Typedefs</a>
2477                       </li>
2478                     
2479                       <li>
2480                         <a href="/documentation/pico-sdk/hardware.html#rpipfc133cc664b9e7da82a0">Functions</a>
2481                       </li>
2482                     
2483                       <li>
2484                         <a href="/documentation/pico-sdk/hardware.html#rpipfac24067380ecd0bc739">Detailed Description</a>
2485                       </li>
2486                     
2487                       <li>
2488                         <a href="/documentation/pico-sdk/hardware.html#rtc_example">Example</a>
2489                       </li>
2490                     
2491                       <li>
2492                         <a href="/documentation/pico-sdk/hardware.html#rpipf2ca5910c33c1f910921">Typedef Documentation</a>
2493                       </li>
2494                     
2495                       <li>
2496                         <a href="/documentation/pico-sdk/hardware.html#rpip1e2ec04f610bc6e2792d">Function Documentation</a>
2497                       </li>
2498                     
2499                   </ul>
2500                 
2501               </li>
2502             
2503               <li>
2504                 <a href="/documentation/pico-sdk/hardware.html#hardware_spi">hardware_spi</a>
2505                 
2506                   <ul>
2507                     
2508                       <li>
2509                         <a href="/documentation/pico-sdk/hardware.html#rpip3f5aca6fc7b2f7e386a6">Macros</a>
2510                       </li>
2511                     
2512                       <li>
2513                         <a href="/documentation/pico-sdk/hardware.html#rpip9ec490b208c8a7d66ea5">Enumerations</a>
2514                       </li>
2515                     
2516                       <li>
2517                         <a href="/documentation/pico-sdk/hardware.html#rpip0e32134afff49352abbf">Functions</a>
2518                       </li>
2519                     
2520                       <li>
2521                         <a href="/documentation/pico-sdk/hardware.html#rpip53fbef906bbbb4c86c1b">Detailed Description</a>
2522                       </li>
2523                     
2524                       <li>
2525                         <a href="/documentation/pico-sdk/hardware.html#rpipfdd2ef7004f65b7695c8">Macro Definition Documentation</a>
2526                       </li>
2527                     
2528                       <li>
2529                         <a href="/documentation/pico-sdk/hardware.html#rpip8eaa5c705b10721fc604">Function Documentation</a>
2530                       </li>
2531                     
2532                   </ul>
2533                 
2534               </li>
2535             
2536               <li>
2537                 <a href="/documentation/pico-sdk/hardware.html#hardware_sync">hardware_sync</a>
2538                 
2539                   <ul>
2540                     
2541                       <li>
2542                         <a href="/documentation/pico-sdk/hardware.html#rpipaf2c26a82e2081c77391">Typedefs</a>
2543                       </li>
2544                     
2545                       <li>
2546                         <a href="/documentation/pico-sdk/hardware.html#rpip75ebd45136c83ea77417">Functions</a>
2547                       </li>
2548                     
2549                       <li>
2550                         <a href="/documentation/pico-sdk/hardware.html#rpipffceb67fd927abf19a64">Detailed Description</a>
2551                       </li>
2552                     
2553                       <li>
2554                         <a href="/documentation/pico-sdk/hardware.html#autotoc_md1">Spin Locks</a>
2555                       </li>
2556                     
2557                       <li>
2558                         <a href="/documentation/pico-sdk/hardware.html#rpipa9c3278cd7f23be6930f">Function Documentation</a>
2559                       </li>
2560                     
2561                   </ul>
2562                 
2563               </li>
2564             
2565               <li>
2566                 <a href="/documentation/pico-sdk/hardware.html#hardware_timer">hardware_timer</a>
2567                 
2568                   <ul>
2569                     
2570                       <li>
2571                         <a href="/documentation/pico-sdk/hardware.html#rpip54d900e51ca5d5f92dc1">Typedefs</a>
2572                       </li>
2573                     
2574                       <li>
2575                         <a href="/documentation/pico-sdk/hardware.html#rpipb47e300854299e8a2d40">Functions</a>
2576                       </li>
2577                     
2578                       <li>
2579                         <a href="/documentation/pico-sdk/hardware.html#rpip7ce2cdc1662dce59296b">Detailed Description</a>
2580                       </li>
2581                     
2582                       <li>
2583                         <a href="/documentation/pico-sdk/hardware.html#timer_example">Example</a>
2584                       </li>
2585                     
2586                       <li>
2587                         <a href="/documentation/pico-sdk/hardware.html#rpip8149d3296f588e1af4fb">Typedef Documentation</a>
2588                       </li>
2589                     
2590                       <li>
2591                         <a href="/documentation/pico-sdk/hardware.html#rpipdea6c4945bdc6f6374d4">Function Documentation</a>
2592                       </li>
2593                     
2594                   </ul>
2595                 
2596               </li>
2597             
2598               <li>
2599                 <a href="/documentation/pico-sdk/hardware.html#hardware_uart">hardware_uart</a>
2600                 
2601                   <ul>
2602                     
2603                       <li>
2604                         <a href="/documentation/pico-sdk/hardware.html#rpipa1024710aeeb196b78bd">Enumerations</a>
2605                       </li>
2606                     
2607                       <li>
2608                         <a href="/documentation/pico-sdk/hardware.html#rpipf53ff9493512b6885dbc">Functions</a>
2609                       </li>
2610                     
2611                       <li>
2612                         <a href="/documentation/pico-sdk/hardware.html#rpip4d3a4f9268d2ebb2f18f">Detailed Description</a>
2613                       </li>
2614                     
2615                       <li>
2616                         <a href="/documentation/pico-sdk/hardware.html#uart_example">Example</a>
2617                       </li>
2618                     
2619                       <li>
2620                         <a href="/documentation/pico-sdk/hardware.html#rpipe5889bce3760d2f2abc3">Macro Definition Documentation</a>
2621                       </li>
2622                     
2623                       <li>
2624                         <a href="/documentation/pico-sdk/hardware.html#rpip8a3222d9bd4f1a88f966">Function Documentation</a>
2625                       </li>
2626                     
2627                   </ul>
2628                 
2629               </li>
2630             
2631               <li>
2632                 <a href="/documentation/pico-sdk/hardware.html#hardware_vreg">hardware_vreg</a>
2633                 
2634                   <ul>
2635                     
2636                       <li>
2637                         <a href="/documentation/pico-sdk/hardware.html#rpip2e95f90d0e541df0fbd5">Functions</a>
2638                       </li>
2639                     
2640                       <li>
2641                         <a href="/documentation/pico-sdk/hardware.html#rpipff9b545b8ac19c31cf84">Detailed Description</a>
2642                       </li>
2643                     
2644                       <li>
2645                         <a href="/documentation/pico-sdk/hardware.html#rpip374b3f7b14694be44510">Function Documentation</a>
2646                       </li>
2647                     
2648                   </ul>
2649                 
2650               </li>
2651             
2652               <li>
2653                 <a href="/documentation/pico-sdk/hardware.html#hardware_watchdog">hardware_watchdog</a>
2654                 
2655                   <ul>
2656                     
2657                       <li>
2658                         <a href="/documentation/pico-sdk/hardware.html#rpip3e4251ba95a5958301b7">Functions</a>
2659                       </li>
2660                     
2661                       <li>
2662                         <a href="/documentation/pico-sdk/hardware.html#rpip0cf7dd571b6eaaeaf8c1">Detailed Description</a>
2663                       </li>
2664                     
2665                       <li>
2666                         <a href="/documentation/pico-sdk/hardware.html#watchdog_example">Example</a>
2667                       </li>
2668                     
2669                       <li>
2670                         <a href="/documentation/pico-sdk/hardware.html#rpipa364c96388e31cb15832">Function Documentation</a>
2671                       </li>
2672                     
2673                   </ul>
2674                 
2675               </li>
2676             
2677               <li>
2678                 <a href="/documentation/pico-sdk/hardware.html#hardware_xosc">hardware_xosc</a>
2679                 
2680                   <ul>
2681                     
2682                       <li>
2683                         <a href="/documentation/pico-sdk/hardware.html#rpipb7b0130814aa84716e89">Functions</a>
2684                       </li>
2685                     
2686                       <li>
2687                         <a href="/documentation/pico-sdk/hardware.html#rpip6d0698b303647774cdff">Detailed Description</a>
2688                       </li>
2689                     
2690                       <li>
2691                         <a href="/documentation/pico-sdk/hardware.html#rpip8c9cf630da61511f7468">Function Documentation</a>
2692                       </li>
2693                     
2694                   </ul>
2695                 
2696               </li>
2697             
2698           </ul>
2699         </div>
2700         
2701       
2702     
2703       <h3 class="contentshead" onclick="expandAndCollapse(this)">High Level APIs</h3>
2704       
2705         
2706         <div class="itemcontents">
2707           <ul class="sectlevel1">
2708             
2709               <li>
2710                 <a href="/documentation/pico-sdk/high_level.html#pico_async_context">pico_async_context</a>
2711                 
2712                   <ul>
2713                     
2714                       <li>
2715                         <a href="/documentation/pico-sdk/high_level.html#rpip334b1daca4d436cd2653">Modules</a>
2716                       </li>
2717                     
2718                       <li>
2719                         <a href="/documentation/pico-sdk/high_level.html#rpip34a43d49030e182275e8">Data Structures</a>
2720                       </li>
2721                     
2722                       <li>
2723                         <a href="/documentation/pico-sdk/high_level.html#rpip73422519f861a01369c4">Typedefs</a>
2724                       </li>
2725                     
2726                       <li>
2727                         <a href="/documentation/pico-sdk/high_level.html#rpipc33092ce8251b4b8dbf1">Functions</a>
2728                       </li>
2729                     
2730                       <li>
2731                         <a href="/documentation/pico-sdk/high_level.html#rpip79be1e27fbc098900953">Detailed Description</a>
2732                       </li>
2733                     
2734                       <li>
2735                         <a href="/documentation/pico-sdk/high_level.html#rpipe4818f2317923f615384">Typedef Documentation</a>
2736                       </li>
2737                     
2738                       <li>
2739                         <a href="/documentation/pico-sdk/high_level.html#rpip8be6ff2503083d1e44cb">Function Documentation</a>
2740                       </li>
2741                     
2742                       <li>
2743                         <a href="/documentation/pico-sdk/high_level.html#async_context_freertos">async_context_freertos</a>
2744                       </li>
2745                     
2746                       <li>
2747                         <a href="/documentation/pico-sdk/high_level.html#async_context_poll">async_context_poll</a>
2748                       </li>
2749                     
2750                       <li>
2751                         <a href="/documentation/pico-sdk/high_level.html#async_context_threadsafe_background">async_context_threadsafe_background</a>
2752                       </li>
2753                     
2754                   </ul>
2755                 
2756               </li>
2757             
2758               <li>
2759                 <a href="/documentation/pico-sdk/high_level.html#pico_flash">pico_flash</a>
2760                 
2761                   <ul>
2762                     
2763                       <li>
2764                         <a href="/documentation/pico-sdk/high_level.html#rpipcb13fd2e8f843c73e3be">Functions</a>
2765                       </li>
2766                     
2767                       <li>
2768                         <a href="/documentation/pico-sdk/high_level.html#rpip757f4a42c3de3c0b5283">Detailed Description</a>
2769                       </li>
2770                     
2771                       <li>
2772                         <a href="/documentation/pico-sdk/high_level.html#rpip984b61938ec2fe82b216">Function Documentation</a>
2773                       </li>
2774                     
2775                   </ul>
2776                 
2777               </li>
2778             
2779               <li>
2780                 <a href="/documentation/pico-sdk/high_level.html#pico_i2c_slave">pico_i2c_slave</a>
2781                 
2782                   <ul>
2783                     
2784                       <li>
2785                         <a href="/documentation/pico-sdk/high_level.html#rpipff46d0780fe042bf707c">Typedefs</a>
2786                       </li>
2787                     
2788                       <li>
2789                         <a href="/documentation/pico-sdk/high_level.html#rpip44c693c1c2d88aff02f4">Enumerations</a>
2790                       </li>
2791                     
2792                       <li>
2793                         <a href="/documentation/pico-sdk/high_level.html#rpip7d4e1982831b9d4bc1be">Functions</a>
2794                       </li>
2795                     
2796                       <li>
2797                         <a href="/documentation/pico-sdk/high_level.html#rpip9e01d206b833ed2d2422">Detailed Description</a>
2798                       </li>
2799                     
2800                       <li>
2801                         <a href="/documentation/pico-sdk/high_level.html#rpip64a0102e835d7a4aae09">Typedef Documentation</a>
2802                       </li>
2803                     
2804                       <li>
2805                         <a href="/documentation/pico-sdk/high_level.html#rpipafb978c9dd3ec6082f80">Enumeration Type Documentation</a>
2806                       </li>
2807                     
2808                       <li>
2809                         <a href="/documentation/pico-sdk/high_level.html#rpipbf5b82a0dc8d3d4bb2bf">Function Documentation</a>
2810                       </li>
2811                     
2812                   </ul>
2813                 
2814               </li>
2815             
2816               <li>
2817                 <a href="/documentation/pico-sdk/high_level.html#pico_multicore">pico_multicore</a>
2818                 
2819                   <ul>
2820                     
2821                       <li>
2822                         <a href="/documentation/pico-sdk/high_level.html#rpip7baf405557a57f41b9de">Modules</a>
2823                       </li>
2824                     
2825                       <li>
2826                         <a href="/documentation/pico-sdk/high_level.html#rpipf840d967c7b8d6fef316">Functions</a>
2827                       </li>
2828                     
2829                       <li>
2830                         <a href="/documentation/pico-sdk/high_level.html#rpipc30c9f02735cb3003f42">Detailed Description</a>
2831                       </li>
2832                     
2833                       <li>
2834                         <a href="/documentation/pico-sdk/high_level.html#multicore_example">Example</a>
2835                       </li>
2836                     
2837                       <li>
2838                         <a href="/documentation/pico-sdk/high_level.html#rpipe803fe9ffd182f2af357">Function Documentation</a>
2839                       </li>
2840                     
2841                       <li>
2842                         <a href="/documentation/pico-sdk/high_level.html#multicore_fifo">fifo</a>
2843                       </li>
2844                     
2845                       <li>
2846                         <a href="/documentation/pico-sdk/high_level.html#multicore_lockout">lockout</a>
2847                       </li>
2848                     
2849                   </ul>
2850                 
2851               </li>
2852             
2853               <li>
2854                 <a href="/documentation/pico-sdk/high_level.html#pico_rand">pico_rand</a>
2855                 
2856                   <ul>
2857                     
2858                       <li>
2859                         <a href="/documentation/pico-sdk/high_level.html#rpip2ac37766eddd02aaed07">Functions</a>
2860                       </li>
2861                     
2862                       <li>
2863                         <a href="/documentation/pico-sdk/high_level.html#rpipd9cd1e107a6238a969b8">Detailed Description</a>
2864                       </li>
2865                     
2866                       <li>
2867                         <a href="/documentation/pico-sdk/high_level.html#rpipaca07ee034d314acc4bf">Function Documentation</a>
2868                       </li>
2869                     
2870                   </ul>
2871                 
2872               </li>
2873             
2874               <li>
2875                 <a href="/documentation/pico-sdk/high_level.html#pico_stdlib">pico_stdlib</a>
2876                 
2877                   <ul>
2878                     
2879                       <li>
2880                         <a href="/documentation/pico-sdk/high_level.html#rpip04d09fa6ec88d8737403">Functions</a>
2881                       </li>
2882                     
2883                       <li>
2884                         <a href="/documentation/pico-sdk/high_level.html#rpip67e7d087a6d9d4177c9c">Detailed Description</a>
2885                       </li>
2886                     
2887                       <li>
2888                         <a href="/documentation/pico-sdk/high_level.html#rpip9d8a4958ff265de7762d">Function Documentation</a>
2889                       </li>
2890                     
2891                   </ul>
2892                 
2893               </li>
2894             
2895               <li>
2896                 <a href="/documentation/pico-sdk/high_level.html#pico_sync">pico_sync</a>
2897                 
2898                   <ul>
2899                     
2900                       <li>
2901                         <a href="/documentation/pico-sdk/high_level.html#rpip42988faa0a4de968a0fe">Modules</a>
2902                       </li>
2903                     
2904                       <li>
2905                         <a href="/documentation/pico-sdk/high_level.html#rpip0a443d120465214bff04">Detailed Description</a>
2906                       </li>
2907                     
2908                       <li>
2909                         <a href="/documentation/pico-sdk/high_level.html#critical_section">critical_section</a>
2910                       </li>
2911                     
2912                       <li>
2913                         <a href="/documentation/pico-sdk/high_level.html#lock_core">lock_core</a>
2914                       </li>
2915                     
2916                       <li>
2917                         <a href="/documentation/pico-sdk/high_level.html#mutex">mutex</a>
2918                       </li>
2919                     
2920                       <li>
2921                         <a href="/documentation/pico-sdk/high_level.html#sem">sem</a>
2922                       </li>
2923                     
2924                   </ul>
2925                 
2926               </li>
2927             
2928               <li>
2929                 <a href="/documentation/pico-sdk/high_level.html#pico_time">pico_time</a>
2930                 
2931                   <ul>
2932                     
2933                       <li>
2934                         <a href="/documentation/pico-sdk/high_level.html#rpip75fc0e1fb693907ffae4">Modules</a>
2935                       </li>
2936                     
2937                       <li>
2938                         <a href="/documentation/pico-sdk/high_level.html#rpip587c32f8059c662009b6">Detailed Description</a>
2939                       </li>
2940                     
2941                       <li>
2942                         <a href="/documentation/pico-sdk/high_level.html#timestamp">timestamp</a>
2943                       </li>
2944                     
2945                       <li>
2946                         <a href="/documentation/pico-sdk/high_level.html#sleep">sleep</a>
2947                       </li>
2948                     
2949                       <li>
2950                         <a href="/documentation/pico-sdk/high_level.html#alarm">alarm</a>
2951                       </li>
2952                     
2953                       <li>
2954                         <a href="/documentation/pico-sdk/high_level.html#repeating_timer">repeating_timer</a>
2955                       </li>
2956                     
2957                   </ul>
2958                 
2959               </li>
2960             
2961               <li>
2962                 <a href="/documentation/pico-sdk/high_level.html#pico_unique_id">pico_unique_id</a>
2963                 
2964                   <ul>
2965                     
2966                       <li>
2967                         <a href="/documentation/pico-sdk/high_level.html#rpip7981e60e740d763c8048">Data Structures</a>
2968                       </li>
2969                     
2970                       <li>
2971                         <a href="/documentation/pico-sdk/high_level.html#rpip04f6f057a3030914c7d2">Functions</a>
2972                       </li>
2973                     
2974                       <li>
2975                         <a href="/documentation/pico-sdk/high_level.html#rpip2a7175316ee370f706a8">Detailed Description</a>
2976                       </li>
2977                     
2978                       <li>
2979                         <a href="/documentation/pico-sdk/high_level.html#rpipec641d378cce59faa918">Function Documentation</a>
2980                       </li>
2981                     
2982                   </ul>
2983                 
2984               </li>
2985             
2986               <li>
2987                 <a href="/documentation/pico-sdk/high_level.html#pico_util">pico_util</a>
2988                 
2989                   <ul>
2990                     
2991                       <li>
2992                         <a href="/documentation/pico-sdk/high_level.html#rpip158b48d2746d665569ba">Modules</a>
2993                       </li>
2994                     
2995                       <li>
2996                         <a href="/documentation/pico-sdk/high_level.html#rpip8dab79e9dfcc333468bf">Detailed Description</a>
2997                       </li>
2998                     
2999                       <li>
3000                         <a href="/documentation/pico-sdk/high_level.html#util_datetime">datetime</a>
3001                       </li>
3002                     
3003                       <li>
3004                         <a href="/documentation/pico-sdk/high_level.html#util_pheap">pheap</a>
3005                       </li>
3006                     
3007                       <li>
3008                         <a href="/documentation/pico-sdk/high_level.html#queue">queue</a>
3009                       </li>
3010                     
3011                   </ul>
3012                 
3013               </li>
3014             
3015           </ul>
3016         </div>
3017         
3018       
3019     
3020       <h3 class="contentshead" onclick="expandAndCollapse(this)">Third-party Libraries</h3>
3021       
3022         
3023         <div class="itemcontents">
3024           <ul class="sectlevel1">
3025             
3026               <li>
3027                 <a href="/documentation/pico-sdk/third_party.html#tinyusb_device">tinyusb_device</a>
3028                 
3029               </li>
3030             
3031               <li>
3032                 <a href="/documentation/pico-sdk/third_party.html#tinyusb_host">tinyusb_host</a>
3033                 
3034               </li>
3035             
3036           </ul>
3037         </div>
3038         
3039       
3040     
3041       <h3 class="contentshead" onclick="expandAndCollapse(this)">Networking Libraries</h3>
3042       
3043         
3044         <div class="itemcontents">
3045           <ul class="sectlevel1">
3046             
3047               <li>
3048                 <a href="/documentation/pico-sdk/networking.html#pico_btstack">pico_btstack</a>
3049                 
3050                   <ul>
3051                     
3052                       <li>
3053                         <a href="/documentation/pico-sdk/networking.html#rpipabe482207518b13daea8">Functions</a>
3054                       </li>
3055                     
3056                       <li>
3057                         <a href="/documentation/pico-sdk/networking.html#rpip28aa570f7304feb24dd8">Detailed Description</a>
3058                       </li>
3059                     
3060                       <li>
3061                         <a href="/documentation/pico-sdk/networking.html#rpip81e86eeedf11e3669c51">Function Documentation</a>
3062                       </li>
3063                     
3064                   </ul>
3065                 
3066               </li>
3067             
3068               <li>
3069                 <a href="/documentation/pico-sdk/networking.html#pico_lwip">pico_lwip</a>
3070                 
3071                   <ul>
3072                     
3073                       <li>
3074                         <a href="/documentation/pico-sdk/networking.html#rpip192837c4e57e2f47dbf6">Modules</a>
3075                       </li>
3076                     
3077                       <li>
3078                         <a href="/documentation/pico-sdk/networking.html#rpip98f8ef4b7c7e1e6ce281">Detailed Description</a>
3079                       </li>
3080                     
3081                       <li>
3082                         <a href="/documentation/pico-sdk/networking.html#pico_lwip_arch">pico_lwip_arch</a>
3083                       </li>
3084                     
3085                       <li>
3086                         <a href="/documentation/pico-sdk/networking.html#pico_lwip_freertos">pico_lwip_freertos</a>
3087                       </li>
3088                     
3089                       <li>
3090                         <a href="/documentation/pico-sdk/networking.html#pico_lwip_nosys">pico_lwip_nosys</a>
3091                       </li>
3092                     
3093                   </ul>
3094                 
3095               </li>
3096             
3097               <li>
3098                 <a href="/documentation/pico-sdk/networking.html#pico_cyw43_driver">pico_cyw43_driver</a>
3099                 
3100                   <ul>
3101                     
3102                       <li>
3103                         <a href="/documentation/pico-sdk/networking.html#rpip0627746aa35c1c42f44c">Modules</a>
3104                       </li>
3105                     
3106                       <li>
3107                         <a href="/documentation/pico-sdk/networking.html#rpipae8b34f7bf0aa371c600">Files</a>
3108                       </li>
3109                     
3110                       <li>
3111                         <a href="/documentation/pico-sdk/networking.html#rpipd512513ec719cf7ab197">Functions</a>
3112                       </li>
3113                     
3114                       <li>
3115                         <a href="/documentation/pico-sdk/networking.html#rpipebe2d33331cf989e1d29">Detailed Description</a>
3116                       </li>
3117                     
3118                       <li>
3119                         <a href="/documentation/pico-sdk/networking.html#rpip7ddeab266708e76683af">Function Documentation</a>
3120                       </li>
3121                     
3122                       <li>
3123                         <a href="/documentation/pico-sdk/networking.html#pico_btstack_cyw43">pico_btstack_cyw43</a>
3124                       </li>
3125                     
3126                   </ul>
3127                 
3128               </li>
3129             
3130               <li>
3131                 <a href="/documentation/pico-sdk/networking.html#pico_cyw43_arch">pico_cyw43_arch</a>
3132                 
3133                   <ul>
3134                     
3135                       <li>
3136                         <a href="/documentation/pico-sdk/networking.html#rpip55bbe3b3adaa09c91f12">Modules</a>
3137                       </li>
3138                     
3139                       <li>
3140                         <a href="/documentation/pico-sdk/networking.html#rpipbd659dd2af29c569d582">Macros</a>
3141                       </li>
3142                     
3143                       <li>
3144                         <a href="/documentation/pico-sdk/networking.html#rpip2dbacd10d4e207dae370">Functions</a>
3145                       </li>
3146                     
3147                       <li>
3148                         <a href="/documentation/pico-sdk/networking.html#rpip2786c74350b1e1c2247c">Detailed Description</a>
3149                       </li>
3150                     
3151                       <li>
3152                         <a href="/documentation/pico-sdk/networking.html#rpip7e5d89be1cf9268f36c9">Macro Definition Documentation</a>
3153                       </li>
3154                     
3155                       <li>
3156                         <a href="/documentation/pico-sdk/networking.html#rpip2890f60e0c83d227f2ec">Function Documentation</a>
3157                       </li>
3158                     
3159                       <li>
3160                         <a href="/documentation/pico-sdk/networking.html#cyw43_driver">cyw43_driver</a>
3161                       </li>
3162                     
3163                   </ul>
3164                 
3165               </li>
3166             
3167           </ul>
3168         </div>
3169         
3170       
3171     
3172       <h3 class="contentshead" onclick="expandAndCollapse(this)">Runtime Infrastructure</h3>
3173       
3174         
3175         <div class="itemcontents" id="toc"></div>
3176         <div class="itemcontents noJS">
3177           <ul class="sectlevel1">
3178             
3179               <li>
3180                 <a href="/documentation/pico-sdk/runtime.html#boot_stage2">boot_stage2</a>
3181                 
3182               </li>
3183             
3184               <li>
3185                 <a href="/documentation/pico-sdk/runtime.html#pico_base">pico_base</a>
3186                 
3187                   <ul>
3188                     
3189                       <li>
3190                         <a href="/documentation/pico-sdk/runtime.html#rpip45542cfabd24f25c2b10">Enumerations</a>
3191                       </li>
3192                     
3193                       <li>
3194                         <a href="/documentation/pico-sdk/runtime.html#rpipb665655c66e63f4a0c4a">Detailed Description</a>
3195                       </li>
3196                     
3197                   </ul>
3198                 
3199               </li>
3200             
3201               <li>
3202                 <a href="/documentation/pico-sdk/runtime.html#pico_binary_info">pico_binary_info</a>
3203                 
3204                   <ul>
3205                     
3206                       <li>
3207                         <a href="/documentation/pico-sdk/runtime.html#rpip7989f07e71fba07188be">Macros</a>
3208                       </li>
3209                     
3210                       <li>
3211                         <a href="/documentation/pico-sdk/runtime.html#rpipc27123c22ad347cefc87">Detailed Description</a>
3212                       </li>
3213                     
3214                       <li>
3215                         <a href="/documentation/pico-sdk/runtime.html#rpipa2ff445fb2a0a57f9dde">Macro Definition Documentation</a>
3216                       </li>
3217                     
3218                   </ul>
3219                 
3220               </li>
3221             
3222               <li>
3223                 <a href="/documentation/pico-sdk/runtime.html#pico_bit_ops">pico_bit_ops</a>
3224                 
3225                   <ul>
3226                     
3227                       <li>
3228                         <a href="/documentation/pico-sdk/runtime.html#rpipf1806233ab08edf2d1a4">Functions</a>
3229                       </li>
3230                     
3231                       <li>
3232                         <a href="/documentation/pico-sdk/runtime.html#rpip63c260c668f0f7e929e9">Detailed Description</a>
3233                       </li>
3234                     
3235                       <li>
3236                         <a href="/documentation/pico-sdk/runtime.html#rpip2b305c870314270af1e5">Function Documentation</a>
3237                       </li>
3238                     
3239                   </ul>
3240                 
3241               </li>
3242             
3243               <li>
3244                 <a href="/documentation/pico-sdk/runtime.html#pico_bootrom">pico_bootrom</a>
3245                 
3246                   <ul>
3247                     
3248                       <li>
3249                         <a href="/documentation/pico-sdk/runtime.html#rpipcf60d5fd56095181a98e">Macros</a>
3250                       </li>
3251                     
3252                       <li>
3253                         <a href="/documentation/pico-sdk/runtime.html#rpip05bb858150fa37b3e132">Functions</a>
3254                       </li>
3255                     
3256                       <li>
3257                         <a href="/documentation/pico-sdk/runtime.html#rpip005c32aa3418cd5dc77d">Detailed Description</a>
3258                       </li>
3259                     
3260                       <li>
3261                         <a href="/documentation/pico-sdk/runtime.html#rpipf9cc87ae1233fe613239">Macro Definition Documentation</a>
3262                       </li>
3263                     
3264                       <li>
3265                         <a href="/documentation/pico-sdk/runtime.html#rpipab643919091a482a2c7d">Function Documentation</a>
3266                       </li>
3267                     
3268                   </ul>
3269                 
3270               </li>
3271             
3272               <li>
3273                 <a href="/documentation/pico-sdk/runtime.html#pico_bootsel_via_double_reset">pico_bootsel_via_double_reset</a>
3274                 
3275               </li>
3276             
3277               <li>
3278                 <a href="/documentation/pico-sdk/runtime.html#pico_cxx_options">pico_cxx_options</a>
3279                 
3280               </li>
3281             
3282               <li>
3283                 <a href="/documentation/pico-sdk/runtime.html#pico_divider">pico_divider</a>
3284                 
3285                   <ul>
3286                     
3287                       <li>
3288                         <a href="/documentation/pico-sdk/runtime.html#rpipfb1beee11febefbf90cc">Files</a>
3289                       </li>
3290                     
3291                       <li>
3292                         <a href="/documentation/pico-sdk/runtime.html#rpipa79e631886e62fcd1cd0">Functions</a>
3293                       </li>
3294                     
3295                       <li>
3296                         <a href="/documentation/pico-sdk/runtime.html#rpip108233463d1122628ba9">Detailed Description</a>
3297                       </li>
3298                     
3299                       <li>
3300                         <a href="/documentation/pico-sdk/runtime.html#rpip0d33c4d7c6e0d08667ce">Function Documentation</a>
3301                       </li>
3302                     
3303                   </ul>
3304                 
3305               </li>
3306             
3307               <li>
3308                 <a href="/documentation/pico-sdk/runtime.html#pico_double">pico_double</a>
3309                 
3310               </li>
3311             
3312               <li>
3313                 <a href="/documentation/pico-sdk/runtime.html#pico_float">pico_float</a>
3314                 
3315               </li>
3316             
3317               <li>
3318                 <a href="/documentation/pico-sdk/runtime.html#pico_int64_ops">pico_int64_ops</a>
3319                 
3320               </li>
3321             
3322               <li>
3323                 <a href="/documentation/pico-sdk/runtime.html#pico_malloc">pico_malloc</a>
3324                 
3325               </li>
3326             
3327               <li>
3328                 <a href="/documentation/pico-sdk/runtime.html#pico_mem_ops">pico_mem_ops</a>
3329                 
3330               </li>
3331             
3332               <li>
3333                 <a href="/documentation/pico-sdk/runtime.html#pico_platform">pico_platform</a>
3334                 
3335                   <ul>
3336                     
3337                       <li>
3338                         <a href="/documentation/pico-sdk/runtime.html#rpipb6ca92b8ab23006742ba">Macros</a>
3339                       </li>
3340                     
3341                       <li>
3342                         <a href="/documentation/pico-sdk/runtime.html#rpip96324626dec724f7403d">Functions</a>
3343                       </li>
3344                     
3345                       <li>
3346                         <a href="/documentation/pico-sdk/runtime.html#rpip092e8191441c92cf5ccf">Detailed Description</a>
3347                       </li>
3348                     
3349                       <li>
3350                         <a href="/documentation/pico-sdk/runtime.html#rpip464a3792c78a5a9ffa73">Macro Definition Documentation</a>
3351                       </li>
3352                     
3353                       <li>
3354                         <a href="/documentation/pico-sdk/runtime.html#rpip14e9a416348dd6951167">Function Documentation</a>
3355                       </li>
3356                     
3357                   </ul>
3358                 
3359               </li>
3360             
3361               <li>
3362                 <a href="/documentation/pico-sdk/runtime.html#pico_printf">pico_printf</a>
3363                 
3364               </li>
3365             
3366               <li>
3367                 <a href="/documentation/pico-sdk/runtime.html#pico_runtime">pico_runtime</a>
3368                 
3369               </li>
3370             
3371               <li>
3372                 <a href="/documentation/pico-sdk/runtime.html#pico_stdio">pico_stdio</a>
3373                 
3374                   <ul>
3375                     
3376                       <li>
3377                         <a href="/documentation/pico-sdk/runtime.html#rpip66600d8c06f1ab929c23">Modules</a>
3378                       </li>
3379                     
3380                       <li>
3381                         <a href="/documentation/pico-sdk/runtime.html#rpipbfbe419ab3a18de01187">Functions</a>
3382                       </li>
3383                     
3384                       <li>
3385                         <a href="/documentation/pico-sdk/runtime.html#rpip3eccc7d7592c0528c9ae">Detailed Description</a>
3386                       </li>
3387                     
3388                       <li>
3389                         <a href="/documentation/pico-sdk/runtime.html#rpip2fc272e282686cb4da01">Function Documentation</a>
3390                       </li>
3391                     
3392                       <li>
3393                         <a href="/documentation/pico-sdk/runtime.html#pico_stdio_semihosting">pico_stdio_semihosting</a>
3394                       </li>
3395                     
3396                       <li>
3397                         <a href="/documentation/pico-sdk/runtime.html#pico_stdio_uart">pico_stdio_uart</a>
3398                       </li>
3399                     
3400                       <li>
3401                         <a href="/documentation/pico-sdk/runtime.html#pico_stdio_usb">pico_stdio_usb</a>
3402                       </li>
3403                     
3404                   </ul>
3405                 
3406               </li>
3407             
3408               <li>
3409                 <a href="/documentation/pico-sdk/runtime.html#pico_standard_link">pico_standard_link</a>
3410                 
3411               </li>
3412             
3413           </ul>
3414         </div>
3415         
3416       
3417     
3418       <h3 class="contentshead" onclick="expandAndCollapse(this)">External API Headers</h3>
3419       
3420         
3421         <div class="itemcontents">
3422           <ul class="sectlevel1">
3423             
3424               <li>
3425                 <a href="/documentation/pico-sdk/misc.html#boot_picoboot">boot_picoboot</a>
3426                 
3427               </li>
3428             
3429               <li>
3430                 <a href="/documentation/pico-sdk/misc.html#boot_uf2">boot_uf2</a>
3431                 
3432               </li>
3433             
3434           </ul>
3435         </div>
3436         
3437       
3438     
3439   
3440
3441
3442
3443 </nav>
3444
3445
3446       <section id="content">
3447         <h1>Runtime Infrastructure</h1>
3448         <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
3449 <html><body>
3450 <div id="preamble">
3451 <div class="sectionbody">
3452 <div class="paragraph">
3453 <p>Libraries that are used to provide efficient implementation of certain  language level and C library functions, as well as CMake INTERFACE libraries  abstracting the compilation and link steps in the SDK</p>
3454 </div>
3455 </div>
3456 </div>
3457 <div class="sect1">
3458 <h2 id="boot_stage2">
3459 <a class="anchor" href="#boot_stage2"></a>boot_stage2</h2>
3460 <div class="sectionbody"></div>
3461 <div class="ingroups" id="rpipab186bc66615fb0061a6">Part of: <a class="el" href="runtime.html" id="rpip4a4e981cd074381a5774">Runtime Infrastructure</a>
3462 </div>
3463 <p id="rpip5759fd0587f6f7ce1bbf">Second stage boot loaders responsible for setting up external flash.
3464 </p>
3465 <p id="rpip4cc226bf7e5923b35a6f">Second stage boot loaders responsible for setting up external flash. </p>
3466 </div>
3467 <div class="sect1">
3468 <h2 id="pico_base">
3469 <a class="anchor" href="#pico_base"></a>pico_base</h2>
3470 <div class="sectionbody"></div>
3471 <div class="ingroups" id="rpip0084cfd132eff8138b43">Part of: <a class="el" href="runtime.html" id="rpip0e375531e81baff83527">Runtime Infrastructure</a>
3472 </div>
3473 <div class="sect2">
3474 <h3 id="rpip45542cfabd24f25c2b10">
3475 <a class="anchor" href="#rpip45542cfabd24f25c2b10"></a>Enumerations</h3>
3476 <ul class="memberdecls" id="rpip1f6a26f44993ebebe3eb" data-parent-id="rpip0f30b794aa1dca0176c9">
3477 <li class="memitem">
3478 <p data-target="true" data-target-for="rpip1f6a26f44993ebebe3eb"><span class="memItemLeft" data-target="true" id="rpip5cdf538e3f1679dd3ea6" data-parent-id="rpip1f6a26f44993ebebe3eb" data-target-for="rpip5cdf538e3f1679dd3ea6"><a id="gaddcb20bc9a61ceff479aa87369a862aa" name="gaddcb20bc9a61ceff479aa87369a862aa"></a>enum Â </span><span class="memItemRight" data-target="true" id="rpipd47de12ab07968f66cd8" data-parent-id="rpip1f6a26f44993ebebe3eb" data-target-for="rpipd47de12ab07968f66cd8"><a class="el" href="#gaddcb20bc9a61ceff479aa87369a862aa" id="rpip0990b036c2de70dbcf00" data-adjusted="true">pico_error_codes</a> { <br id="rpip55067650e5486a34af4d">
3479   <b id="rpip9e821392e4fe7dc17fc4">PICO_OK</b> = 0
3480 , <b id="rpip034fa9595db38f6f2148">PICO_ERROR_NONE</b> = 0
3481 , <b id="rpipbc3784b6d4146261abe9">PICO_ERROR_TIMEOUT</b> = -1
3482 , <b id="rpip7ee5023c65daafe79cc1">PICO_ERROR_GENERIC</b> = -2
3483 , <br id="rpip51f4b0649acd029f69d5">
3484   <b id="rpip3ee965983bc67577bd55">PICO_ERROR_NO_DATA</b> = -3
3485 , <b id="rpip23067e34014392d26796">PICO_ERROR_NOT_PERMITTED</b> = -4
3486 , <b id="rpipabd5c69461817d34ac1d">PICO_ERROR_INVALID_ARG</b> = -5
3487 , <b id="rpipf55462b72314df8e0be7">PICO_ERROR_IO</b> = -6
3488 , <br id="rpipb923a1d67de0d326a55d">
3489   <b id="rpipa78957b9274dc14e2441">PICO_ERROR_BADAUTH</b> = -7
3490 , <b id="rpipbb258002255c4592d432">PICO_ERROR_CONNECT_FAILED</b> = -8
3491 , <b id="rpip714d226d0a66050328c9">PICO_ERROR_INSUFFICIENT_RESOURCES</b> = -9
3492 <br id="rpip0140fc59a2fb53ded145">
3493  }</span></p>
3494 </li>
3495 <li class="memdesc">
3496 <p data-target="true" data-target-for="rpipe3d3d66d0b877c35e986"><span class="mdescLeft" data-target="true" id="rpip95f1d817cad21f27e966" data-parent-id="rpipe3d3d66d0b877c35e986" data-target-for="rpip95f1d817cad21f27e966"> </span><span class="mdescRight" data-target="true" id="rpip4da46c52bd9b75fb0cfd" data-parent-id="rpipe3d3d66d0b877c35e986" data-target-for="rpip4da46c52bd9b75fb0cfd">Common return codes from pico_sdk methods that return a status. <br id="rpip2559e0ba1504fa5fa79a"></span></p>
3497 </li>
3498 </ul>
3499 <a name="details" id="details"></a>
3500 </div>
3501 <div class="sect2">
3502 <h3 id="rpipb665655c66e63f4a0c4a">
3503 <a class="anchor" href="#rpipb665655c66e63f4a0c4a"></a>Detailed Description</h3>
3504 <p id="rpip5b1d71437964e8906ede">Core types and macros for the Raspberry Pi Pico SDK. This header is intended to be included by all source code as it includes configuration headers and overrides in the correct order</p>
3505 <p id="rpip46ede61f690aa165110a">This header may be included by assembly code </p>
3506 </div>
3507 </div>
3508 <div class="sect1">
3509 <h2 id="pico_binary_info">
3510 <a class="anchor" href="#pico_binary_info"></a>pico_binary_info</h2>
3511 <div class="sectionbody"></div>
3512 <div class="ingroups" id="rpip97a516fee983edfe3333">Part of: <a class="el" href="runtime.html" id="rpipc8515375593737b08e3e">Runtime Infrastructure</a>
3513 </div>
3514 <div class="sect2">
3515 <h3 id="rpip7989f07e71fba07188be">
3516 <a class="anchor" href="#rpip7989f07e71fba07188be"></a>Macros</h3>
3517 <ul class="memberdecls" id="rpipfcd3e42ba656b5fd6e2e" data-parent-id="rpipccd0a691198892ff1099">
3518 <li class="memitem">
3519 <p data-target="true" data-target-for="rpipfcd3e42ba656b5fd6e2e"><span class="memItemLeft" data-target="true" id="rpip41dbc58caa8b6846eb14" data-parent-id="rpipfcd3e42ba656b5fd6e2e" data-target-for="rpip41dbc58caa8b6846eb14">#define </span><span class="memItemRight" data-target="true" id="rpipe585450ce68007b85dbf" data-parent-id="rpipfcd3e42ba656b5fd6e2e" data-target-for="rpipe585450ce68007b85dbf"><a class="el" href="#ga758f119659f2491c89e8e2955d647e9a" id="rpip31c8a2b036f2252d1110" data-adjusted="true">bi_decl</a>(_decl)   __bi_mark_enclosure _decl; __bi_decl(__bi_ptr_lineno_var_name, &amp;__bi_lineno_var_name.core, ".binary_info.keep.", __used);</span></p>
3520 </li>
3521 <li class="memitem">
3522 <p data-target="true" data-target-for="rpip4a9f61fe6f48772e97cf"><span class="memItemLeft" data-target="true" id="rpip2af81199ae4a1747a5db" data-parent-id="rpip4a9f61fe6f48772e97cf" data-target-for="rpip2af81199ae4a1747a5db">#define </span><span class="memItemRight" data-target="true" id="rpip2c2fcde5dd15e3c21807" data-parent-id="rpip4a9f61fe6f48772e97cf" data-target-for="rpip2c2fcde5dd15e3c21807"><a class="el" href="#ga448b6eaeefd68be7031086e7dfcaf96e" id="rpip4a74d1ea0948baa6aba7" data-adjusted="true">bi_decl_if_func_used</a>(_decl)   ({__bi_mark_enclosure _decl; __bi_decl(__bi_ptr_lineno_var_name, &amp;__bi_lineno_var_name.core, ".binary_info.", ); *(const volatile uint8_t *)&amp;__bi_ptr_lineno_var_name;});</span></p>
3523 </li>
3524 </ul>
3525 <a name="details" id="details"></a>
3526 </div>
3527 <div class="sect2">
3528 <h3 id="rpipc27123c22ad347cefc87">
3529 <a class="anchor" href="#rpipc27123c22ad347cefc87"></a>Detailed Description</h3>
3530 <p id="rpip77fcd10f2c8243ea2436">Binary info is intended for embedding machine readable information with the binary in FLASH.</p>
3531 <p id="rpipa322015a0c69e442f177">Example uses include:</p>
3532 <div class="ulist" id="rpip98fe99904eb72f75625f" data-parent-id="rpip95bbcd33948ac2042d78">
3533 <ul data-target="true" data-target-for="rpip98fe99904eb72f75625f">
3534 <li id="rpip03f5e063acf012cd03cd"><p>Program identification / information</p></li>
3535 <li id="rpip4b79ebe7517e6b567904"><p>Pin layouts</p></li>
3536 <li id="rpip1b329b3b26a2b840833b"><p>Included features</p></li>
3537 <li id="rpip05793f91246909848abf"><p>Identifying flash regions used as block devices/storage </p></li>
3538 </ul>
3539 </div>
3540 </div>
3541 <div class="sect2">
3542 <h3 id="rpipa2ff445fb2a0a57f9dde">
3543 <a class="anchor" href="#rpipa2ff445fb2a0a57f9dde"></a>Macro Definition Documentation</h3>
3544 <a id="ga758f119659f2491c89e8e2955d647e9a" name="ga758f119659f2491c89e8e2955d647e9a"></a>
3545 <div class="sect3">
3546 <h4 id="rpip11daa9448f3f38ea9570">
3547 <a class="anchor" href="#rpip11daa9448f3f38ea9570"></a>◆ bi_decl</h4>
3548 <div class="memitem" id="rpip12e9e2471c73895110ca">
3549 <div class="memproto" id="rpip1b57da04523665f9273c">
3550       <table class="memname" id="rpip59c73fe00d18d03084af">
3551         <tr id="rpip11c0501aeeb3e40045b9">
3552           <td class="memname" id="rpipebdd255b4f0fbadef27e">#define bi_decl</td>
3553           <td id="rpipff75247f961ea1fb325e">(</td>
3554           <td class="paramtype" id="rpip95c40e1a03d7f9f4d080"> </td>
3555           <td class="paramname" id="rpipad0edd08e1d8ec53587e">_decl</td>
3556 <td id="rpip46ccf59e2df3e67bffec">)</td>
3557           <td id="rpip33efde6e0f7240e077f9">   __bi_mark_enclosure _decl; __bi_decl(__bi_ptr_lineno_var_name, &amp;__bi_lineno_var_name.core, ".binary_info.keep.", __used);</td>
3558         </tr>
3559       </table>
3560 </div>
3561 <div class="memdoc" id="rpipf34144660757b60548bd">
3562 <p id="rpip9870722081eaca0f7a06">Declare some binary information that will be included if the contain source file/line is compiled into the binary </p>
3563
3564 </div>
3565 </div>
3566 <a id="ga448b6eaeefd68be7031086e7dfcaf96e" name="ga448b6eaeefd68be7031086e7dfcaf96e"></a>
3567 </div>
3568 <div class="sect3">
3569 <h4 id="rpip8a4a78094bf9f50ab205">
3570 <a class="anchor" href="#rpip8a4a78094bf9f50ab205"></a>◆ bi_decl_if_func_used</h4>
3571 <div class="memitem" id="rpip6b035a9191bfa0977e8d">
3572 <div class="memproto" id="rpipf7ea9d6919a31832e9f0">
3573       <table class="memname" id="rpip244b2e0b4bd241b2d446">
3574         <tr id="rpipf703681728805f22ec94">
3575           <td class="memname" id="rpip3d5f15a15fcf145db914">#define bi_decl_if_func_used</td>
3576           <td id="rpipdb4233139fd44fedc522">(</td>
3577           <td class="paramtype" id="rpipae7c62d625a74a98227c"> </td>
3578           <td class="paramname" id="rpip2f64d67a3f369199c8bf">_decl</td>
3579 <td id="rpip9a47ad8a5f586aa2b46c">)</td>
3580           <td id="rpip5c7768f97ad16db0ba16">   ({__bi_mark_enclosure _decl; __bi_decl(__bi_ptr_lineno_var_name, &amp;__bi_lineno_var_name.core, ".binary_info.", ); *(const volatile uint8_t *)&amp;__bi_ptr_lineno_var_name;});</td>
3581         </tr>
3582       </table>
3583 </div>
3584 <div class="memdoc" id="rpip99b3ce77ad11dcf4ceb0">
3585 <p id="rpipde7a916f4c9c77ccc390">Declare some binary information that will be included if the function containing the decl is linked into the binary. The SDK uses â€“gc-sections, so functions that are never called will be removed by the linker, and any associated binary information declared this way will also be stripped </p>
3586
3587 </div>
3588 </div>
3589 </div>
3590 </div>
3591 </div>
3592 <div class="sect1">
3593 <h2 id="pico_bit_ops">
3594 <a class="anchor" href="#pico_bit_ops"></a>pico_bit_ops</h2>
3595 <div class="sectionbody"></div>
3596 <div class="ingroups" id="rpip471a90c46fef0a02e9d2">Part of: <a class="el" href="runtime.html" id="rpip2c5b5d5f523534b8885c">Runtime Infrastructure</a>
3597 </div>
3598 <div class="sect2">
3599 <h3 id="rpipf1806233ab08edf2d1a4">
3600 <a class="anchor" href="#rpipf1806233ab08edf2d1a4"></a>Functions</h3>
3601 <ul class="memberdecls" id="rpip26e445dc5229bb325e39" data-parent-id="rpipe03a65e3ad93cdc374e9">
3602 <li class="memitem">
3603 <p data-target="true" data-target-for="rpip26e445dc5229bb325e39"><span class="memItemLeft" data-target="true" id="rpipbe22ce61d5477169973c" data-parent-id="rpip26e445dc5229bb325e39" data-target-for="rpipbe22ce61d5477169973c">uint32_t </span><span class="memItemRight" data-target="true" id="rpipd2174642b22caeddc981" data-parent-id="rpip26e445dc5229bb325e39" data-target-for="rpipd2174642b22caeddc981"><a class="el" href="#ga57349f36f6d8838074f3e6bc80e1fb51" id="rpipb386bf95b16e361846be" data-adjusted="true">__rev</a> (uint32_t bits)</span></p>
3604 </li>
3605 <li class="memdesc">
3606 <p data-target="true" data-target-for="rpip6eec4a9c0a9c9e651400"><span class="mdescLeft" data-target="true" id="rpipecb7fb434dab1f5616d7" data-parent-id="rpip6eec4a9c0a9c9e651400" data-target-for="rpipecb7fb434dab1f5616d7"> </span><span class="mdescRight" data-target="true" id="rpipdbc3071e3c5960f9b82b" data-parent-id="rpip6eec4a9c0a9c9e651400" data-target-for="rpipdbc3071e3c5960f9b82b">Reverse the bits in a 32 bit word.  <br id="rpipc564ec1f8d9cc00db23e"></span></p>
3607 </li>
3608 <li class="memitem">
3609 <p data-target="true" data-target-for="rpipeb4c2f2ed0a1563422eb"><span class="memItemLeft" data-target="true" id="rpip6e831ddc73fe6220abc4" data-parent-id="rpipeb4c2f2ed0a1563422eb" data-target-for="rpip6e831ddc73fe6220abc4">uint64_t </span><span class="memItemRight" data-target="true" id="rpip1a01410604020f68a2f3" data-parent-id="rpipeb4c2f2ed0a1563422eb" data-target-for="rpip1a01410604020f68a2f3"><a class="el" href="#gac1a8a9f33a121962e66afe23952efd82" id="rpipb9e4f58edb6b54714885" data-adjusted="true">__revll</a> (uint64_t bits)</span></p>
3610 </li>
3611 <li class="memdesc">
3612 <p data-target="true" data-target-for="rpip777c5e6a03413570a583"><span class="mdescLeft" data-target="true" id="rpip0ce570c504c2011ab68f" data-parent-id="rpip777c5e6a03413570a583" data-target-for="rpip0ce570c504c2011ab68f"> </span><span class="mdescRight" data-target="true" id="rpip6e580e276d956816cf40" data-parent-id="rpip777c5e6a03413570a583" data-target-for="rpip6e580e276d956816cf40">Reverse the bits in a 64 bit double word.  <br id="rpipf82be053dda3e1da9825"></span></p>
3613 </li>
3614 </ul>
3615 <a name="details" id="details"></a>
3616 </div>
3617 <div class="sect2">
3618 <h3 id="rpip63c260c668f0f7e929e9">
3619 <a class="anchor" href="#rpip63c260c668f0f7e929e9"></a>Detailed Description</h3>
3620 <p id="rpip289776a9f044788c440a">Optimized bit manipulation functions. Additionally provides replacement implementations of the compiler built-ins __builtin_popcount, __builtin_clz and __bulitin_ctz </p>
3621 </div>
3622 <div class="sect2">
3623 <h3 id="rpip2b305c870314270af1e5">
3624 <a class="anchor" href="#rpip2b305c870314270af1e5"></a>Function Documentation</h3>
3625 <a id="ga57349f36f6d8838074f3e6bc80e1fb51" name="ga57349f36f6d8838074f3e6bc80e1fb51"></a>
3626 <div class="sect3">
3627 <h4 id="rpipf65ff2c51beb05ee8b0f">
3628 <a class="anchor" href="#rpipf65ff2c51beb05ee8b0f"></a>◆ __rev()</h4>
3629 <div class="memitem" id="rpip0b96d8615c006e7ab35f">
3630 <div class="memproto" id="rpipbbb4e93edcdb4a7b842d">
3631       <table class="memname" id="rpip20af75794dc3941044e9">
3632         <tr id="rpip1a309e37c19461c00862">
3633           <td class="memname" id="rpip81bfa7b3c3c5a18b38a4">uint32_t __rev </td>
3634           <td id="rpipb4c18dc82a3ed61259f2">(</td>
3635           <td class="paramtype" id="rpip57a0ff916f48bcd2f62b">uint32_t </td>
3636           <td class="paramname" id="rpip0180061bb80d14b37d01"><em id="rpip02fefdba4b76b8e0c3a9">bits</em></td>
3637 <td id="rpipdb574b02fab645a93e45">)</td>
3638           <td id="rpip75f51739b39f5e7144b5"></td>
3639         </tr>
3640       </table>
3641 </div>
3642 <div class="memdoc" id="rpip46c0c2de47b9769334a1">
3643
3644 <p id="rpip7206e29a7ff6c726499c">Reverse the bits in a 32 bit word. </p>
3645 <h4 id="rpip87adec0c23738cb0f2b7" data-parent-id="rpipc606cd2befc749161036" data-target-for="rpip87adec0c23738cb0f2b7">Parameters</h4>
3646 <p class="paragraph" id="rpip48fcb7add31aa7cd4a77" data-parent-id="rpipc606cd2befc749161036" data-target-for="rpip48fcb7add31aa7cd4a77">
3647   </p>
3648 <table class="params" id="rpip53b9d348d44ba64f7982">
3649     <tr id="rpip3ef520b46b57246bf8cf">
3650 <td class="paramname" id="rpipa35f00dd60f9c0157eee">bits</td>
3651 <td id="rpip0c278c4f457b6b666499">32 bit input </td>
3652 </tr>
3653   </table>
3654   
3655
3656
3657 <h4 class="label" id="rpip01a307f28fe6af71a3ba" data-parent-id="rpipb5ffe6c5e106aa0bba49" data-target-for="rpip01a307f28fe6af71a3ba">Returns</h4>
3658 <p class="returns" id="rpip0bfb4c36342679b5d160" data-parent-id="rpipb5ffe6c5e106aa0bba49" data-target-for="rpip0bfb4c36342679b5d160">the 32 input bits reversed </p>
3659
3660 </div>
3661 </div>
3662 <a id="gac1a8a9f33a121962e66afe23952efd82" name="gac1a8a9f33a121962e66afe23952efd82"></a>
3663 </div>
3664 <div class="sect3">
3665 <h4 id="rpip6796a4d4d5a24eea949e">
3666 <a class="anchor" href="#rpip6796a4d4d5a24eea949e"></a>◆ __revll()</h4>
3667 <div class="memitem" id="rpipa206f3ca769589315568">
3668 <div class="memproto" id="rpip4c094eb077ec7f127848">
3669       <table class="memname" id="rpipebf58bc85e318597e016">
3670         <tr id="rpip643df40d1f2941ef4b37">
3671           <td class="memname" id="rpip18f6b2c8f259b35c3c7f">uint64_t __revll </td>
3672           <td id="rpip6bb8361c4158d4cf7bcf">(</td>
3673           <td class="paramtype" id="rpipa7baed75408d1568f296">uint64_t </td>
3674           <td class="paramname" id="rpip763c31cd61f3e56bab23"><em id="rpip9f8e3f3bf5ca7acb9989">bits</em></td>
3675 <td id="rpip4bcf0869acd747ead76e">)</td>
3676           <td id="rpip6f229e49b0b2f2a38b15"></td>
3677         </tr>
3678       </table>
3679 </div>
3680 <div class="memdoc" id="rpipae464bda6e5f24778467">
3681
3682 <p id="rpipdf53c926571ed985a91a">Reverse the bits in a 64 bit double word. </p>
3683 <h4 id="rpip6a48c47e4e2dc29ec53b" data-parent-id="rpip95565947db0ab51de81a" data-target-for="rpip6a48c47e4e2dc29ec53b">Parameters</h4>
3684 <p class="paragraph" id="rpip7cfd4e23cb3be0e59c42" data-parent-id="rpip95565947db0ab51de81a" data-target-for="rpip7cfd4e23cb3be0e59c42">
3685   </p>
3686 <table class="params" id="rpip3b185d2241e6486df93a">
3687     <tr id="rpip7785f401d96a0610922f">
3688 <td class="paramname" id="rpipff48202e18413f6361bf">bits</td>
3689 <td id="rpip03655c460429c6f50f8f">64 bit input </td>
3690 </tr>
3691   </table>
3692   
3693
3694
3695 <h4 class="label" id="rpip8a26dfe6f5a4f4addaf5" data-parent-id="rpip1bacefb49b06765f8f06" data-target-for="rpip8a26dfe6f5a4f4addaf5">Returns</h4>
3696 <p class="returns" id="rpipe140f55c97fc8c8b247e" data-parent-id="rpip1bacefb49b06765f8f06" data-target-for="rpipe140f55c97fc8c8b247e">the 64 input bits reversed </p>
3697
3698 </div>
3699 </div>
3700 </div>
3701 </div>
3702 </div>
3703 <div class="sect1">
3704 <h2 id="pico_bootrom">
3705 <a class="anchor" href="#pico_bootrom"></a>pico_bootrom</h2>
3706 <div class="sectionbody"></div>
3707 <div class="ingroups" id="rpip1cd29c77deb9710b2141">Part of: <a class="el" href="runtime.html" id="rpipa1a968d027d1b3612546">Runtime Infrastructure</a>
3708 </div>
3709 <div class="sect2">
3710 <h3 id="rpipcf60d5fd56095181a98e">
3711 <a class="anchor" href="#rpipcf60d5fd56095181a98e"></a>Macros</h3>
3712 <ul class="memberdecls" id="rpipcd5581cef6dc96193819" data-parent-id="rpip9a606b67c40e9757d5ff">
3713 <li class="memitem">
3714 <p data-target="true" data-target-for="rpipcd5581cef6dc96193819"><span class="memItemLeft" data-target="true" id="rpipb405d77d273e85676dcb" data-parent-id="rpipcd5581cef6dc96193819" data-target-for="rpipb405d77d273e85676dcb">#define </span><span class="memItemRight" data-target="true" id="rpipc406f768e76f8bc9e5a7" data-parent-id="rpipcd5581cef6dc96193819" data-target-for="rpipc406f768e76f8bc9e5a7"><a class="el" href="#ga5b3c93cbab0054e9938f2aca7261a73e" id="rpip3485469c2bb8ea5f10ee" data-adjusted="true">ROM_TABLE_CODE</a>(c1,  c2)   ((c1) | ((c2) &lt;&lt; 8))</span></p>
3715 </li>
3716 <li class="memdesc">
3717 <p data-target="true" data-target-for="rpip2551512803f009a8d24a"><span class="mdescLeft" data-target="true" id="rpipaf49409dd7f5bb77942c" data-parent-id="rpip2551512803f009a8d24a" data-target-for="rpipaf49409dd7f5bb77942c"> </span><span class="mdescRight" data-target="true" id="rpipbc6d6343b0d09166fece" data-parent-id="rpip2551512803f009a8d24a" data-target-for="rpipbc6d6343b0d09166fece">Return a bootrom lookup code based on two ASCII characters.  <br id="rpipcbf0b4c20ac9a66b2783"></span></p>
3718 </li>
3719 </ul>
3720 </div>
3721 <div class="sect2">
3722 <h3 id="rpip05bb858150fa37b3e132">
3723 <a class="anchor" href="#rpip05bb858150fa37b3e132"></a>Functions</h3>
3724 <ul class="memberdecls" id="rpip269ce5ab58fe0b48dea8" data-parent-id="rpipc4b8ebcf92550e55e7ad">
3725 <li class="memitem">
3726 <p data-target="true" data-target-for="rpip269ce5ab58fe0b48dea8"><span class="memItemLeft" data-target="true" id="rpip34b0e4a7dadaf0e58d4f" data-parent-id="rpip269ce5ab58fe0b48dea8" data-target-for="rpip34b0e4a7dadaf0e58d4f">static uint32_t </span><span class="memItemRight" data-target="true" id="rpipda8f6901927d8ed32c68" data-parent-id="rpip269ce5ab58fe0b48dea8" data-target-for="rpipda8f6901927d8ed32c68"><a class="el" href="#ga2b6dcf9d9c60d54a222f7c259c76b4b4" id="rpip7804944d0086e1c3d923" data-adjusted="true">rom_table_code</a> (uint8_t c1, uint8_t c2)</span></p>
3727 </li>
3728 <li class="memdesc">
3729 <p data-target="true" data-target-for="rpipb2ded7207334a10bc364"><span class="mdescLeft" data-target="true" id="rpip1756e5693607791eb9db" data-parent-id="rpipb2ded7207334a10bc364" data-target-for="rpip1756e5693607791eb9db"> </span><span class="mdescRight" data-target="true" id="rpipfb87cc3353e92a703d7b" data-parent-id="rpipb2ded7207334a10bc364" data-target-for="rpipfb87cc3353e92a703d7b">Return a bootrom lookup code based on two ASCII characters.  <br id="rpip81d196958c99684153fa"></span></p>
3730 </li>
3731 <li class="memitem">
3732 <p data-target="true" data-target-for="rpip323d7e6f26f1a598d1f3"><span class="memItemLeft" data-target="true" id="rpip7bb48fbecc0f34fbe72a" data-parent-id="rpip323d7e6f26f1a598d1f3" data-target-for="rpip7bb48fbecc0f34fbe72a">void * </span><span class="memItemRight" data-target="true" id="rpip5519d9a89c5019131fb6" data-parent-id="rpip323d7e6f26f1a598d1f3" data-target-for="rpip5519d9a89c5019131fb6"><a class="el" href="#gaaaf61234f389da6444b6479f29616d7d" id="rpipa4e47bf12af01b78c2a7" data-adjusted="true">rom_func_lookup</a> (uint32_t code)</span></p>
3733 </li>
3734 <li class="memdesc">
3735 <p data-target="true" data-target-for="rpipd5886a767b7f0a9c89ed"><span class="mdescLeft" data-target="true" id="rpip20e04463bfbe13ac6a2a" data-parent-id="rpipd5886a767b7f0a9c89ed" data-target-for="rpip20e04463bfbe13ac6a2a"> </span><span class="mdescRight" data-target="true" id="rpipabe5cdca30a309d77445" data-parent-id="rpipd5886a767b7f0a9c89ed" data-target-for="rpipabe5cdca30a309d77445">Lookup a bootrom function by code.  <br id="rpip1530ecce9e59fc385fe7"></span></p>
3736 </li>
3737 <li class="memitem">
3738 <p data-target="true" data-target-for="rpip0db889896d4c5995f445"><span class="memItemLeft" data-target="true" id="rpipd3969c8706084be8e896" data-parent-id="rpip0db889896d4c5995f445" data-target-for="rpipd3969c8706084be8e896">void * </span><span class="memItemRight" data-target="true" id="rpip596e5c83973d9086e2ad" data-parent-id="rpip0db889896d4c5995f445" data-target-for="rpip596e5c83973d9086e2ad"><a class="el" href="#gad3e66e7bcbf0448a0a63cf37dfb4b53c" id="rpipb0e6eaacaea2588d132f" data-adjusted="true">rom_data_lookup</a> (uint32_t code)</span></p>
3739 </li>
3740 <li class="memdesc">
3741 <p data-target="true" data-target-for="rpip9ee8735805ea327b0b25"><span class="mdescLeft" data-target="true" id="rpip179d1f367a04bbbff209" data-parent-id="rpip9ee8735805ea327b0b25" data-target-for="rpip179d1f367a04bbbff209"> </span><span class="mdescRight" data-target="true" id="rpip4cf5a4b7600d1ac178f6" data-parent-id="rpip9ee8735805ea327b0b25" data-target-for="rpip4cf5a4b7600d1ac178f6">Lookup a bootrom address by code.  <br id="rpip9380eaba323132149ed0"></span></p>
3742 </li>
3743 <li class="memitem">
3744 <p data-target="true" data-target-for="rpip572a4bb808c08d154abf"><span class="memItemLeft" data-target="true" id="rpip8b6cebf188bb372cd1b9" data-parent-id="rpip572a4bb808c08d154abf" data-target-for="rpip8b6cebf188bb372cd1b9">bool </span><span class="memItemRight" data-target="true" id="rpipd5175f2831a3a25807e5" data-parent-id="rpip572a4bb808c08d154abf" data-target-for="rpipd5175f2831a3a25807e5"><a class="el" href="#ga31965209f0ddaeaecaeb3c516abda04d" id="rpip372916521d34920872cb" data-adjusted="true">rom_funcs_lookup</a> (uint32_t *table, unsigned int count)</span></p>
3745 </li>
3746 <li class="memdesc">
3747 <p data-target="true" data-target-for="rpip303813481099f7683fd8"><span class="mdescLeft" data-target="true" id="rpipf9f74aa90727dfe5aeaf" data-parent-id="rpip303813481099f7683fd8" data-target-for="rpipf9f74aa90727dfe5aeaf"> </span><span class="mdescRight" data-target="true" id="rpip8fa771ae8930559f3ee6" data-parent-id="rpip303813481099f7683fd8" data-target-for="rpip8fa771ae8930559f3ee6">Helper function to lookup the addresses of multiple bootrom functions.  <br id="rpip4fbdc6020a625ea1b693"></span></p>
3748 </li>
3749 <li class="memitem">
3750 <p data-target="true" data-target-for="rpipfa6696daa4b6148dab2d"><span class="memItemLeft" data-target="true" id="rpip79a369192bc2cbb215a2" data-parent-id="rpipfa6696daa4b6148dab2d" data-target-for="rpip79a369192bc2cbb215a2">static <a class="el" href="runtime.html#ga23eadd8d1642fb8fe4600708c36e116a" id="rpipcbfb078c84671dcdb883" data-adjusted="true">__force_inline</a> void * </span><span class="memItemRight" data-target="true" id="rpip67b14b20d3414fc47737" data-parent-id="rpipfa6696daa4b6148dab2d" data-target-for="rpip67b14b20d3414fc47737"><a class="el" href="#ga8f4e326502015aa4f4624251df366268" id="rpip0f8c307873aa2214e14a" data-adjusted="true">rom_func_lookup_inline</a> (uint32_t code)</span></p>
3751 </li>
3752 <li class="memdesc">
3753 <p data-target="true" data-target-for="rpipf8a87fad4319bb6070b5"><span class="mdescLeft" data-target="true" id="rpipbae04e0b9af7fe669882" data-parent-id="rpipf8a87fad4319bb6070b5" data-target-for="rpipbae04e0b9af7fe669882"> </span><span class="mdescRight" data-target="true" id="rpipa1f0b94afe090ee33e83" data-parent-id="rpipf8a87fad4319bb6070b5" data-target-for="rpipa1f0b94afe090ee33e83">Lookup a bootrom function by code. This method is forcibly inlined into the caller for FLASH/RAM sensitive code usage.  <br id="rpipba28f0eb8612bfd24cb3"></span></p>
3754 </li>
3755 <li class="memitem">
3756 <p data-target="true" data-target-for="rpip4d04175d89f5ded09f99"><span class="memItemLeft" data-target="true" id="rpipadb1b3fdfe55d4f939ac" data-parent-id="rpip4d04175d89f5ded09f99" data-target-for="rpipadb1b3fdfe55d4f939ac">static void </span><span class="memItemRight" data-target="true" id="rpipa343b22f340bd6d82440" data-parent-id="rpip4d04175d89f5ded09f99" data-target-for="rpipa343b22f340bd6d82440"><a class="el" href="#ga5d51b6163ec30a147d3445cec8f33c7c" id="rpipceec0e1f0381a58d5671" data-adjusted="true">reset_usb_boot</a> (uint32_t usb_activity_gpio_pin_mask, uint32_t disable_interface_mask)</span></p>
3757 </li>
3758 <li class="memdesc">
3759 <p data-target="true" data-target-for="rpipbef487c807d7a9b7d741"><span class="mdescLeft" data-target="true" id="rpip5310f40000e57b87d738" data-parent-id="rpipbef487c807d7a9b7d741" data-target-for="rpip5310f40000e57b87d738"> </span><span class="mdescRight" data-target="true" id="rpipe8cda4e083eb8c0c0050" data-parent-id="rpipbef487c807d7a9b7d741" data-target-for="rpipe8cda4e083eb8c0c0050">Reboot the device into BOOTSEL mode.  <br id="rpip00e4ac95a7ac04fb76a8"></span></p>
3760 </li>
3761 </ul>
3762 <a name="details" id="details"></a>
3763 </div>
3764 <div class="sect2">
3765 <h3 id="rpip005c32aa3418cd5dc77d">
3766 <a class="anchor" href="#rpip005c32aa3418cd5dc77d"></a>Detailed Description</h3>
3767 <p id="rpip4ba950e5d2ed04e52988">Access to functions and data in the RP2040 bootrom</p>
3768 <p id="rpipd521cbadbf48324d3dcb">This header may be included by assembly code </p>
3769 </div>
3770 <div class="sect2">
3771 <h3 id="rpipf9cc87ae1233fe613239">
3772 <a class="anchor" href="#rpipf9cc87ae1233fe613239"></a>Macro Definition Documentation</h3>
3773 <a id="ga5b3c93cbab0054e9938f2aca7261a73e" name="ga5b3c93cbab0054e9938f2aca7261a73e"></a>
3774 <div class="sect3">
3775 <h4 id="rpip9f8ff226e11faeb5304e">
3776 <a class="anchor" href="#rpip9f8ff226e11faeb5304e"></a>◆ ROM_TABLE_CODE</h4>
3777 <div class="memitem" id="rpipb36a6b97ea0a86e256bd">
3778 <div class="memproto" id="rpip1b931e876f266ea028b8">
3779       <table class="memname" id="rpip82c878bb38945ddf9996">
3780         <tr id="rpip51e7dcc5ca9e55c6c7bb">
3781           <td class="memname" id="rpip63680c3ab29eae882259">#define ROM_TABLE_CODE</td>
3782           <td id="rpipd03c7e577a7dce377ed4">(</td>
3783           <td class="paramtype" id="rpip032cea88b08b79f921b5"> </td>
3784           <td class="paramname" id="rpipc1d169f4e2a80d817d8a">c1, </td>
3785         </tr>
3786         <tr id="rpipe2882027e3256f97a034">
3787           <td class="paramkey" id="rpipc47511564dbb4e719564"></td>
3788           <td id="rpip1d43af71bcce80c6edb6"></td>
3789           <td class="paramtype" id="rpipae0fb8a44368767cd479"> </td>
3790           <td class="paramname" id="rpip4e10c9f4ef1dc4f8efe5">c2 </td>
3791         </tr>
3792         <tr id="rpipf65199345ce894bf60dd">
3793           <td id="rpip84e480d3db2aa5a16ded"></td>
3794           <td id="rpip5ea6917fa93861b8db08">)</td>
3795           <td id="rpip5c5fd6b89310ddf5df09"></td>
3796 <td id="rpip553afec20d0b2a4c50b2">   ((c1) | ((c2) &lt;&lt; 8))</td>
3797         </tr>
3798       </table>
3799 </div>
3800 <div class="memdoc" id="rpip7e52ce2474becdde7f28">
3801
3802 <p id="rpip0168f969bf3872aea173">Return a bootrom lookup code based on two ASCII characters. </p>
3803 <p id="rpipef9ad52bbb74e8b8c5e3">These codes are uses to lookup data or function addresses in the bootrom</p>
3804 <h4 id="rpip5a586f0ab799ec532a8e" data-parent-id="rpipe115230d959f55b13970" data-target-for="rpip5a586f0ab799ec532a8e">Parameters</h4>
3805 <p class="paragraph" id="rpip04d58d7006e52d27ef0c" data-parent-id="rpipe115230d959f55b13970" data-target-for="rpip04d58d7006e52d27ef0c">
3806   </p>
3807 <table class="params" id="rpipeb0760aae4f0cb58d0be">
3808     <tr id="rpip83d41bdfa085abc5f6d4">
3809 <td class="paramname" id="rpip5deb61c0c7468fb3b6aa">c1</td>
3810 <td id="rpip11ca767e4271f983f3fc">the first character </td>
3811 </tr>
3812     <tr id="rpip1b26f448a693f99968b6">
3813 <td class="paramname" id="rpip1cbe9076d4e87de89370">c2</td>
3814 <td id="rpipcac13bdb089fb63dcb82">the second character </td>
3815 </tr>
3816   </table>
3817   
3818
3819
3820 <h4 class="label" id="rpip948cc77e800cba55d60f" data-parent-id="rpipbe5f5cf27f4b3cf6bd32" data-target-for="rpip948cc77e800cba55d60f">Returns</h4>
3821 <p class="returns" id="rpip28193abf1d21470bcc2c" data-parent-id="rpipbe5f5cf27f4b3cf6bd32" data-target-for="rpip28193abf1d21470bcc2c">the 'code' to use in <a class="el" href="#gaaaf61234f389da6444b6479f29616d7d" title="Lookup a bootrom function by code." id="rpip39a0b64b728f76ce349e" data-adjusted="true">rom_func_lookup()</a> or <a class="el" href="#gad3e66e7bcbf0448a0a63cf37dfb4b53c" title="Lookup a bootrom address by code." id="rpip86973c5642ca20ef8f39" data-adjusted="true">rom_data_lookup()</a> </p>
3822
3823 </div>
3824 </div>
3825 </div>
3826 </div>
3827 <div class="sect2">
3828 <h3 id="rpipab643919091a482a2c7d">
3829 <a class="anchor" href="#rpipab643919091a482a2c7d"></a>Function Documentation</h3>
3830 <a id="ga5d51b6163ec30a147d3445cec8f33c7c" name="ga5d51b6163ec30a147d3445cec8f33c7c"></a>
3831 <div class="sect3">
3832 <h4 id="rpip85d7b9ffbc317d1d779f">
3833 <a class="anchor" href="#rpip85d7b9ffbc317d1d779f"></a>◆ reset_usb_boot()</h4>
3834 <div class="memitem" id="rpip687f5bd29cf8a3c2951f">
3835 <div class="memproto" id="rpip33da12e78c9c676fb8f7">
3836 <table class="mlabels" id="rpip579193efc08cdde6f286">
3837   <tr id="rpipce239d2c6c2503941d1e">
3838   <td class="mlabels-left" id="rpip86f294a3226be562e8d6">
3839       <table class="memname" id="rpipcf05c5a7f45eadd156c7">
3840         <tr id="rpip3aa15a96d7685d5ab7f4">
3841           <td class="memname" id="rpip1ca1576157463f0a68d5">static void reset_usb_boot </td>
3842           <td id="rpip47b083a6ff365ef6b424">(</td>
3843           <td class="paramtype" id="rpip8a92f994b06b9acc043a">uint32_t </td>
3844           <td class="paramname" id="rpip6db9bf3e4c420b324a67">
3845 <em id="rpip16f0caaefc4d1711e6c7">usb_activity_gpio_pin_mask</em>, </td>
3846         </tr>
3847         <tr id="rpip493efd5d6b250730203c">
3848           <td class="paramkey" id="rpip8d4a7ab18552b0117275"></td>
3849           <td id="rpipae173e77c76f6be00bdb"></td>
3850           <td class="paramtype" id="rpip93fdbf6307c99cb37a7f">uint32_t </td>
3851           <td class="paramname" id="rpipa28501186771477fa615">
3852 <em id="rpip35f45fe2eaaf31aae29a">disable_interface_mask</em> </td>
3853         </tr>
3854         <tr id="rpipf23c467231e40d010225">
3855           <td id="rpip07d7197873a016f31f20"></td>
3856           <td id="rpip3a7ec20ca8f2f5a99753">)</td>
3857           <td id="rpipb1bc42e7ac956a1b9a08"></td>
3858 <td id="rpipf2211ceb8b3905bbe604"></td>
3859         </tr>
3860       </table>
3861   </td>
3862   <td class="mlabels-right" id="rpipe6b342c10a3c298f646c">
3863 <span class="mlabels" id="rpip6ebd323910ab5dd313b8"><span class="mlabel" id="rpipb8c1af1bd0a563bcec73">inline</span><span class="mlabel" id="rpipdc2a68ae9471bb40ba87">static</span></span>  </td>
3864   </tr>
3865 </table>
3866 </div>
3867 <div class="memdoc" id="rpip60e21eae9a5a231996e6">
3868
3869 <p id="rpip79b46aa2fee27a03fabf">Reboot the device into BOOTSEL mode. </p>
3870 <p id="rpip2c9b6407d91fbcded101">This function reboots the device into the BOOTSEL mode ('usb boot").
3871
3872 Facilities are provided to enable an "activity light" via GPIO attached LED for the USB Mass Storage Device, and to limit the USB interfaces exposed.</p>
3873 <h4 id="rpip710e341c3eb74a71d302" data-parent-id="rpipe3468921ed1945f69603" data-target-for="rpip710e341c3eb74a71d302">Parameters</h4>
3874 <p class="paragraph" id="rpipc4f6c6bc9b3a131364b1" data-parent-id="rpipe3468921ed1945f69603" data-target-for="rpipc4f6c6bc9b3a131364b1">
3875   </p>
3876 <table class="params" id="rpipac7d26776733b6bc099c">
3877     <tr id="rpip6a29e0f691aaeb5256fa">
3878 <td class="paramname" id="rpip5954ba76ca72ac53c779">usb_activity_gpio_pin_mask</td>
3879 <td id="rpipdca18574982115e3743f">0 No pins are used as per a cold boot. Otherwise a single bit set indicating which GPIO pin should be set to output and raised whenever there is mass storage activity from the host. </td>
3880 </tr>
3881     <tr id="rpip5c40e43a870e646bd2c7">
3882 <td class="paramname" id="rpip52a2f6b0c8157e4139b8">disable_interface_mask</td>
3883 <td id="rpipf85e766ec53cbc801362">value to control exposed interfaces<div class="ulist" id="rpip686dabce41553f8ce6ec" data-parent-id="rpipf85e766ec53cbc801362">
3884 <ul data-target="true" data-target-for="rpip686dabce41553f8ce6ec">
3885 <li id="rpip20be412e3a8f67e7a41a"><p>0 To enable both interfaces (as per a cold boot)</p></li>
3886 <li id="rpip82106e5f5561c174e1a4"><p>1 To disable the USB Mass Storage Interface</p></li>
3887 <li id="rpipa16e79a80c733d476f99"><p>2 To disable the USB PICOBOOT Interface </p></li>
3888 </ul>
3889 </div>
3890 </td>
3891 </tr>
3892   </table>
3893   
3894
3895
3896
3897 </div>
3898 </div>
3899 <a id="gad3e66e7bcbf0448a0a63cf37dfb4b53c" name="gad3e66e7bcbf0448a0a63cf37dfb4b53c"></a>
3900 </div>
3901 <div class="sect3">
3902 <h4 id="rpipa8917eb2cf464af1bb14">
3903 <a class="anchor" href="#rpipa8917eb2cf464af1bb14"></a>◆ rom_data_lookup()</h4>
3904 <div class="memitem" id="rpip41964c732fd1c702536d">
3905 <div class="memproto" id="rpip7ff30f6a06136aa13778">
3906       <table class="memname" id="rpipfa203c4072d24d6cd7c6">
3907         <tr id="rpip393f34f2bab442d14a48">
3908           <td class="memname" id="rpipc34935e5422a26ccdd4a">void * rom_data_lookup </td>
3909           <td id="rpip13aedca26cc025e24016">(</td>
3910           <td class="paramtype" id="rpipe00e168b3dda9d439e2e">uint32_t </td>
3911           <td class="paramname" id="rpip4f67f5baa182c25a1d85"><em id="rpip1b9f21086b12dbc3f9aa">code</em></td>
3912 <td id="rpip7c344a61993b664ad654">)</td>
3913           <td id="rpip5f1ec11013bda084b28d"></td>
3914         </tr>
3915       </table>
3916 </div>
3917 <div class="memdoc" id="rpip6af945acc4d62a07d1be">
3918
3919 <p id="rpip2e95836ba9aa4391e228">Lookup a bootrom address by code. </p>
3920 <h4 id="rpip324fb0e116e7aac3bd47" data-parent-id="rpipaa3bf26a45d80f04f113" data-target-for="rpip324fb0e116e7aac3bd47">Parameters</h4>
3921 <p class="paragraph" id="rpipd019c98acd670230e7f1" data-parent-id="rpipaa3bf26a45d80f04f113" data-target-for="rpipd019c98acd670230e7f1">
3922   </p>
3923 <table class="params" id="rpip4345eda9267124e9710b">
3924     <tr id="rpip26fbea13f1711997adea">
3925 <td class="paramname" id="rpip2e7004bc1f1e9a8c3f35">code</td>
3926 <td id="rpipb896ec3ceed327ec3440">the code </td>
3927 </tr>
3928   </table>
3929   
3930
3931
3932 <h4 class="label" id="rpipd1dc8d007b1b63e76910" data-parent-id="rpipc717c3b042553b5b3022" data-target-for="rpipd1dc8d007b1b63e76910">Returns</h4>
3933 <p class="returns" id="rpip7c3c37ce7ab0ee527ffe" data-parent-id="rpipc717c3b042553b5b3022" data-target-for="rpip7c3c37ce7ab0ee527ffe">a pointer to the data, or NULL if the code does not match any bootrom function </p>
3934
3935 </div>
3936 </div>
3937 <a id="gaaaf61234f389da6444b6479f29616d7d" name="gaaaf61234f389da6444b6479f29616d7d"></a>
3938 </div>
3939 <div class="sect3">
3940 <h4 id="rpipbb192d201ac2c0ad2999">
3941 <a class="anchor" href="#rpipbb192d201ac2c0ad2999"></a>◆ rom_func_lookup()</h4>
3942 <div class="memitem" id="rpip0677b77ec55c4252bac9">
3943 <div class="memproto" id="rpipbce9a6a1360b8e2de037">
3944       <table class="memname" id="rpipc1d1b5b7cfaa8017bc75">
3945         <tr id="rpip2efc20afd36532fc249a">
3946           <td class="memname" id="rpipf54a3e843106b77b2222">void * rom_func_lookup </td>
3947           <td id="rpipc0de73ccb017afca2add">(</td>
3948           <td class="paramtype" id="rpipe2b8f3ed057edf87593d">uint32_t </td>
3949           <td class="paramname" id="rpipf83c1ffe9b9f9cf56f40"><em id="rpip15e854523d4524664fa7">code</em></td>
3950 <td id="rpip567cee09fba70d810fae">)</td>
3951           <td id="rpipc18eef4cb6dc32fced7c"></td>
3952         </tr>
3953       </table>
3954 </div>
3955 <div class="memdoc" id="rpip2336dad1c232c2f7c942">
3956
3957 <p id="rpipf8f7d52cc2a37955fbe6">Lookup a bootrom function by code. </p>
3958 <h4 id="rpipab54d2c22a3b84801d94" data-parent-id="rpipe75d5045af2426c56d7f" data-target-for="rpipab54d2c22a3b84801d94">Parameters</h4>
3959 <p class="paragraph" id="rpip2e06876030d545422999" data-parent-id="rpipe75d5045af2426c56d7f" data-target-for="rpip2e06876030d545422999">
3960   </p>
3961 <table class="params" id="rpip30bdf8ddce78bc4f694a">
3962     <tr id="rpip29f995c33be3868635f4">
3963 <td class="paramname" id="rpipdd40650bd83a2c72d44c">code</td>
3964 <td id="rpipa53f2c23a420504ea493">the code </td>
3965 </tr>
3966   </table>
3967   
3968
3969
3970 <h4 class="label" id="rpipc0fb4ba5e96ebbb86e9c" data-parent-id="rpip41b0e96067c24084dfee" data-target-for="rpipc0fb4ba5e96ebbb86e9c">Returns</h4>
3971 <p class="returns" id="rpipdf8564a23d431e7690ad" data-parent-id="rpip41b0e96067c24084dfee" data-target-for="rpipdf8564a23d431e7690ad">a pointer to the function, or NULL if the code does not match any bootrom function </p>
3972
3973 </div>
3974 </div>
3975 <a id="ga8f4e326502015aa4f4624251df366268" name="ga8f4e326502015aa4f4624251df366268"></a>
3976 </div>
3977 <div class="sect3">
3978 <h4 id="rpip441cac27cf23a5bb0662">
3979 <a class="anchor" href="#rpip441cac27cf23a5bb0662"></a>◆ rom_func_lookup_inline()</h4>
3980 <div class="memitem" id="rpip87e2d1e0b7727b2951b9">
3981 <div class="memproto" id="rpip78267ec3b3b333fd777b">
3982 <table class="mlabels" id="rpip53161993cb84c9a36d6c">
3983   <tr id="rpip881f21019dfdfe730c6e">
3984   <td class="mlabels-left" id="rpip30609b681d9a2dfe6945">
3985       <table class="memname" id="rpipab506df26eb3c15cc500">
3986         <tr id="rpipea3e7f0ea09d36430e93">
3987           <td class="memname" id="rpip76eb6d587541a7d9ac8f">static <a class="el" href="runtime.html#ga23eadd8d1642fb8fe4600708c36e116a" id="rpip24bb44d53c7388f4d84d" data-adjusted="true">__force_inline</a> void * rom_func_lookup_inline </td>
3988           <td id="rpip61d91dcea75cad93341f">(</td>
3989           <td class="paramtype" id="rpipee17c773f279f9abbfb9">uint32_t </td>
3990           <td class="paramname" id="rpip0b52075e39a312418238"><em id="rpipca4e59b70a3d79604095">code</em></td>
3991 <td id="rpipa2143042b7cb13a186dc">)</td>
3992           <td id="rpipd4cdd1b09ad9f8b11a60"></td>
3993         </tr>
3994       </table>
3995   </td>
3996   <td class="mlabels-right" id="rpip01bf082e6bfd8034715c">
3997 <span class="mlabels" id="rpipac3304a56bf71e51b734"><span class="mlabel" id="rpipe6d7939438ca6b3b4019">static</span></span>  </td>
3998   </tr>
3999 </table>
4000 </div>
4001 <div class="memdoc" id="rpip007ae9438c0e409df1b8">
4002
4003 <p id="rpip354441620be0dad9ae82">Lookup a bootrom function by code. This method is forcibly inlined into the caller for FLASH/RAM sensitive code usage. </p>
4004 <h4 id="rpipaae95798a5a1abbf3a77" data-parent-id="rpip5739899a5bee6b1fcd56" data-target-for="rpipaae95798a5a1abbf3a77">Parameters</h4>
4005 <p class="paragraph" id="rpipc97bc97d6d359e9533e1" data-parent-id="rpip5739899a5bee6b1fcd56" data-target-for="rpipc97bc97d6d359e9533e1">
4006   </p>
4007 <table class="params" id="rpipf2ff92c98152461637fd">
4008     <tr id="rpip5850bf80d93cdaaffae9">
4009 <td class="paramname" id="rpip49f9b56b0479e8d6af31">code</td>
4010 <td id="rpip9c2c7d6f07184cc59e5e">the code </td>
4011 </tr>
4012   </table>
4013   
4014
4015
4016 <h4 class="label" id="rpip61d95527495d8053808b" data-parent-id="rpip30502cd0ace48fe945e9" data-target-for="rpip61d95527495d8053808b">Returns</h4>
4017 <p class="returns" id="rpip34b56fdda0e8a06aee2f" data-parent-id="rpip30502cd0ace48fe945e9" data-target-for="rpip34b56fdda0e8a06aee2f">a pointer to the function, or NULL if the code does not match any bootrom function </p>
4018
4019 </div>
4020 </div>
4021 <a id="ga31965209f0ddaeaecaeb3c516abda04d" name="ga31965209f0ddaeaecaeb3c516abda04d"></a>
4022 </div>
4023 <div class="sect3">
4024 <h4 id="rpip6607926ac8e055f0a619">
4025 <a class="anchor" href="#rpip6607926ac8e055f0a619"></a>◆ rom_funcs_lookup()</h4>
4026 <div class="memitem" id="rpipe042441c010ab159c564">
4027 <div class="memproto" id="rpipc1d42c6ff594431f688a">
4028       <table class="memname" id="rpip7fd1da080d69c709805e">
4029         <tr id="rpip3c15622c3588c8232232">
4030           <td class="memname" id="rpip4c9e8ff4bbfa8e7a53bb">bool rom_funcs_lookup </td>
4031           <td id="rpip7245f9fff6a0d8f08f25">(</td>
4032           <td class="paramtype" id="rpip6dd147808fd279f53866">uint32_t * </td>
4033           <td class="paramname" id="rpip3436fa78751ecccba035">
4034 <em id="rpip85f47acf775975ce1b7f">table</em>, </td>
4035         </tr>
4036         <tr id="rpipe5da643fb702d9c5afc6">
4037           <td class="paramkey" id="rpip036e4a5ffa11c00be40b"></td>
4038           <td id="rpipa501c60fd1d6015dfd80"></td>
4039           <td class="paramtype" id="rpipa8551bbb09ecf73c71f0">unsigned int </td>
4040           <td class="paramname" id="rpip8ec3c68dfce92640407c">
4041 <em id="rpip884a215fcbd8083cbc6e">count</em> </td>
4042         </tr>
4043         <tr id="rpipfa00ef34a4acd93189bd">
4044           <td id="rpip4ff998b272e22a1bc726"></td>
4045           <td id="rpip5a746a9176bc998dc168">)</td>
4046           <td id="rpip1f271962cdf3116b08df"></td>
4047 <td id="rpipbd635af47f621801ba58"></td>
4048         </tr>
4049       </table>
4050 </div>
4051 <div class="memdoc" id="rpip06f307cb8f70c5d7c6db">
4052
4053 <p id="rpipb587d7da2373e025c415">Helper function to lookup the addresses of multiple bootrom functions. </p>
4054 <p id="rpip8c0f90025ae466c70fae">This method looks up the 'codes' in the table, and convert each table entry to the looked up function pointer, if there is a function for that code in the bootrom.</p>
4055 <h4 id="rpip838402dfca15ad5cc071" data-parent-id="rpip56ad5c346c3c57fcec71" data-target-for="rpip838402dfca15ad5cc071">Parameters</h4>
4056 <p class="paragraph" id="rpipeb68ed5dc5e073efe822" data-parent-id="rpip56ad5c346c3c57fcec71" data-target-for="rpipeb68ed5dc5e073efe822">
4057   </p>
4058 <table class="params" id="rpip592663cc6e524f5b8c0a">
4059     <tr id="rpip9b6eb9ab51e6987d7415">
4060 <td class="paramname" id="rpipe3dad5221ccc4415afa8">table</td>
4061 <td id="rpip1137690525f2b4411871">an IN/OUT array, elements are codes on input, function pointers on success. </td>
4062 </tr>
4063     <tr id="rpipaa4677d648ec0909da03">
4064 <td class="paramname" id="rpipd81240a7addb783f686b">count</td>
4065 <td id="rpip0746fb22fd1898e4a0c9">the number of elements in the table </td>
4066 </tr>
4067   </table>
4068   
4069
4070
4071 <h4 class="label" id="rpipad0cfe6fca973667e50f" data-parent-id="rpipc5ca0c6317c52100488d" data-target-for="rpipad0cfe6fca973667e50f">Returns</h4>
4072 <p class="returns" id="rpip57384c9582ae000e9afb" data-parent-id="rpipc5ca0c6317c52100488d" data-target-for="rpip57384c9582ae000e9afb">true if all the codes were found, and converted to function pointers, false otherwise </p>
4073
4074 </div>
4075 </div>
4076 <a id="ga2b6dcf9d9c60d54a222f7c259c76b4b4" name="ga2b6dcf9d9c60d54a222f7c259c76b4b4"></a>
4077 </div>
4078 <div class="sect3">
4079 <h4 id="rpipf0ca8e118a6c6724807e">
4080 <a class="anchor" href="#rpipf0ca8e118a6c6724807e"></a>◆ rom_table_code()</h4>
4081 <div class="memitem" id="rpip1a081c96cbdbb5288517">
4082 <div class="memproto" id="rpipcc78fd20160904998ee9">
4083 <table class="mlabels" id="rpip6003911a802146b95453">
4084   <tr id="rpip0093185a5365448390ab">
4085   <td class="mlabels-left" id="rpip2462b980e10aa23190ec">
4086       <table class="memname" id="rpip08a4bc458fed35e13ee1">
4087         <tr id="rpip74275fff1e841d3c2794">
4088           <td class="memname" id="rpip52ec0e5e0825ac9ac38c">static uint32_t rom_table_code </td>
4089           <td id="rpip0a9d59620da201064480">(</td>
4090           <td class="paramtype" id="rpip8b74361b70d095e7f0c1">uint8_t </td>
4091           <td class="paramname" id="rpip06a9db799916ca989d48">
4092 <em id="rpip05ae708cb67800dd979e">c1</em>, </td>
4093         </tr>
4094         <tr id="rpip1994da68ed0136696b99">
4095           <td class="paramkey" id="rpipa6cfa3d9deca3f366d3c"></td>
4096           <td id="rpip0d60022b0406dfbd8c5b"></td>
4097           <td class="paramtype" id="rpipee753b86e42bd6a387a8">uint8_t </td>
4098           <td class="paramname" id="rpip948ecc9181b99465eb1b">
4099 <em id="rpip944cfd3e663aa1158c28">c2</em> </td>
4100         </tr>
4101         <tr id="rpip0c630fe92ae35c789551">
4102           <td id="rpipd200597e07d4972dba34"></td>
4103           <td id="rpip65befc5d9ea9c2f36abb">)</td>
4104           <td id="rpip3e56e90bd8ab1906d890"></td>
4105 <td id="rpip7a1998ad1b2c3bd39ae4"></td>
4106         </tr>
4107       </table>
4108   </td>
4109   <td class="mlabels-right" id="rpipe965dcc741793a6f54f8">
4110 <span class="mlabels" id="rpipa434e9fad9a4d31a15ad"><span class="mlabel" id="rpip782cf1502babcd6d98ff">inline</span><span class="mlabel" id="rpipbe860c138b3b1267bf8a">static</span></span>  </td>
4111   </tr>
4112 </table>
4113 </div>
4114 <div class="memdoc" id="rpip27353c48f1e34c4f9f08">
4115
4116 <p id="rpipbfc6841b42c5f875e2aa">Return a bootrom lookup code based on two ASCII characters. </p>
4117 <p id="rpip9eb187eac13b5b3b5331">These codes are uses to lookup data or function addresses in the bootrom</p>
4118 <h4 id="rpip9508e5e55eadf33deaa0" data-parent-id="rpip697f59998f5966060d32" data-target-for="rpip9508e5e55eadf33deaa0">Parameters</h4>
4119 <p class="paragraph" id="rpip08c30917e6d703052641" data-parent-id="rpip697f59998f5966060d32" data-target-for="rpip08c30917e6d703052641">
4120   </p>
4121 <table class="params" id="rpip5fbbb4bcab8d30f86967">
4122     <tr id="rpip34372e6284c679d8114d">
4123 <td class="paramname" id="rpip088a4bdaf6e02b24cec1">c1</td>
4124 <td id="rpipa668359216079bad3d66">the first character </td>
4125 </tr>
4126     <tr id="rpipdc37f3c79cc6bb39085e">
4127 <td class="paramname" id="rpip4b1403b3bcff12828dee">c2</td>
4128 <td id="rpipfe23b683f5819dfa8583">the second character </td>
4129 </tr>
4130   </table>
4131   
4132
4133
4134 <h4 class="label" id="rpip6383847e4ad23bbb8f30" data-parent-id="rpip3dc8a29fb77527c27dc1" data-target-for="rpip6383847e4ad23bbb8f30">Returns</h4>
4135 <p class="returns" id="rpipc8b1db956a76a62e0914" data-parent-id="rpip3dc8a29fb77527c27dc1" data-target-for="rpipc8b1db956a76a62e0914">the 'code' to use in <a class="el" href="#gaaaf61234f389da6444b6479f29616d7d" title="Lookup a bootrom function by code." id="rpip54901accc1a92818afc3" data-adjusted="true">rom_func_lookup()</a> or <a class="el" href="#gad3e66e7bcbf0448a0a63cf37dfb4b53c" title="Lookup a bootrom address by code." id="rpip4b22de1a3693b72f274c" data-adjusted="true">rom_data_lookup()</a> </p>
4136
4137 </div>
4138 </div>
4139 </div>
4140 </div>
4141 </div>
4142 <div class="sect1">
4143 <h2 id="pico_bootsel_via_double_reset">
4144 <a class="anchor" href="#pico_bootsel_via_double_reset"></a>pico_bootsel_via_double_reset</h2>
4145 <div class="sectionbody"></div>
4146 <div class="ingroups" id="rpip44b00c17b8246a62be39">Part of: <a class="el" href="runtime.html" id="rpipf827fa0890c8e724d739">Runtime Infrastructure</a>
4147 </div>
4148 <p id="rpip8396e69a622d8d5c43b7">When the 'pico_bootsel_via_double_reset' library is linked, a function is injected before main() which will detect when the system has been reset twice in quick succession, and enter the USB ROM bootloader (BOOTSEL mode) when this happens. This allows a double tap of a reset button on a development board to be used to enter the ROM bootloader, provided this library is always linked. </p>
4149 </div>
4150 <div class="sect1">
4151 <h2 id="pico_cxx_options">
4152 <a class="anchor" href="#pico_cxx_options"></a>pico_cxx_options</h2>
4153 <div class="sectionbody"></div>
4154 <div class="ingroups" id="rpip1d515b7a9c01e8ff5b78">Part of: <a class="el" href="runtime.html" id="rpip455a088cc184b85a5385">Runtime Infrastructure</a>
4155 </div>
4156 <p id="rpipa09667821615544d2604">non-code library controlling C++ related compile options
4157 </p>
4158 <p id="rpiped86bb64716bc65496cc">non-code library controlling C++ related compile options </p>
4159 </div>
4160 <div class="sect1">
4161 <h2 id="pico_divider">
4162 <a class="anchor" href="#pico_divider"></a>pico_divider</h2>
4163 <div class="sectionbody"></div>
4164 <div class="ingroups" id="rpipc6cbc4ef7c21af718815">Part of: <a class="el" href="runtime.html" id="rpip5df7a6d5e915b38923f1">Runtime Infrastructure</a>
4165 </div>
4166 <div class="sect2">
4167 <h3 id="rpipfb1beee11febefbf90cc">
4168 <a class="anchor" href="#rpipfb1beee11febefbf90cc"></a>Files</h3>
4169 <ul class="memberdecls" id="rpipfea8ec8a62501a71f3ac" data-parent-id="rpip2e11ff9037ae5e29560d">
4170 <li class="memitem">
4171 <p data-target="true" data-target-for="rpipfea8ec8a62501a71f3ac"><span class="memItemLeft" data-target="true" id="rpip887d0def5822d46bcc59" data-parent-id="rpipfea8ec8a62501a71f3ac" data-target-for="rpip887d0def5822d46bcc59">file Â </span><span class="memItemRight" data-target="true" id="rpip165449acb04d7a545aeb" data-parent-id="rpipfea8ec8a62501a71f3ac" data-target-for="rpip165449acb04d7a545aeb"><a class="el" href="common_2pico__divider_2include_2pico_2divider_8h.html" id="rpip9b5d14ee99daadc38673">divider.h</a></span></p>
4172 </li>
4173 <li class="memdesc">
4174 <p data-target="true" data-target-for="rpip411e0f4e875d8c6f9d4a"><span class="mdescLeft" data-target="true" id="rpipcf7548fe01ac98a33be5" data-parent-id="rpip411e0f4e875d8c6f9d4a" data-target-for="rpipcf7548fe01ac98a33be5"> </span><span class="mdescRight" data-target="true" id="rpip156bb8b549b89af1ccbb" data-parent-id="rpip411e0f4e875d8c6f9d4a" data-target-for="rpip156bb8b549b89af1ccbb">High level APIs including combined quotient and remainder functions for 32 and 64 bit accelerated by the hardware divider. <br id="rpipdf6bd33e82bfa794e2da"></span></p>
4175 </li>
4176 </ul>
4177 </div>
4178 <div class="sect2">
4179 <h3 id="rpipa79e631886e62fcd1cd0">
4180 <a class="anchor" href="#rpipa79e631886e62fcd1cd0"></a>Functions</h3>
4181 <ul class="memberdecls" id="rpipc8f180fd132cc32af76c" data-parent-id="rpip9fa463c5e88ec75fbf2f">
4182 <li class="memitem">
4183 <p data-target="true" data-target-for="rpipc8f180fd132cc32af76c"><span class="memItemLeft" data-target="true" id="rpip693ce940dac68caca046" data-parent-id="rpipc8f180fd132cc32af76c" data-target-for="rpip693ce940dac68caca046">int32_t </span><span class="memItemRight" data-target="true" id="rpip9c84e36766d94e992db6" data-parent-id="rpipc8f180fd132cc32af76c" data-target-for="rpip9c84e36766d94e992db6"><a class="el" href="#ga60b86237e096a13f871015a28dceb88a" id="rpipc31d590b5bc1fd095f51" data-adjusted="true">div_s32s32</a> (int32_t a, int32_t b)</span></p>
4184 </li>
4185 <li class="memdesc">
4186 <p data-target="true" data-target-for="rpip200dd9f96ba54998a40e"><span class="mdescLeft" data-target="true" id="rpipac3031f9a478af2290d7" data-parent-id="rpip200dd9f96ba54998a40e" data-target-for="rpipac3031f9a478af2290d7"> </span><span class="mdescRight" data-target="true" id="rpip63b7bc9530a16ec81c44" data-parent-id="rpip200dd9f96ba54998a40e" data-target-for="rpip63b7bc9530a16ec81c44">Integer divide of two signed 32-bit values.  <br id="rpip0182a32a8c5519dd4cf6"></span></p>
4187 </li>
4188 <li class="memitem">
4189 <p data-target="true" data-target-for="rpipef8cfbc8192813a87f08"><span class="memItemLeft" data-target="true" id="rpip101fc76a870e29eb7416" data-parent-id="rpipef8cfbc8192813a87f08" data-target-for="rpip101fc76a870e29eb7416">static int32_t </span><span class="memItemRight" data-target="true" id="rpip05ade2d411023f4e38a0" data-parent-id="rpipef8cfbc8192813a87f08" data-target-for="rpip05ade2d411023f4e38a0"><a class="el" href="#gaae6ff276cc2275c0734600b981a5d677" id="rpip7c0de98c07449abbab17" data-adjusted="true">divmod_s32s32_rem</a> (int32_t a, int32_t b, int32_t *rem)</span></p>
4190 </li>
4191 <li class="memdesc">
4192 <p data-target="true" data-target-for="rpipa4e8957f5468af9ab6dc"><span class="mdescLeft" data-target="true" id="rpipb41bc8fb76e90a6c6789" data-parent-id="rpipa4e8957f5468af9ab6dc" data-target-for="rpipb41bc8fb76e90a6c6789"> </span><span class="mdescRight" data-target="true" id="rpip4679bf32107fe7a9622b" data-parent-id="rpipa4e8957f5468af9ab6dc" data-target-for="rpip4679bf32107fe7a9622b">Integer divide of two signed 32-bit values, with remainder.  <br id="rpip1d33aadd8c618697754f"></span></p>
4193 </li>
4194 <li class="memitem">
4195 <p data-target="true" data-target-for="rpip26b9ed90c14c731782c6"><span class="memItemLeft" data-target="true" id="rpipcf926824c3c1563f4254" data-parent-id="rpip26b9ed90c14c731782c6" data-target-for="rpipcf926824c3c1563f4254">divmod_result_t </span><span class="memItemRight" data-target="true" id="rpip709f72606e95946fa263" data-parent-id="rpip26b9ed90c14c731782c6" data-target-for="rpip709f72606e95946fa263"><a class="el" href="#gace9d9d5ff4290c52bc4d5e07f6f7e15a" id="rpip8c3122a13f75df5374fb" data-adjusted="true">divmod_s32s32</a> (int32_t a, int32_t b)</span></p>
4196 </li>
4197 <li class="memdesc">
4198 <p data-target="true" data-target-for="rpipcf028aaed4ed456b7029"><span class="mdescLeft" data-target="true" id="rpip9c2f833dc3b640cd090f" data-parent-id="rpipcf028aaed4ed456b7029" data-target-for="rpip9c2f833dc3b640cd090f"> </span><span class="mdescRight" data-target="true" id="rpip10e73527d5eb6afe6b11" data-parent-id="rpipcf028aaed4ed456b7029" data-target-for="rpip10e73527d5eb6afe6b11">Integer divide of two signed 32-bit values.  <br id="rpipc1fa3c17c20ac1eb97c8"></span></p>
4199 </li>
4200 <li class="memitem">
4201 <p data-target="true" data-target-for="rpip98f0e9368dc0ce2f19e7"><span class="memItemLeft" data-target="true" id="rpipf392b49b943fa4bb37dd" data-parent-id="rpip98f0e9368dc0ce2f19e7" data-target-for="rpipf392b49b943fa4bb37dd">uint32_t </span><span class="memItemRight" data-target="true" id="rpipd9429bc46d51f44d53f6" data-parent-id="rpip98f0e9368dc0ce2f19e7" data-target-for="rpipd9429bc46d51f44d53f6"><a class="el" href="#ga9f9526e8653805bf2fe737afd4e490da" id="rpipe4e598089018099105a0" data-adjusted="true">div_u32u32</a> (uint32_t a, uint32_t b)</span></p>
4202 </li>
4203 <li class="memdesc">
4204 <p data-target="true" data-target-for="rpipf1403291bac37b9b2478"><span class="mdescLeft" data-target="true" id="rpip1b72d2a406fd4d4140a7" data-parent-id="rpipf1403291bac37b9b2478" data-target-for="rpip1b72d2a406fd4d4140a7"> </span><span class="mdescRight" data-target="true" id="rpip1787b767619fea907198" data-parent-id="rpipf1403291bac37b9b2478" data-target-for="rpip1787b767619fea907198">Integer divide of two unsigned 32-bit values.  <br id="rpipdccfff56e5b37c6a7a4e"></span></p>
4205 </li>
4206 <li class="memitem">
4207 <p data-target="true" data-target-for="rpip07279a9b0d935b21e9ae"><span class="memItemLeft" data-target="true" id="rpipbf57bcfd69efbb312513" data-parent-id="rpip07279a9b0d935b21e9ae" data-target-for="rpipbf57bcfd69efbb312513">static uint32_t </span><span class="memItemRight" data-target="true" id="rpip8237c47d387fc2383c1b" data-parent-id="rpip07279a9b0d935b21e9ae" data-target-for="rpip8237c47d387fc2383c1b"><a class="el" href="#ga02bac0aea2fa383a28bd05bcd682a07a" id="rpip6f99c9ccee80a6c1900d" data-adjusted="true">divmod_u32u32_rem</a> (uint32_t a, uint32_t b, uint32_t *rem)</span></p>
4208 </li>
4209 <li class="memdesc">
4210 <p data-target="true" data-target-for="rpip3f600a537702f381f268"><span class="mdescLeft" data-target="true" id="rpip4b18d7bc198719c29039" data-parent-id="rpip3f600a537702f381f268" data-target-for="rpip4b18d7bc198719c29039"> </span><span class="mdescRight" data-target="true" id="rpip012a05e6d39d7964a3d8" data-parent-id="rpip3f600a537702f381f268" data-target-for="rpip012a05e6d39d7964a3d8">Integer divide of two unsigned 32-bit values, with remainder.  <br id="rpip960c2feacd1458424a12"></span></p>
4211 </li>
4212 <li class="memitem">
4213 <p data-target="true" data-target-for="rpip1ff188043d3460bbb980"><span class="memItemLeft" data-target="true" id="rpipc81496446cbbfb4096cc" data-parent-id="rpip1ff188043d3460bbb980" data-target-for="rpipc81496446cbbfb4096cc">divmod_result_t </span><span class="memItemRight" data-target="true" id="rpip62d4678ef521bd88a466" data-parent-id="rpip1ff188043d3460bbb980" data-target-for="rpip62d4678ef521bd88a466"><a class="el" href="#ga71d8e53c72b078f1334061ff0aebe8d8" id="rpipe2fe2a5fa8351ac06867" data-adjusted="true">divmod_u32u32</a> (uint32_t a, uint32_t b)</span></p>
4214 </li>
4215 <li class="memdesc">
4216 <p data-target="true" data-target-for="rpip1636c9915640dbe4a9f4"><span class="mdescLeft" data-target="true" id="rpip6b94f64c64fb0dcaeb99" data-parent-id="rpip1636c9915640dbe4a9f4" data-target-for="rpip6b94f64c64fb0dcaeb99"> </span><span class="mdescRight" data-target="true" id="rpip186b5b5c66ffe817777a" data-parent-id="rpip1636c9915640dbe4a9f4" data-target-for="rpip186b5b5c66ffe817777a">Integer divide of two unsigned 32-bit values.  <br id="rpipa327090b55c192c6a478"></span></p>
4217 </li>
4218 <li class="memitem">
4219 <p data-target="true" data-target-for="rpip9c24257bfa4e6bffe074"><span class="memItemLeft" data-target="true" id="rpip15a0a744370448bc6813" data-parent-id="rpip9c24257bfa4e6bffe074" data-target-for="rpip15a0a744370448bc6813">int64_t </span><span class="memItemRight" data-target="true" id="rpip02c171c6d4d8475d2546" data-parent-id="rpip9c24257bfa4e6bffe074" data-target-for="rpip02c171c6d4d8475d2546"><a class="el" href="#ga053ab24ac7d6145b0229a6c111cb9d1b" id="rpip123d196d62e2dbaf51e4" data-adjusted="true">div_s64s64</a> (int64_t a, int64_t b)</span></p>
4220 </li>
4221 <li class="memdesc">
4222 <p data-target="true" data-target-for="rpipfe81969c6d57b417081b"><span class="mdescLeft" data-target="true" id="rpip921fc1aab04cdbea3761" data-parent-id="rpipfe81969c6d57b417081b" data-target-for="rpip921fc1aab04cdbea3761"> </span><span class="mdescRight" data-target="true" id="rpip7960d419d09eb4059364" data-parent-id="rpipfe81969c6d57b417081b" data-target-for="rpip7960d419d09eb4059364">Integer divide of two signed 64-bit values.  <br id="rpip25080a6c0e9fa68b2353"></span></p>
4223 </li>
4224 <li class="memitem">
4225 <p data-target="true" data-target-for="rpipe472065aa99fb3b1f9bc"><span class="memItemLeft" data-target="true" id="rpipfd9e9825a24f7befe9c3" data-parent-id="rpipe472065aa99fb3b1f9bc" data-target-for="rpipfd9e9825a24f7befe9c3">int64_t </span><span class="memItemRight" data-target="true" id="rpip4f338aeb1b21c7a78b1c" data-parent-id="rpipe472065aa99fb3b1f9bc" data-target-for="rpip4f338aeb1b21c7a78b1c"><a class="el" href="#ga7f6ec69ce8ef4406923d56a0a6e1d409" id="rpipfc12739c08cf8d9b5f85" data-adjusted="true">divmod_s64s64_rem</a> (int64_t a, int64_t b, int64_t *rem)</span></p>
4226 </li>
4227 <li class="memdesc">
4228 <p data-target="true" data-target-for="rpip95fdfe0edb57f541f182"><span class="mdescLeft" data-target="true" id="rpip557245cec6f856b9a7fd" data-parent-id="rpip95fdfe0edb57f541f182" data-target-for="rpip557245cec6f856b9a7fd"> </span><span class="mdescRight" data-target="true" id="rpip3ed1510cea893ca9979b" data-parent-id="rpip95fdfe0edb57f541f182" data-target-for="rpip3ed1510cea893ca9979b">Integer divide of two signed 64-bit values, with remainder.  <br id="rpip2f64e0125c58999d0544"></span></p>
4229 </li>
4230 <li class="memitem">
4231 <p data-target="true" data-target-for="rpip242c3236eb030a6213db"><span class="memItemLeft" data-target="true" id="rpipfd8777835c23652fc3bc" data-parent-id="rpip242c3236eb030a6213db" data-target-for="rpipfd8777835c23652fc3bc">int64_t </span><span class="memItemRight" data-target="true" id="rpipb0dce7a1d97ec246ecb9" data-parent-id="rpip242c3236eb030a6213db" data-target-for="rpipb0dce7a1d97ec246ecb9"><a class="el" href="#ga936872c9df9360e2b32b5d8b2c345913" id="rpip311b9f008d71a1cf3d36" data-adjusted="true">divmod_s64s64</a> (int64_t a, int64_t b)</span></p>
4232 </li>
4233 <li class="memdesc">
4234 <p data-target="true" data-target-for="rpipedbeb2cafe4ef4e18b25"><span class="mdescLeft" data-target="true" id="rpipd7c2cfadb3db84f06336" data-parent-id="rpipedbeb2cafe4ef4e18b25" data-target-for="rpipd7c2cfadb3db84f06336"> </span><span class="mdescRight" data-target="true" id="rpip482136df6563e48d772e" data-parent-id="rpipedbeb2cafe4ef4e18b25" data-target-for="rpip482136df6563e48d772e">Integer divide of two signed 64-bit values.  <br id="rpip756bea964e5c800d4d25"></span></p>
4235 </li>
4236 <li class="memitem">
4237 <p data-target="true" data-target-for="rpip69a6d8eb7d3c1cc5b6dc"><span class="memItemLeft" data-target="true" id="rpipc4d63a3daf737d29ce12" data-parent-id="rpip69a6d8eb7d3c1cc5b6dc" data-target-for="rpipc4d63a3daf737d29ce12">uint64_t </span><span class="memItemRight" data-target="true" id="rpipe10ca1d1347d65d6083d" data-parent-id="rpip69a6d8eb7d3c1cc5b6dc" data-target-for="rpipe10ca1d1347d65d6083d"><a class="el" href="#ga3004f0218e26a762031ec7ed3c369ad1" id="rpip2cd9fe7a7e643b87cdc1" data-adjusted="true">div_u64u64</a> (uint64_t a, uint64_t b)</span></p>
4238 </li>
4239 <li class="memdesc">
4240 <p data-target="true" data-target-for="rpip46c43dd648f34e685228"><span class="mdescLeft" data-target="true" id="rpip8dfe1912a547f5b635be" data-parent-id="rpip46c43dd648f34e685228" data-target-for="rpip8dfe1912a547f5b635be"> </span><span class="mdescRight" data-target="true" id="rpip63a58a9bc510987f16b5" data-parent-id="rpip46c43dd648f34e685228" data-target-for="rpip63a58a9bc510987f16b5">Integer divide of two unsigned 64-bit values.  <br id="rpipd2959897b4357ab9d6b1"></span></p>
4241 </li>
4242 <li class="memitem">
4243 <p data-target="true" data-target-for="rpip20cccb6e8ffb5ee62363"><span class="memItemLeft" data-target="true" id="rpip23eaf246cc47ce9fe77a" data-parent-id="rpip20cccb6e8ffb5ee62363" data-target-for="rpip23eaf246cc47ce9fe77a">uint64_t </span><span class="memItemRight" data-target="true" id="rpip81794b92fb55b9c9d0dd" data-parent-id="rpip20cccb6e8ffb5ee62363" data-target-for="rpip81794b92fb55b9c9d0dd"><a class="el" href="#gad4a811e1113b670a7b67df9d7e8c17f8" id="rpipff1f968532a440f61d2a" data-adjusted="true">divmod_u64u64_rem</a> (uint64_t a, uint64_t b, uint64_t *rem)</span></p>
4244 </li>
4245 <li class="memdesc">
4246 <p data-target="true" data-target-for="rpipc3a42511995b4d530609"><span class="mdescLeft" data-target="true" id="rpip6111e13be0383f032239" data-parent-id="rpipc3a42511995b4d530609" data-target-for="rpip6111e13be0383f032239"> </span><span class="mdescRight" data-target="true" id="rpip735e42a24dc0c77df157" data-parent-id="rpipc3a42511995b4d530609" data-target-for="rpip735e42a24dc0c77df157">Integer divide of two unsigned 64-bit values, with remainder.  <br id="rpip22f66e6e83a3c2cbcdfa"></span></p>
4247 </li>
4248 <li class="memitem">
4249 <p data-target="true" data-target-for="rpip95c37d184e2f158ce900"><span class="memItemLeft" data-target="true" id="rpip47819ca9aa5abe27ff8a" data-parent-id="rpip95c37d184e2f158ce900" data-target-for="rpip47819ca9aa5abe27ff8a">uint64_t </span><span class="memItemRight" data-target="true" id="rpip53044852bb53a4d8f1b3" data-parent-id="rpip95c37d184e2f158ce900" data-target-for="rpip53044852bb53a4d8f1b3"><a class="el" href="#ga523fd2399753e2e1c9ebeb3bbc3ad175" id="rpip27b53796f6cb13b2071b" data-adjusted="true">divmod_u64u64</a> (uint64_t a, uint64_t b)</span></p>
4250 </li>
4251 <li class="memdesc">
4252 <p data-target="true" data-target-for="rpip079593d19b28fa5113e3"><span class="mdescLeft" data-target="true" id="rpip43a533dbca8b46ba0119" data-parent-id="rpip079593d19b28fa5113e3" data-target-for="rpip43a533dbca8b46ba0119"> </span><span class="mdescRight" data-target="true" id="rpipd24072cb474efc9b11c5" data-parent-id="rpip079593d19b28fa5113e3" data-target-for="rpipd24072cb474efc9b11c5">Integer divide of two signed 64-bit values.  <br id="rpip40487b904928f4993893"></span></p>
4253 </li>
4254 <li class="memitem">
4255 <p data-target="true" data-target-for="rpipd5ba8ab1141cb81c5c8b"><span class="memItemLeft" data-target="true" id="rpip4a018f1ca2e23aa8fdf9" data-parent-id="rpipd5ba8ab1141cb81c5c8b" data-target-for="rpip4a018f1ca2e23aa8fdf9">int32_t </span><span class="memItemRight" data-target="true" id="rpip78d4e30e37b0851654f7" data-parent-id="rpipd5ba8ab1141cb81c5c8b" data-target-for="rpip78d4e30e37b0851654f7"><a class="el" href="#ga87e79e05c5490fcef2efb156a721fd6f" id="rpip0d292c17de651d8711a1" data-adjusted="true">div_s32s32_unsafe</a> (int32_t a, int32_t b)</span></p>
4256 </li>
4257 <li class="memdesc">
4258 <p data-target="true" data-target-for="rpip150b3fd5e5007c18c739"><span class="mdescLeft" data-target="true" id="rpipee3ce0eb38616fe1e632" data-parent-id="rpip150b3fd5e5007c18c739" data-target-for="rpipee3ce0eb38616fe1e632"> </span><span class="mdescRight" data-target="true" id="rpipa42f7958c87417b628f4" data-parent-id="rpip150b3fd5e5007c18c739" data-target-for="rpipa42f7958c87417b628f4">Unsafe integer divide of two signed 32-bit values.  <br id="rpip9c93f0a9768bdd2d3b81"></span></p>
4259 </li>
4260 <li class="memitem">
4261 <p data-target="true" data-target-for="rpip06922a217cd68ab793fe"><span class="memItemLeft" data-target="true" id="rpip23e938b82a826f29d918" data-parent-id="rpip06922a217cd68ab793fe" data-target-for="rpip23e938b82a826f29d918">int32_t </span><span class="memItemRight" data-target="true" id="rpipc1609411a23232639940" data-parent-id="rpip06922a217cd68ab793fe" data-target-for="rpipc1609411a23232639940"><a class="el" href="#ga18a5bbbeb6c84d0357d803b2c5b25039" id="rpip7f9a62d23a5d93b69062" data-adjusted="true">divmod_s32s32_rem_unsafe</a> (int32_t a, int32_t b, int32_t *rem)</span></p>
4262 </li>
4263 <li class="memdesc">
4264 <p data-target="true" data-target-for="rpip27ba3c4ac1937f733360"><span class="mdescLeft" data-target="true" id="rpipc60b91a14a8e31376478" data-parent-id="rpip27ba3c4ac1937f733360" data-target-for="rpipc60b91a14a8e31376478"> </span><span class="mdescRight" data-target="true" id="rpip9adfcbff69a202475c13" data-parent-id="rpip27ba3c4ac1937f733360" data-target-for="rpip9adfcbff69a202475c13">Unsafe integer divide of two signed 32-bit values, with remainder.  <br id="rpip860e05acb7fcc7a302f5"></span></p>
4265 </li>
4266 <li class="memitem">
4267 <p data-target="true" data-target-for="rpip1f5a3e40d041c702c163"><span class="memItemLeft" data-target="true" id="rpip80be4da747378e58bd72" data-parent-id="rpip1f5a3e40d041c702c163" data-target-for="rpip80be4da747378e58bd72">int64_t </span><span class="memItemRight" data-target="true" id="rpipa6561699310a1fa8b16d" data-parent-id="rpip1f5a3e40d041c702c163" data-target-for="rpipa6561699310a1fa8b16d"><a class="el" href="#ga832132d1124737c9316dac6c7fe5c752" id="rpip8abf6b99584ad6a303b0" data-adjusted="true">divmod_s32s32_unsafe</a> (int32_t a, int32_t b)</span></p>
4268 </li>
4269 <li class="memdesc">
4270 <p data-target="true" data-target-for="rpip0a1c10f0cbdc6b88ac0f"><span class="mdescLeft" data-target="true" id="rpipa2463c534dd41a7ebe04" data-parent-id="rpip0a1c10f0cbdc6b88ac0f" data-target-for="rpipa2463c534dd41a7ebe04"> </span><span class="mdescRight" data-target="true" id="rpipe2cbee5afc9df7c54c59" data-parent-id="rpip0a1c10f0cbdc6b88ac0f" data-target-for="rpipe2cbee5afc9df7c54c59">Unsafe integer divide of two unsigned 32-bit values.  <br id="rpipc6aa04ff59bbf2f66923"></span></p>
4271 </li>
4272 <li class="memitem">
4273 <p data-target="true" data-target-for="rpip3c0901f12cf2811ecdce"><span class="memItemLeft" data-target="true" id="rpip33d6b8bd5a506ecf4d7c" data-parent-id="rpip3c0901f12cf2811ecdce" data-target-for="rpip33d6b8bd5a506ecf4d7c">uint32_t </span><span class="memItemRight" data-target="true" id="rpip40319add9720588c62e5" data-parent-id="rpip3c0901f12cf2811ecdce" data-target-for="rpip40319add9720588c62e5"><a class="el" href="#gaf3c85d6165a3c2a16b7ecad9cf077a58" id="rpipfc75edcb72587226991d" data-adjusted="true">div_u32u32_unsafe</a> (uint32_t a, uint32_t b)</span></p>
4274 </li>
4275 <li class="memdesc">
4276 <p data-target="true" data-target-for="rpipa88206b5f021d015d0bf"><span class="mdescLeft" data-target="true" id="rpip9c02eb58d09fbf4f8d80" data-parent-id="rpipa88206b5f021d015d0bf" data-target-for="rpip9c02eb58d09fbf4f8d80"> </span><span class="mdescRight" data-target="true" id="rpip66258ad7c47616fbc9c7" data-parent-id="rpipa88206b5f021d015d0bf" data-target-for="rpip66258ad7c47616fbc9c7">Unsafe integer divide of two unsigned 32-bit values.  <br id="rpip209187d064b1655f0c69"></span></p>
4277 </li>
4278 <li class="memitem">
4279 <p data-target="true" data-target-for="rpip01f5a04fda260758e201"><span class="memItemLeft" data-target="true" id="rpipc1e22ee59abb97f81293" data-parent-id="rpip01f5a04fda260758e201" data-target-for="rpipc1e22ee59abb97f81293">uint32_t </span><span class="memItemRight" data-target="true" id="rpipf7381f2e637ce721361b" data-parent-id="rpip01f5a04fda260758e201" data-target-for="rpipf7381f2e637ce721361b"><a class="el" href="#ga110fad3fe5af8415e2c4bc4272c38591" id="rpipc8b8ba873075b9736950" data-adjusted="true">divmod_u32u32_rem_unsafe</a> (uint32_t a, uint32_t b, uint32_t *rem)</span></p>
4280 </li>
4281 <li class="memdesc">
4282 <p data-target="true" data-target-for="rpip82f2e0c2359beda1ba67"><span class="mdescLeft" data-target="true" id="rpip7fd0aa76390bba8b4afc" data-parent-id="rpip82f2e0c2359beda1ba67" data-target-for="rpip7fd0aa76390bba8b4afc"> </span><span class="mdescRight" data-target="true" id="rpipb8128c0554f55daef8d5" data-parent-id="rpip82f2e0c2359beda1ba67" data-target-for="rpipb8128c0554f55daef8d5">Unsafe integer divide of two unsigned 32-bit values, with remainder.  <br id="rpip017d9e4bcf8d9cf1ca51"></span></p>
4283 </li>
4284 <li class="memitem">
4285 <p data-target="true" data-target-for="rpipa47ef05970048f6a22bb"><span class="memItemLeft" data-target="true" id="rpip1c774028c9188dcc8482" data-parent-id="rpipa47ef05970048f6a22bb" data-target-for="rpip1c774028c9188dcc8482">uint64_t </span><span class="memItemRight" data-target="true" id="rpip5ece87577626586eed58" data-parent-id="rpipa47ef05970048f6a22bb" data-target-for="rpip5ece87577626586eed58"><a class="el" href="#gaca386ee7c507716df3a0b6c1d5ad6502" id="rpip6b3dc688f45eb422651c" data-adjusted="true">divmod_u32u32_unsafe</a> (uint32_t a, uint32_t b)</span></p>
4286 </li>
4287 <li class="memdesc">
4288 <p data-target="true" data-target-for="rpip40db00670ba6eceb9f61"><span class="mdescLeft" data-target="true" id="rpip3cdd2dc99f78ee554469" data-parent-id="rpip40db00670ba6eceb9f61" data-target-for="rpip3cdd2dc99f78ee554469"> </span><span class="mdescRight" data-target="true" id="rpip2f258a37b3cbaa9649a6" data-parent-id="rpip40db00670ba6eceb9f61" data-target-for="rpip2f258a37b3cbaa9649a6">Unsafe integer divide of two unsigned 32-bit values.  <br id="rpipb190e2c2eff742672971"></span></p>
4289 </li>
4290 <li class="memitem">
4291 <p data-target="true" data-target-for="rpip25d5d0dff603e9d969c9"><span class="memItemLeft" data-target="true" id="rpipb76c343897ceb2ae11ac" data-parent-id="rpip25d5d0dff603e9d969c9" data-target-for="rpipb76c343897ceb2ae11ac">int64_t </span><span class="memItemRight" data-target="true" id="rpip0d8c87ffd8d05bf581a4" data-parent-id="rpip25d5d0dff603e9d969c9" data-target-for="rpip0d8c87ffd8d05bf581a4"><a class="el" href="#gaf7847d0648463a6235c9e7844025d0fb" id="rpip56a8f2721688833b2ba2" data-adjusted="true">div_s64s64_unsafe</a> (int64_t a, int64_t b)</span></p>
4292 </li>
4293 <li class="memdesc">
4294 <p data-target="true" data-target-for="rpip44182243e40d50ab7531"><span class="mdescLeft" data-target="true" id="rpip12b1d9764ebb4f4cd055" data-parent-id="rpip44182243e40d50ab7531" data-target-for="rpip12b1d9764ebb4f4cd055"> </span><span class="mdescRight" data-target="true" id="rpip3ef423f4fb1cef388273" data-parent-id="rpip44182243e40d50ab7531" data-target-for="rpip3ef423f4fb1cef388273">Unsafe integer divide of two signed 64-bit values.  <br id="rpip7aa6f83a38476f6a6e83"></span></p>
4295 </li>
4296 <li class="memitem">
4297 <p data-target="true" data-target-for="rpipdfa47f84fa3ab8895b60"><span class="memItemLeft" data-target="true" id="rpip5eab5f9205411815d8ef" data-parent-id="rpipdfa47f84fa3ab8895b60" data-target-for="rpip5eab5f9205411815d8ef">int64_t </span><span class="memItemRight" data-target="true" id="rpip082fb36b5f529250d3a2" data-parent-id="rpipdfa47f84fa3ab8895b60" data-target-for="rpip082fb36b5f529250d3a2"><a class="el" href="#gacfbc03721cfa18f7f1865d0cb17a62f9" id="rpip76b72c5102198d502937" data-adjusted="true">divmod_s64s64_rem_unsafe</a> (int64_t a, int64_t b, int64_t *rem)</span></p>
4298 </li>
4299 <li class="memdesc">
4300 <p data-target="true" data-target-for="rpipfda3725e5f5e3d541c97"><span class="mdescLeft" data-target="true" id="rpipa3ff5b7a52c6c5d889dc" data-parent-id="rpipfda3725e5f5e3d541c97" data-target-for="rpipa3ff5b7a52c6c5d889dc"> </span><span class="mdescRight" data-target="true" id="rpip06a8c632fa0a47c7f0a7" data-parent-id="rpipfda3725e5f5e3d541c97" data-target-for="rpip06a8c632fa0a47c7f0a7">Unsafe integer divide of two signed 64-bit values, with remainder.  <br id="rpipe7b228572d3bc3b2e7f9"></span></p>
4301 </li>
4302 <li class="memitem">
4303 <p data-target="true" data-target-for="rpipc4baf2a0e8ec9bbbe3a2"><span class="memItemLeft" data-target="true" id="rpip8bc756aa87e1adc655d1" data-parent-id="rpipc4baf2a0e8ec9bbbe3a2" data-target-for="rpip8bc756aa87e1adc655d1">int64_t </span><span class="memItemRight" data-target="true" id="rpipdde8bf221e093e33539f" data-parent-id="rpipc4baf2a0e8ec9bbbe3a2" data-target-for="rpipdde8bf221e093e33539f"><a class="el" href="#ga47233b8d21888b733c5f271fdf290a33" id="rpipa5a06fdda0c10c46f5f6" data-adjusted="true">divmod_s64s64_unsafe</a> (int64_t a, int64_t b)</span></p>
4304 </li>
4305 <li class="memdesc">
4306 <p data-target="true" data-target-for="rpip5bece41a0b98af8d7a8a"><span class="mdescLeft" data-target="true" id="rpip2929c193fe730f86f8a1" data-parent-id="rpip5bece41a0b98af8d7a8a" data-target-for="rpip2929c193fe730f86f8a1"> </span><span class="mdescRight" data-target="true" id="rpipc456f945d082cc20ac85" data-parent-id="rpip5bece41a0b98af8d7a8a" data-target-for="rpipc456f945d082cc20ac85">Unsafe integer divide of two signed 64-bit values.  <br id="rpip793db437d034563b47ae"></span></p>
4307 </li>
4308 <li class="memitem">
4309 <p data-target="true" data-target-for="rpipb31888aed10ed2856a4b"><span class="memItemLeft" data-target="true" id="rpipc08341b400abe0d7c5e0" data-parent-id="rpipb31888aed10ed2856a4b" data-target-for="rpipc08341b400abe0d7c5e0">uint64_t </span><span class="memItemRight" data-target="true" id="rpipbde8627f06f819335494" data-parent-id="rpipb31888aed10ed2856a4b" data-target-for="rpipbde8627f06f819335494"><a class="el" href="#ga5ef2b5c7b1e6f12573ec35cbc822ab5a" id="rpip3c089e3e57bdba1a44d3" data-adjusted="true">div_u64u64_unsafe</a> (uint64_t a, uint64_t b)</span></p>
4310 </li>
4311 <li class="memdesc">
4312 <p data-target="true" data-target-for="rpipb416285f35174ff903f7"><span class="mdescLeft" data-target="true" id="rpipe4a17714408a6684ebc7" data-parent-id="rpipb416285f35174ff903f7" data-target-for="rpipe4a17714408a6684ebc7"> </span><span class="mdescRight" data-target="true" id="rpip38c7fb58b10a26f2696b" data-parent-id="rpipb416285f35174ff903f7" data-target-for="rpip38c7fb58b10a26f2696b">Unsafe integer divide of two unsigned 64-bit values.  <br id="rpip24571b7e109da166e932"></span></p>
4313 </li>
4314 <li class="memitem">
4315 <p data-target="true" data-target-for="rpip143f73c852223d536452"><span class="memItemLeft" data-target="true" id="rpip30045eecf5188b2d139b" data-parent-id="rpip143f73c852223d536452" data-target-for="rpip30045eecf5188b2d139b">uint64_t </span><span class="memItemRight" data-target="true" id="rpip8a21d6182ea8cf64f644" data-parent-id="rpip143f73c852223d536452" data-target-for="rpip8a21d6182ea8cf64f644"><a class="el" href="#ga9f37bfee18ba829fe4249b309dcb4fad" id="rpipc0e90d1a2b09def10c12" data-adjusted="true">divmod_u64u64_rem_unsafe</a> (uint64_t a, uint64_t b, uint64_t *rem)</span></p>
4316 </li>
4317 <li class="memdesc">
4318 <p data-target="true" data-target-for="rpipe1f01b7cddcfaefcf014"><span class="mdescLeft" data-target="true" id="rpipc6f6e89421c28d14649f" data-parent-id="rpipe1f01b7cddcfaefcf014" data-target-for="rpipc6f6e89421c28d14649f"> </span><span class="mdescRight" data-target="true" id="rpip9a23210614ed91a06630" data-parent-id="rpipe1f01b7cddcfaefcf014" data-target-for="rpip9a23210614ed91a06630">Unsafe integer divide of two unsigned 64-bit values, with remainder.  <br id="rpipfd8870786370246fcd73"></span></p>
4319 </li>
4320 <li class="memitem">
4321 <p data-target="true" data-target-for="rpipe52451f346d3a6d75182"><span class="memItemLeft" data-target="true" id="rpipb5602c2845bf5c2265d8" data-parent-id="rpipe52451f346d3a6d75182" data-target-for="rpipb5602c2845bf5c2265d8">uint64_t </span><span class="memItemRight" data-target="true" id="rpip2c6843add8c25e702c39" data-parent-id="rpipe52451f346d3a6d75182" data-target-for="rpip2c6843add8c25e702c39"><a class="el" href="#ga18f537358cd342a32fa6781e7ca4b475" id="rpip3d3a97d84becf1e8cf36" data-adjusted="true">divmod_u64u64_unsafe</a> (uint64_t a, uint64_t b)</span></p>
4322 </li>
4323 <li class="memdesc">
4324 <p data-target="true" data-target-for="rpipe7dc5ea6b62f81f8d5b7"><span class="mdescLeft" data-target="true" id="rpipc12d2cffa2b53721d08d" data-parent-id="rpipe7dc5ea6b62f81f8d5b7" data-target-for="rpipc12d2cffa2b53721d08d"> </span><span class="mdescRight" data-target="true" id="rpip1241e7f25b84f14789a3" data-parent-id="rpipe7dc5ea6b62f81f8d5b7" data-target-for="rpip1241e7f25b84f14789a3">Unsafe integer divide of two signed 64-bit values.  <br id="rpipfa0c2dff04adc95b025b"></span></p>
4325 </li>
4326 </ul>
4327 <a name="details" id="details"></a>
4328 </div>
4329 <div class="sect2">
4330 <h3 id="rpip108233463d1122628ba9">
4331 <a class="anchor" href="#rpip108233463d1122628ba9"></a>Detailed Description</h3>
4332 <p id="rpip9007b2d59f2c84ad9258">Optimized 32 and 64 bit division functions accelerated by the RP2040 hardware divider. Additionally provides integration with the C <code id="rpipa22c5ae32a7cd960103b">/</code> and <code id="rpipf2cf2b111a6504ead432">%</code> operators </p>
4333 </div>
4334 <div class="sect2">
4335 <h3 id="rpip0d33c4d7c6e0d08667ce">
4336 <a class="anchor" href="#rpip0d33c4d7c6e0d08667ce"></a>Function Documentation</h3>
4337 <a id="ga60b86237e096a13f871015a28dceb88a" name="ga60b86237e096a13f871015a28dceb88a"></a>
4338 <div class="sect3">
4339 <h4 id="rpipe8e5f9579e47bc344ad9">
4340 <a class="anchor" href="#rpipe8e5f9579e47bc344ad9"></a>◆ div_s32s32()</h4>
4341 <div class="memitem" id="rpip207adecdc76b9e893aef">
4342 <div class="memproto" id="rpip6f5eb4c711bc264c1957">
4343       <table class="memname" id="rpipb64c8b5797fe26b652a3">
4344         <tr id="rpip89c3760b5b6a9d53d251">
4345           <td class="memname" id="rpip5f37df00a5db1bcfefd4">int32_t div_s32s32 </td>
4346           <td id="rpip7b9f8389f216a2138974">(</td>
4347           <td class="paramtype" id="rpipcf374a86c522a156500c">int32_t </td>
4348           <td class="paramname" id="rpip85e6915acc06ae306494">
4349 <em id="rpip438e412666f42e203f51">a</em>, </td>
4350         </tr>
4351         <tr id="rpip4a11f658b1473bb93a17">
4352           <td class="paramkey" id="rpipc8e76df3a6d4e4f4cfaa"></td>
4353           <td id="rpip091fe833f71096155a09"></td>
4354           <td class="paramtype" id="rpip28a7ba681df0d4d25a5e">int32_t </td>
4355           <td class="paramname" id="rpip2fb77486a198444949c2">
4356 <em id="rpipf5efde9e549d72ada83c">b</em> </td>
4357         </tr>
4358         <tr id="rpipa80722d4029a2477a211">
4359           <td id="rpip35108f567c73f68b7b8c"></td>
4360           <td id="rpipb610fdd56cc6b3fa26d4">)</td>
4361           <td id="rpip3f22a2cb9d80d38d40da"></td>
4362 <td id="rpipe2be8d1c930e3e842af2"></td>
4363         </tr>
4364       </table>
4365 </div>
4366 <div class="memdoc" id="rpip952b41fb5070bbb0bd82">
4367
4368 <p id="rpip596a3cef5cf659086564">Integer divide of two signed 32-bit values. </p>
4369 <h4 id="rpip2e2e4a1e4d0947d48ae2" data-parent-id="rpip3b183305d8e9c685705b" data-target-for="rpip2e2e4a1e4d0947d48ae2">Parameters</h4>
4370 <p class="paragraph" id="rpip34be09b7b6cdd86a16ad" data-parent-id="rpip3b183305d8e9c685705b" data-target-for="rpip34be09b7b6cdd86a16ad">
4371   </p>
4372 <table class="params" id="rpip1dba4b750372e36c15f7">
4373     <tr id="rpip0009cb3d9e3a78d30d87">
4374 <td class="paramname" id="rpipe475f1e48be5a8e84fb0">a</td>
4375 <td id="rpip4f6745408fa7a6718611">Dividend </td>
4376 </tr>
4377     <tr id="rpip8e0da879090726ba69d2">
4378 <td class="paramname" id="rpip0806eb94fd95b1405d50">b</td>
4379 <td id="rpipf18b47a0f6438b736468">Divisor </td>
4380 </tr>
4381   </table>
4382   
4383
4384
4385 <h4 class="label" id="rpipd6c5847970b0e1c3f1e2" data-parent-id="rpip9d55d3e5904f88480975" data-target-for="rpipd6c5847970b0e1c3f1e2">Returns</h4>
4386 <p class="returns" id="rpip0d80cd0b7266cf4ebba1" data-parent-id="rpip9d55d3e5904f88480975" data-target-for="rpip0d80cd0b7266cf4ebba1">quotient </p>
4387
4388 </div>
4389 </div>
4390 <a id="ga87e79e05c5490fcef2efb156a721fd6f" name="ga87e79e05c5490fcef2efb156a721fd6f"></a>
4391 </div>
4392 <div class="sect3">
4393 <h4 id="rpip314036aad4f12ca76af3">
4394 <a class="anchor" href="#rpip314036aad4f12ca76af3"></a>◆ div_s32s32_unsafe()</h4>
4395 <div class="memitem" id="rpip4599c7c4a9a7b7b2db55">
4396 <div class="memproto" id="rpip230fcc92b87528e557de">
4397       <table class="memname" id="rpip113edcb5a39328299705">
4398         <tr id="rpipbb7dce9ad330e8eaeb48">
4399           <td class="memname" id="rpip7664ca5d1ec7a23db088">int32_t div_s32s32_unsafe </td>
4400           <td id="rpip6cd0bd3b7094bc87b81c">(</td>
4401           <td class="paramtype" id="rpip7a91555b5935b1fd3009">int32_t </td>
4402           <td class="paramname" id="rpipef6880eeacdbf70380dd">
4403 <em id="rpipacbc8252664e910354a0">a</em>, </td>
4404         </tr>
4405         <tr id="rpipdb5796fc0af356eec415">
4406           <td class="paramkey" id="rpip3f271e5e6cbb5e22b7b9"></td>
4407           <td id="rpipf7d9dcbce93f5ee598fd"></td>
4408           <td class="paramtype" id="rpip87eb85c52c705b2a4ce1">int32_t </td>
4409           <td class="paramname" id="rpip9e7fc988168218766c0f">
4410 <em id="rpipc4d0e9e788d4b72303a4">b</em> </td>
4411         </tr>
4412         <tr id="rpip15bd4c2140bc0e73413a">
4413           <td id="rpip15396a60abef58c4d123"></td>
4414           <td id="rpip8e610ae52cf48190a8d3">)</td>
4415           <td id="rpip14fa0d21d5dbef30c847"></td>
4416 <td id="rpip3530ab148c510da98a6c"></td>
4417         </tr>
4418       </table>
4419 </div>
4420 <div class="memdoc" id="rpiped8d8d56628c4adf18c4">
4421
4422 <p id="rpipe193a6674c231ebcf7e7">Unsafe integer divide of two signed 32-bit values. </p>
4423 <h4 id="rpip18bd52bb81888889c550" data-parent-id="rpipf3d46dab6f23cd12dbd6" data-target-for="rpip18bd52bb81888889c550">Parameters</h4>
4424 <p class="paragraph" id="rpipd8120b8e54adeba20301" data-parent-id="rpipf3d46dab6f23cd12dbd6" data-target-for="rpipd8120b8e54adeba20301">
4425   </p>
4426 <table class="params" id="rpip6ca15d29a9059afd6c24">
4427     <tr id="rpipcf01467973adb9a59146">
4428 <td class="paramname" id="rpip5fe4096f84847b5258e9">a</td>
4429 <td id="rpip381000eb2412dcf2842d">Dividend </td>
4430 </tr>
4431     <tr id="rpipbd1be9a7bb1d126aaafb">
4432 <td class="paramname" id="rpip79041b5ca25b3794fa56">b</td>
4433 <td id="rpip078f931161059f876fbc">Divisor </td>
4434 </tr>
4435   </table>
4436   
4437
4438
4439 <h4 class="label" id="rpipf00666876065cc8b7677" data-parent-id="rpip39a621e68bf5b70127f5" data-target-for="rpipf00666876065cc8b7677">Returns</h4>
4440 <p class="returns" id="rpipabb84ea23f5764c4d9c0" data-parent-id="rpip39a621e68bf5b70127f5" data-target-for="rpipabb84ea23f5764c4d9c0">quotient</p>
4441 <p id="rpip0d9b5ecc4570f3be9c41">Do not use in interrupts </p>
4442
4443 </div>
4444 </div>
4445 <a id="ga053ab24ac7d6145b0229a6c111cb9d1b" name="ga053ab24ac7d6145b0229a6c111cb9d1b"></a>
4446 </div>
4447 <div class="sect3">
4448 <h4 id="rpipc2c1c1d8624aed88bde6">
4449 <a class="anchor" href="#rpipc2c1c1d8624aed88bde6"></a>◆ div_s64s64()</h4>
4450 <div class="memitem" id="rpipa530e8b5030fa7c5335b">
4451 <div class="memproto" id="rpipd008851731247969ea00">
4452       <table class="memname" id="rpip37ef2289f319ce1216d8">
4453         <tr id="rpip6d6e7ac8427adef248a9">
4454           <td class="memname" id="rpip9816274fcc74f51c1c00">int64_t div_s64s64 </td>
4455           <td id="rpip148fbba2e4d23242a788">(</td>
4456           <td class="paramtype" id="rpipce447331e8e0abab151b">int64_t </td>
4457           <td class="paramname" id="rpip183c76124d0bb03ae96f">
4458 <em id="rpip3b315865ce1081ad6d2c">a</em>, </td>
4459         </tr>
4460         <tr id="rpip065ce13e7590523b46da">
4461           <td class="paramkey" id="rpipf488469fe5dfa3ecb7ba"></td>
4462           <td id="rpip4dfee74b41b16883114d"></td>
4463           <td class="paramtype" id="rpip0760e13629d0503dc4ab">int64_t </td>
4464           <td class="paramname" id="rpip334f3bb112fd319a07c7">
4465 <em id="rpip4ee14abd031af3046731">b</em> </td>
4466         </tr>
4467         <tr id="rpip3815a7aa52b88bfba85a">
4468           <td id="rpipc2dd8f198f843ef4b374"></td>
4469           <td id="rpip13ab1e6657c197885a42">)</td>
4470           <td id="rpip611cd7c8d744cdd82d71"></td>
4471 <td id="rpip03cbf02f3534b33bdd61"></td>
4472         </tr>
4473       </table>
4474 </div>
4475 <div class="memdoc" id="rpip1a27fe7bcb8859b8cad0">
4476
4477 <p id="rpip44dfa29dcec104a80136">Integer divide of two signed 64-bit values. </p>
4478 <h4 id="rpip9548e1fa2bdfefdbde61" data-parent-id="rpip023a12dad9fffa7a85dd" data-target-for="rpip9548e1fa2bdfefdbde61">Parameters</h4>
4479 <p class="paragraph" id="rpip0239924aeeb4f81286ae" data-parent-id="rpip023a12dad9fffa7a85dd" data-target-for="rpip0239924aeeb4f81286ae">
4480   </p>
4481 <table class="params" id="rpip418a8eda7dc09e7cdc10">
4482     <tr id="rpipa72354bc47190adaf14b">
4483 <td class="paramname" id="rpipa6344f6801923b2486fb">a</td>
4484 <td id="rpip51e480ab1773462d2cac">Dividend </td>
4485 </tr>
4486     <tr id="rpipd246679ab28fb7635085">
4487 <td class="paramname" id="rpip66888e29d345eaf9ec6a">b</td>
4488 <td id="rpipf9affd2584996fd408ef">Divisor </td>
4489 </tr>
4490   </table>
4491   
4492
4493
4494 <h4 class="label" id="rpipe3382199b22c3ddb8934" data-parent-id="rpipee5f13d9c4f28249c061" data-target-for="rpipe3382199b22c3ddb8934">Returns</h4>
4495 <p class="returns" id="rpip3a2983405e1cb63be6fe" data-parent-id="rpipee5f13d9c4f28249c061" data-target-for="rpip3a2983405e1cb63be6fe">Quotient </p>
4496
4497 </div>
4498 </div>
4499 <a id="gaf7847d0648463a6235c9e7844025d0fb" name="gaf7847d0648463a6235c9e7844025d0fb"></a>
4500 </div>
4501 <div class="sect3">
4502 <h4 id="rpip9e8d7e2162d9cad86946">
4503 <a class="anchor" href="#rpip9e8d7e2162d9cad86946"></a>◆ div_s64s64_unsafe()</h4>
4504 <div class="memitem" id="rpip3dead40b1dd88f358727">
4505 <div class="memproto" id="rpip870c1ec3f3060c1ea85f">
4506       <table class="memname" id="rpip00d37d72c3556b4408b3">
4507         <tr id="rpip62e2b798cd97c6617fc4">
4508           <td class="memname" id="rpip6dc1cc3818bfb6c5074e">int64_t div_s64s64_unsafe </td>
4509           <td id="rpipd3890808a8c71530ca5e">(</td>
4510           <td class="paramtype" id="rpip406b81997cd5530174f7">int64_t </td>
4511           <td class="paramname" id="rpipb5c50e83292da3a8d5de">
4512 <em id="rpip67267b17114cc66017f3">a</em>, </td>
4513         </tr>
4514         <tr id="rpip3a555d42ef5cb518b277">
4515           <td class="paramkey" id="rpipa316ad2b641e7e30aac9"></td>
4516           <td id="rpip7393deb0871172f11a7d"></td>
4517           <td class="paramtype" id="rpip6190a6366b11300457ce">int64_t </td>
4518           <td class="paramname" id="rpipbfd8ff6547612af30389">
4519 <em id="rpip1fbacab803bea27c9e56">b</em> </td>
4520         </tr>
4521         <tr id="rpip20ef014b6f2b2e3e1a1e">
4522           <td id="rpipfbd3719da9c1be4709e6"></td>
4523           <td id="rpipc22927dc6cfe679cb1fd">)</td>
4524           <td id="rpipa4355ab71c90ee3ba73b"></td>
4525 <td id="rpip0de9cd9d86052cbde290"></td>
4526         </tr>
4527       </table>
4528 </div>
4529 <div class="memdoc" id="rpip5221335d46ef75fd36bd">
4530
4531 <p id="rpip8fd86f3ecb7899cd0351">Unsafe integer divide of two signed 64-bit values. </p>
4532 <h4 id="rpipf587f996e768dd46e33d" data-parent-id="rpip6171215db341f7e3c4b9" data-target-for="rpipf587f996e768dd46e33d">Parameters</h4>
4533 <p class="paragraph" id="rpip61bcbb1fced6e01b36e8" data-parent-id="rpip6171215db341f7e3c4b9" data-target-for="rpip61bcbb1fced6e01b36e8">
4534   </p>
4535 <table class="params" id="rpipb74ca37381b210016176">
4536     <tr id="rpip7955e6ab3b938d4fdebc">
4537 <td class="paramname" id="rpip33b4180d7ba9bdac34dd">a</td>
4538 <td id="rpip57bab414e60e5b62cbca">Dividend </td>
4539 </tr>
4540     <tr id="rpipabcbf3041e3a4e8cbba4">
4541 <td class="paramname" id="rpipbc511c04d1872fbb7438">b</td>
4542 <td id="rpipeb1a9bc4a3fd5b109f95">Divisor </td>
4543 </tr>
4544   </table>
4545   
4546
4547
4548 <h4 class="label" id="rpip79cc4d86991b11b2a7c6" data-parent-id="rpip00d93b6078775665e592" data-target-for="rpip79cc4d86991b11b2a7c6">Returns</h4>
4549 <p class="returns" id="rpipe01862ccec8003244baf" data-parent-id="rpip00d93b6078775665e592" data-target-for="rpipe01862ccec8003244baf">Quotient</p>
4550 <p id="rpipd4fa7e3109621af32b2a">Do not use in interrupts </p>
4551
4552 </div>
4553 </div>
4554 <a id="ga9f9526e8653805bf2fe737afd4e490da" name="ga9f9526e8653805bf2fe737afd4e490da"></a>
4555 </div>
4556 <div class="sect3">
4557 <h4 id="rpip23ce98da15c71e43e830">
4558 <a class="anchor" href="#rpip23ce98da15c71e43e830"></a>◆ div_u32u32()</h4>
4559 <div class="memitem" id="rpip2d25afc85867e4e34812">
4560 <div class="memproto" id="rpip3b7e12a727bd3cf0ca1b">
4561       <table class="memname" id="rpipe2e5f52d2801ab4a29e9">
4562         <tr id="rpip48438ecc7a19f1d05d2e">
4563           <td class="memname" id="rpipadd5836a4dcae3ee6f8b">uint32_t div_u32u32 </td>
4564           <td id="rpipde577c748aa419d33663">(</td>
4565           <td class="paramtype" id="rpip891b67d423cca24a845b">uint32_t </td>
4566           <td class="paramname" id="rpip3bd1d4da5475bc904c78">
4567 <em id="rpip321ff210a0acec5a54f6">a</em>, </td>
4568         </tr>
4569         <tr id="rpip556cac33114b553e6958">
4570           <td class="paramkey" id="rpip321843a599fcef41391f"></td>
4571           <td id="rpip3c4f0e2ebef58e8b6329"></td>
4572           <td class="paramtype" id="rpipd23a92ba0241c37b2e04">uint32_t </td>
4573           <td class="paramname" id="rpip49aea86d5fc7c4d1d1aa">
4574 <em id="rpip365428d3cd586ca69a32">b</em> </td>
4575         </tr>
4576         <tr id="rpip911ccd1a3a9bd5f6e998">
4577           <td id="rpipb1e33e0973cd00d9d353"></td>
4578           <td id="rpip8463057f332c7076bdaf">)</td>
4579           <td id="rpip3f8d6167dd43fbfe85ff"></td>
4580 <td id="rpip608dfd0160faa8576295"></td>
4581         </tr>
4582       </table>
4583 </div>
4584 <div class="memdoc" id="rpip83a6e048b6c601c16cae">
4585
4586 <p id="rpip67f7560dfe376d026215">Integer divide of two unsigned 32-bit values. </p>
4587 <h4 id="rpip7c9e549462578e995c63" data-parent-id="rpip33ee9d4de896c081091e" data-target-for="rpip7c9e549462578e995c63">Parameters</h4>
4588 <p class="paragraph" id="rpip319ff066a34d9929b9b0" data-parent-id="rpip33ee9d4de896c081091e" data-target-for="rpip319ff066a34d9929b9b0">
4589   </p>
4590 <table class="params" id="rpipbb4c77911c0b69e79879">
4591     <tr id="rpip5df79b4b13e84bb44788">
4592 <td class="paramname" id="rpip2ec188f561935fd5d698">a</td>
4593 <td id="rpipc59ef76560fc6c344ed4">Dividend </td>
4594 </tr>
4595     <tr id="rpip92df5dc4c18d59098482">
4596 <td class="paramname" id="rpip78cc3f5deb48aa11db9a">b</td>
4597 <td id="rpip77b5f91a801e07349dca">Divisor </td>
4598 </tr>
4599   </table>
4600   
4601
4602
4603 <h4 class="label" id="rpipff5a8a2ce9ad5b219746" data-parent-id="rpipdd63159fc8b44c012cbc" data-target-for="rpipff5a8a2ce9ad5b219746">Returns</h4>
4604 <p class="returns" id="rpip831048792326057bb7f3" data-parent-id="rpipdd63159fc8b44c012cbc" data-target-for="rpip831048792326057bb7f3">Quotient </p>
4605
4606 </div>
4607 </div>
4608 <a id="gaf3c85d6165a3c2a16b7ecad9cf077a58" name="gaf3c85d6165a3c2a16b7ecad9cf077a58"></a>
4609 </div>
4610 <div class="sect3">
4611 <h4 id="rpip20b95a96225fb2d45e43">
4612 <a class="anchor" href="#rpip20b95a96225fb2d45e43"></a>◆ div_u32u32_unsafe()</h4>
4613 <div class="memitem" id="rpipc03de5582d499d2a1e61">
4614 <div class="memproto" id="rpip3618f40573aa056e9554">
4615       <table class="memname" id="rpipd8f0784d1e038f6b6920">
4616         <tr id="rpip686f6bc7be2ea7af17a2">
4617           <td class="memname" id="rpipe33e8c14a4377c772d1d">uint32_t div_u32u32_unsafe </td>
4618           <td id="rpip2ae1997584eae602eb05">(</td>
4619           <td class="paramtype" id="rpip78d22d75f07498f4611f">uint32_t </td>
4620           <td class="paramname" id="rpipb9c7735d416515cc229e">
4621 <em id="rpipa4f7407cdd5cad05e7d6">a</em>, </td>
4622         </tr>
4623         <tr id="rpip5af1b12253322ca6eb68">
4624           <td class="paramkey" id="rpip874480aadd789ee0f69d"></td>
4625           <td id="rpip8f3c6da87e4b33e6ef98"></td>
4626           <td class="paramtype" id="rpip09d5a16d0a3dc987947b">uint32_t </td>
4627           <td class="paramname" id="rpip6431bdb024712c6b89c9">
4628 <em id="rpip92311324191f850422e0">b</em> </td>
4629         </tr>
4630         <tr id="rpipb89045582c83e6ab00ac">
4631           <td id="rpip9e8f34e2c96fe1f5e04f"></td>
4632           <td id="rpipf0413e68384105b9101a">)</td>
4633           <td id="rpip084781bb792be2d7a86c"></td>
4634 <td id="rpipa6f15adc3981f4a6d75c"></td>
4635         </tr>
4636       </table>
4637 </div>
4638 <div class="memdoc" id="rpipaadbd7066b57722ca410">
4639
4640 <p id="rpip219dfeab8fc30773f167">Unsafe integer divide of two unsigned 32-bit values. </p>
4641 <h4 id="rpip2b057b9bdd7f073c3f6d" data-parent-id="rpipa23371824c64ab7a2026" data-target-for="rpip2b057b9bdd7f073c3f6d">Parameters</h4>
4642 <p class="paragraph" id="rpip7a50b2f0b5515a37532e" data-parent-id="rpipa23371824c64ab7a2026" data-target-for="rpip7a50b2f0b5515a37532e">
4643   </p>
4644 <table class="params" id="rpip723a6886ec45c49181c1">
4645     <tr id="rpipd9f547b0c0a885ab19cd">
4646 <td class="paramname" id="rpipe16def6a5d2bd77e5152">a</td>
4647 <td id="rpip30903a66026fd450e5ae">Dividend </td>
4648 </tr>
4649     <tr id="rpip6fe6b6073dab54e1743e">
4650 <td class="paramname" id="rpipb0b81d6fbf10aaf1c801">b</td>
4651 <td id="rpip669626edc32378382577">Divisor </td>
4652 </tr>
4653   </table>
4654   
4655
4656
4657 <h4 class="label" id="rpip9e9f7c01bdda5f267b26" data-parent-id="rpipbae962cbb1da8cede424" data-target-for="rpip9e9f7c01bdda5f267b26">Returns</h4>
4658 <p class="returns" id="rpip8e0484ebef3c377bc059" data-parent-id="rpipbae962cbb1da8cede424" data-target-for="rpip8e0484ebef3c377bc059">Quotient</p>
4659 <p id="rpip39d72c6d4b53a6d72fcf">Do not use in interrupts </p>
4660
4661 </div>
4662 </div>
4663 <a id="ga3004f0218e26a762031ec7ed3c369ad1" name="ga3004f0218e26a762031ec7ed3c369ad1"></a>
4664 </div>
4665 <div class="sect3">
4666 <h4 id="rpip147112012a542da0f815">
4667 <a class="anchor" href="#rpip147112012a542da0f815"></a>◆ div_u64u64()</h4>
4668 <div class="memitem" id="rpip7ab399ea73257521ce78">
4669 <div class="memproto" id="rpipa8c4a631c9c701f6087d">
4670       <table class="memname" id="rpipda3589e04dd787ad5059">
4671         <tr id="rpipdda89e1654d2eac9c1ce">
4672           <td class="memname" id="rpip161ea347c2147dce01ff">uint64_t div_u64u64 </td>
4673           <td id="rpip1d5b445d71e017943a24">(</td>
4674           <td class="paramtype" id="rpipe85172815baaf5929cd4">uint64_t </td>
4675           <td class="paramname" id="rpip2aad079dd98931c485ae">
4676 <em id="rpip26c0a9fb5afc70d140e7">a</em>, </td>
4677         </tr>
4678         <tr id="rpipebcaff535ed7fac1f04c">
4679           <td class="paramkey" id="rpip9bb6674b442ef57b8c9a"></td>
4680           <td id="rpipf8569d00af0cf5a0083e"></td>
4681           <td class="paramtype" id="rpipb29422f4e544d01013cb">uint64_t </td>
4682           <td class="paramname" id="rpip7fd2f1241c7c9fd3a945">
4683 <em id="rpip41ef4b70b6df7723bab3">b</em> </td>
4684         </tr>
4685         <tr id="rpip0b9e6ee9dc12068a243c">
4686           <td id="rpip6cd63fb2d383273fe10b"></td>
4687           <td id="rpipa01a1a5cc1de519c3b16">)</td>
4688           <td id="rpip9e1642fb88116131e1ee"></td>
4689 <td id="rpip54821dcf5fc5d03f0219"></td>
4690         </tr>
4691       </table>
4692 </div>
4693 <div class="memdoc" id="rpipa32e7c73a260c1d82e9d">
4694
4695 <p id="rpipcfebae3dab4f8face3d0">Integer divide of two unsigned 64-bit values. </p>
4696 <h4 id="rpip9003e8b34695a8d40f83" data-parent-id="rpip505d310ddf323a65f5eb" data-target-for="rpip9003e8b34695a8d40f83">Parameters</h4>
4697 <p class="paragraph" id="rpipd0913eebdda503b63935" data-parent-id="rpip505d310ddf323a65f5eb" data-target-for="rpipd0913eebdda503b63935">
4698   </p>
4699 <table class="params" id="rpip93bc2d63ba2b45053c0c">
4700     <tr id="rpip296564384142a86d5de2">
4701 <td class="paramname" id="rpip90f48824d9d0d63b7c06">a</td>
4702 <td id="rpip4e9dc2f614b0a88ed2e3">Dividend </td>
4703 </tr>
4704     <tr id="rpip6d8c0655367d6b32f66b">
4705 <td class="paramname" id="rpipb35ce3343a85333bf9c4">b</td>
4706 <td id="rpip9bbf608dca9e765ab345">Divisor </td>
4707 </tr>
4708   </table>
4709   
4710
4711
4712 <h4 class="label" id="rpipa7300fde46a4acd5d40e" data-parent-id="rpip43d40337b93fff03f244" data-target-for="rpipa7300fde46a4acd5d40e">Returns</h4>
4713 <p class="returns" id="rpip5a17b773d5d5d137a197" data-parent-id="rpip43d40337b93fff03f244" data-target-for="rpip5a17b773d5d5d137a197">Quotient </p>
4714
4715 </div>
4716 </div>
4717 <a id="ga5ef2b5c7b1e6f12573ec35cbc822ab5a" name="ga5ef2b5c7b1e6f12573ec35cbc822ab5a"></a>
4718 </div>
4719 <div class="sect3">
4720 <h4 id="rpip8a1b2188f2e72c074555">
4721 <a class="anchor" href="#rpip8a1b2188f2e72c074555"></a>◆ div_u64u64_unsafe()</h4>
4722 <div class="memitem" id="rpipfe7d92000fce38d84ea5">
4723 <div class="memproto" id="rpip51773ad848a5b1bf6780">
4724       <table class="memname" id="rpipc859b7d5f76f6bd1bde7">
4725         <tr id="rpipd9bbdd4163c4166c7bf0">
4726           <td class="memname" id="rpipa3364680b71a1d5d2c55">uint64_t div_u64u64_unsafe </td>
4727           <td id="rpip08e4adacc769d55f03fb">(</td>
4728           <td class="paramtype" id="rpip233679a9102ac61ac750">uint64_t </td>
4729           <td class="paramname" id="rpip8f55b940d908b75e6211">
4730 <em id="rpip52b5932bf39550c959c5">a</em>, </td>
4731         </tr>
4732         <tr id="rpip56fbdc7a706952cefdaf">
4733           <td class="paramkey" id="rpip9145f353071ea633478a"></td>
4734           <td id="rpip73eacfe9eefb2b577801"></td>
4735           <td class="paramtype" id="rpipc159ef3e52d7aeaca515">uint64_t </td>
4736           <td class="paramname" id="rpip6090ff0e91b6b4ce3811">
4737 <em id="rpipa2d5e0b5c3be5222d262">b</em> </td>
4738         </tr>
4739         <tr id="rpipc5c42912162a30919b57">
4740           <td id="rpip7749e41e0b46713b7899"></td>
4741           <td id="rpip4f8ef68eeaaa911f5f6f">)</td>
4742           <td id="rpipd741cb74ed1eeffee3ae"></td>
4743 <td id="rpip8478c365676bb973e09a"></td>
4744         </tr>
4745       </table>
4746 </div>
4747 <div class="memdoc" id="rpip7c3f34743a04a5c88121">
4748
4749 <p id="rpip1ecc0ac01c765f1f738e">Unsafe integer divide of two unsigned 64-bit values. </p>
4750 <h4 id="rpipcda24a737a799daa6fb9" data-parent-id="rpip99566852434e3ca80809" data-target-for="rpipcda24a737a799daa6fb9">Parameters</h4>
4751 <p class="paragraph" id="rpip7fba58b3966b0980e8e1" data-parent-id="rpip99566852434e3ca80809" data-target-for="rpip7fba58b3966b0980e8e1">
4752   </p>
4753 <table class="params" id="rpip4c2d43c3e7ec7671f688">
4754     <tr id="rpip276ef6708ff5230565c5">
4755 <td class="paramname" id="rpipbfb61808311a62087ffa">a</td>
4756 <td id="rpip7a32e34d63b6267e10be">Dividend </td>
4757 </tr>
4758     <tr id="rpipc3adf8ae8a3cc36754e4">
4759 <td class="paramname" id="rpip940e45854b63121ee9d1">b</td>
4760 <td id="rpipf202de0572863fc2793c">Divisor </td>
4761 </tr>
4762   </table>
4763   
4764
4765
4766 <h4 class="label" id="rpip065eacfa37c69ee551c2" data-parent-id="rpipe717be321d913981e60b" data-target-for="rpip065eacfa37c69ee551c2">Returns</h4>
4767 <p class="returns" id="rpip1220b585fc97050a2c7c" data-parent-id="rpipe717be321d913981e60b" data-target-for="rpip1220b585fc97050a2c7c">Quotient</p>
4768 <p id="rpip7a99df9a4b3fb80f7887">Do not use in interrupts </p>
4769
4770 </div>
4771 </div>
4772 <a id="gace9d9d5ff4290c52bc4d5e07f6f7e15a" name="gace9d9d5ff4290c52bc4d5e07f6f7e15a"></a>
4773 </div>
4774 <div class="sect3">
4775 <h4 id="rpip68b4a1468c83e4aff8bf">
4776 <a class="anchor" href="#rpip68b4a1468c83e4aff8bf"></a>◆ divmod_s32s32()</h4>
4777 <div class="memitem" id="rpip0bf40d6037eb5e53cddb">
4778 <div class="memproto" id="rpipf2bb56cec9ff88eb89da">
4779       <table class="memname" id="rpipd85fbe3efe17b8a21ff8">
4780         <tr id="rpipebee20e7e39c12b45263">
4781           <td class="memname" id="rpip12f3da644739cc8ba193">divmod_result_t divmod_s32s32 </td>
4782           <td id="rpipc649730f5459f571e169">(</td>
4783           <td class="paramtype" id="rpip4841ed85c4f42546689e">int32_t </td>
4784           <td class="paramname" id="rpip2cce4d5449f2363229e6">
4785 <em id="rpipad08334f0ed5b4ac09db">a</em>, </td>
4786         </tr>
4787         <tr id="rpip51d7a9ff22861f81e6f6">
4788           <td class="paramkey" id="rpipefab67b6f3943e0a27d9"></td>
4789           <td id="rpip421160108a798187c165"></td>
4790           <td class="paramtype" id="rpip4faa905f72116d33b1b8">int32_t </td>
4791           <td class="paramname" id="rpip087da38217295e2c7f09">
4792 <em id="rpip3f8e5e25cf4ec8a311a3">b</em> </td>
4793         </tr>
4794         <tr id="rpip73bc7b4ab5e3c39571af">
4795           <td id="rpip9d42a0fb6599ba1c1ad9"></td>
4796           <td id="rpip248ec6d99d4bedc134ab">)</td>
4797           <td id="rpipc5f7862c5cbc3a5cee9c"></td>
4798 <td id="rpip80c9763eced9852bd393"></td>
4799         </tr>
4800       </table>
4801 </div>
4802 <div class="memdoc" id="rpip4990a9fcb8633a9aaa4d">
4803
4804 <p id="rpip054e7dff81822e61df4c">Integer divide of two signed 32-bit values. </p>
4805 <h4 id="rpip5f0c26b3aa884c2706b5" data-parent-id="rpip5aa6fcbcca18a60a0140" data-target-for="rpip5f0c26b3aa884c2706b5">Parameters</h4>
4806 <p class="paragraph" id="rpipac8388ed8b0b015fd7a8" data-parent-id="rpip5aa6fcbcca18a60a0140" data-target-for="rpipac8388ed8b0b015fd7a8">
4807   </p>
4808 <table class="params" id="rpipe49aa114bc8cd88c6f38">
4809     <tr id="rpip93c335c18671a0074bae">
4810 <td class="paramname" id="rpipe10e827a5ed8d95ef235">a</td>
4811 <td id="rpipc28b02e85a97667a6316">Dividend </td>
4812 </tr>
4813     <tr id="rpipcc2cb15e48bbddb18e34">
4814 <td class="paramname" id="rpip14015a8245f902715bb6">b</td>
4815 <td id="rpipcb5960430e10554f8318">Divisor </td>
4816 </tr>
4817   </table>
4818   
4819
4820
4821 <h4 class="label" id="rpip3f2dc162c99c18264d98" data-parent-id="rpip6c5f526bc51de4dab3cf" data-target-for="rpip3f2dc162c99c18264d98">Returns</h4>
4822 <p class="returns" id="rpip8496fc43dd9fb5f7b1af" data-parent-id="rpip6c5f526bc51de4dab3cf" data-target-for="rpip8496fc43dd9fb5f7b1af">quotient in low word/r0, remainder in high word/r1 </p>
4823
4824 </div>
4825 </div>
4826 <a id="gaae6ff276cc2275c0734600b981a5d677" name="gaae6ff276cc2275c0734600b981a5d677"></a>
4827 </div>
4828 <div class="sect3">
4829 <h4 id="rpip836ff90a20a28d6042a7">
4830 <a class="anchor" href="#rpip836ff90a20a28d6042a7"></a>◆ divmod_s32s32_rem()</h4>
4831 <div class="memitem" id="rpipd9b20fc3e7a8854ab82e">
4832 <div class="memproto" id="rpip3ef35772aaaf107984b7">
4833 <table class="mlabels" id="rpip3fab77b1923aa9b3af6b">
4834   <tr id="rpipa157709640062af78209">
4835   <td class="mlabels-left" id="rpipb9d871e3c197cb46c409">
4836       <table class="memname" id="rpiped1a09cb80d8a714ef73">
4837         <tr id="rpip90d3609b2acc9f68db38">
4838           <td class="memname" id="rpip2dc7c8731414412359fa">static int32_t divmod_s32s32_rem </td>
4839           <td id="rpipbb4be979c06cf98db2ca">(</td>
4840           <td class="paramtype" id="rpip58de0fb627b0a7db7791">int32_t </td>
4841           <td class="paramname" id="rpip16469ff1946a18129ddb">
4842 <em id="rpipf4350d0553690a212c06">a</em>, </td>
4843         </tr>
4844         <tr id="rpip72c875e348f56f217bd2">
4845           <td class="paramkey" id="rpip61bbc971fb91ea453e64"></td>
4846           <td id="rpip5464eacc5372116e605f"></td>
4847           <td class="paramtype" id="rpip537ac569ac9c4480d2ba">int32_t </td>
4848           <td class="paramname" id="rpipb75383f711ff7b48a9a4">
4849 <em id="rpip648e95d35726d2ca2bf7">b</em>, </td>
4850         </tr>
4851         <tr id="rpip7209cfe6dbdb5f2440df">
4852           <td class="paramkey" id="rpip0352ba675e06d468a27d"></td>
4853           <td id="rpip478e6d0b29babf544b0e"></td>
4854           <td class="paramtype" id="rpip81ce28a9a028e8a7fa05">int32_t * </td>
4855           <td class="paramname" id="rpip0b0af22714ee848ea803">
4856 <em id="rpip46b077e271e77cf82f64">rem</em> </td>
4857         </tr>
4858         <tr id="rpip8af1c7cd34b8822ed0dd">
4859           <td id="rpip04c4dc6d4e07f8181432"></td>
4860           <td id="rpip81ecb4b7e9e9488dd055">)</td>
4861           <td id="rpipc7542cc250e7a105f887"></td>
4862 <td id="rpip913192bdbd15b370f67e"></td>
4863         </tr>
4864       </table>
4865   </td>
4866   <td class="mlabels-right" id="rpip86e642b77ab7242f5e3a">
4867 <span class="mlabels" id="rpip29494cd71df147c87bbf"><span class="mlabel" id="rpipb8c397a87629df4bcd17">inline</span><span class="mlabel" id="rpipc81b78e0e9c001df0b10">static</span></span>  </td>
4868   </tr>
4869 </table>
4870 </div>
4871 <div class="memdoc" id="rpip9dc507a45dbead316108">
4872
4873 <p id="rpip8ddb409298aca269c84d">Integer divide of two signed 32-bit values, with remainder. </p>
4874 <h4 id="rpip045e5db22967a33e483f" data-parent-id="rpip3a31a7222c55fc47f404" data-target-for="rpip045e5db22967a33e483f">Parameters</h4>
4875 <p class="paragraph" id="rpip29809438ed7736c6884a" data-parent-id="rpip3a31a7222c55fc47f404" data-target-for="rpip29809438ed7736c6884a">
4876   </p>
4877 <table class="params" id="rpip6449ea5e2b64cef1d71f">
4878     <tr id="rpip060c20433c690e833dea">
4879 <td class="paramdir" id="rpipee51c5a72b6a73051d82"></td>
4880 <td class="paramname" id="rpip29ec4f41b50a77573554">a</td>
4881 <td id="rpipc71398a9be922ff63c10">Dividend </td>
4882 </tr>
4883     <tr id="rpip543a6427c5560ee07689">
4884 <td class="paramdir" id="rpipace691f4f1a704b3825a"></td>
4885 <td class="paramname" id="rpip8f9165776d7f412a5f66">b</td>
4886 <td id="rpip60f230440ab3f7196445">Divisor </td>
4887 </tr>
4888     <tr id="rpip3e4675b8c3d48fffd74d">
4889 <td class="paramdir" id="rpip3eb97e3e62634bce699b">[out]</td>
4890 <td class="paramname" id="rpip9960ad4151dac451d2ee">rem</td>
4891 <td id="rpip4bc90ffaa0fc6d9ade84">The remainder of dividend/divisor </td>
4892 </tr>
4893   </table>
4894   
4895
4896
4897 <h4 class="label" id="rpip099b91bf08e111bdebce" data-parent-id="rpip607573d01e7131613a05" data-target-for="rpip099b91bf08e111bdebce">Returns</h4>
4898 <p class="returns" id="rpipf7a5f6464acdd913d076" data-parent-id="rpip607573d01e7131613a05" data-target-for="rpipf7a5f6464acdd913d076">Quotient result of dividend/divisor </p>
4899
4900 </div>
4901 </div>
4902 <a id="ga18a5bbbeb6c84d0357d803b2c5b25039" name="ga18a5bbbeb6c84d0357d803b2c5b25039"></a>
4903 </div>
4904 <div class="sect3">
4905 <h4 id="rpipb167686147c8a439ccb0">
4906 <a class="anchor" href="#rpipb167686147c8a439ccb0"></a>◆ divmod_s32s32_rem_unsafe()</h4>
4907 <div class="memitem" id="rpipaa9c64dd53ba126fe3bb">
4908 <div class="memproto" id="rpip0136daa7a7245d0adbb3">
4909       <table class="memname" id="rpip55da4963b8bcab1f287e">
4910         <tr id="rpipd7dbbe0cdbdef408a9ed">
4911           <td class="memname" id="rpipd80a8967a82033d8cf5c">int32_t divmod_s32s32_rem_unsafe </td>
4912           <td id="rpipb0a393a180f706d68f21">(</td>
4913           <td class="paramtype" id="rpipc4be1709a54bc4ff6eef">int32_t </td>
4914           <td class="paramname" id="rpip56688c8ce7d54868f5bd">
4915 <em id="rpip26204f54918a7f110892">a</em>, </td>
4916         </tr>
4917         <tr id="rpip7669fbdb59185e494d8b">
4918           <td class="paramkey" id="rpipb54803cb1c7dc5e8d451"></td>
4919           <td id="rpip7008d382fdb8a5451400"></td>
4920           <td class="paramtype" id="rpip1440e4ee7fc3937e8b0f">int32_t </td>
4921           <td class="paramname" id="rpip12f9cab316983fe520b1">
4922 <em id="rpipa3ac7b098d740d2f6d33">b</em>, </td>
4923         </tr>
4924         <tr id="rpipb40291b82040b02e13bf">
4925           <td class="paramkey" id="rpipe26b62e9d107f9e8a568"></td>
4926           <td id="rpip95296651bded5fce3627"></td>
4927           <td class="paramtype" id="rpipcd315c8de30da0034f49">int32_t * </td>
4928           <td class="paramname" id="rpip0e74b0b119ffa652cac6">
4929 <em id="rpip80e9af91017ac7545570">rem</em> </td>
4930         </tr>
4931         <tr id="rpip282d12761322ec5b7ea2">
4932           <td id="rpipcfb999169002ffb7717c"></td>
4933           <td id="rpip29de82d2e4f184626c77">)</td>
4934           <td id="rpip9f83818555d4e09fbb5c"></td>
4935 <td id="rpip2f6c4d0feebcdec62548"></td>
4936         </tr>
4937       </table>
4938 </div>
4939 <div class="memdoc" id="rpip8b60edb925c74cf4ce52">
4940
4941 <p id="rpip9f84374f74e9d42ec26a">Unsafe integer divide of two signed 32-bit values, with remainder. </p>
4942 <h4 id="rpip66d12e45d9b3307d9800" data-parent-id="rpip1efc2706251a152f2233" data-target-for="rpip66d12e45d9b3307d9800">Parameters</h4>
4943 <p class="paragraph" id="rpip4c3caeeb84d094e8a7c7" data-parent-id="rpip1efc2706251a152f2233" data-target-for="rpip4c3caeeb84d094e8a7c7">
4944   </p>
4945 <table class="params" id="rpip234f90bf2e87b73a2684">
4946     <tr id="rpipd5f45facbeb78f2c0d87">
4947 <td class="paramdir" id="rpipe615ce8472447980f6b9"></td>
4948 <td class="paramname" id="rpipe74ed0db198483920a33">a</td>
4949 <td id="rpip6d3b2cc7cc9749301790">Dividend </td>
4950 </tr>
4951     <tr id="rpipd7c07ebc4813393c17f8">
4952 <td class="paramdir" id="rpipd24f5522c80c980fac4e"></td>
4953 <td class="paramname" id="rpipdcba06fca9182cc288a8">b</td>
4954 <td id="rpipb6ab4bd4b982439f4790">Divisor </td>
4955 </tr>
4956     <tr id="rpip53356454cd9258791510">
4957 <td class="paramdir" id="rpip0ebc9d0a22973589fa99">[out]</td>
4958 <td class="paramname" id="rpip6f55d4c4ed61ccc8d1a9">rem</td>
4959 <td id="rpip21e1716938db098175c3">The remainder of dividend/divisor </td>
4960 </tr>
4961   </table>
4962   
4963
4964
4965 <h4 class="label" id="rpip8a8d033875e1b381c34a" data-parent-id="rpip0ddd972eb800ac9e0ef2" data-target-for="rpip8a8d033875e1b381c34a">Returns</h4>
4966 <p class="returns" id="rpip142e0cc574c2db26df8f" data-parent-id="rpip0ddd972eb800ac9e0ef2" data-target-for="rpip142e0cc574c2db26df8f">Quotient result of dividend/divisor</p>
4967 <p id="rpip8139a57d59bd6446b268">Do not use in interrupts </p>
4968
4969 </div>
4970 </div>
4971 <a id="ga832132d1124737c9316dac6c7fe5c752" name="ga832132d1124737c9316dac6c7fe5c752"></a>
4972 </div>
4973 <div class="sect3">
4974 <h4 id="rpipd1a10900043ea9e7f24d">
4975 <a class="anchor" href="#rpipd1a10900043ea9e7f24d"></a>◆ divmod_s32s32_unsafe()</h4>
4976 <div class="memitem" id="rpip40c581471d14acf7d6ed">
4977 <div class="memproto" id="rpipcfcd7b4ef6e4fe042dd1">
4978       <table class="memname" id="rpip962800ba194c2c4a6d92">
4979         <tr id="rpip5ff610ad940834df11c5">
4980           <td class="memname" id="rpip24bef5e144ab13c10e5d">int64_t divmod_s32s32_unsafe </td>
4981           <td id="rpip839677443ae8c99fd9e1">(</td>
4982           <td class="paramtype" id="rpipe43912b9d7ec841cb0d3">int32_t </td>
4983           <td class="paramname" id="rpip7cfba011ab4c226d81f0">
4984 <em id="rpipbaafadd362cd7ed614e4">a</em>, </td>
4985         </tr>
4986         <tr id="rpip50efc7f232d22ace451a">
4987           <td class="paramkey" id="rpip43beedba4ff4df401209"></td>
4988           <td id="rpipbfffe83cfbc1c1ac7dee"></td>
4989           <td class="paramtype" id="rpipd8010ec1ef0686d6bd53">int32_t </td>
4990           <td class="paramname" id="rpip13605f19e85bb93e3192">
4991 <em id="rpip09208b5d188e00f38801">b</em> </td>
4992         </tr>
4993         <tr id="rpipdbec8636a91cb1551113">
4994           <td id="rpipb2bdaf397aa7bceb0c0f"></td>
4995           <td id="rpip99baaf862a4d27957889">)</td>
4996           <td id="rpip22976447fc8a7f389718"></td>
4997 <td id="rpip35fc451999f26cedf95e"></td>
4998         </tr>
4999       </table>
5000 </div>
5001 <div class="memdoc" id="rpip646de744824762a75dac">
5002
5003 <p id="rpipa23843112cb3de9939a7">Unsafe integer divide of two unsigned 32-bit values. </p>
5004 <h4 id="rpipffbe3ed82f57ae6f431b" data-parent-id="rpip13e5887e5b1fce286919" data-target-for="rpipffbe3ed82f57ae6f431b">Parameters</h4>
5005 <p class="paragraph" id="rpip587e5c92e05735ace1df" data-parent-id="rpip13e5887e5b1fce286919" data-target-for="rpip587e5c92e05735ace1df">
5006   </p>
5007 <table class="params" id="rpipee2b1493e5e8469a1a7d">
5008     <tr id="rpipaad2bd4d23c8bae91930">
5009 <td class="paramname" id="rpipbeaa732c5625d397263c">a</td>
5010 <td id="rpipb132f201e2f33612d107">Dividend </td>
5011 </tr>
5012     <tr id="rpip9e499e5154b4995440d4">
5013 <td class="paramname" id="rpip4badbea02a84dac85ba0">b</td>
5014 <td id="rpip1739916e29b59b21bdc6">Divisor </td>
5015 </tr>
5016   </table>
5017   
5018
5019
5020 <h4 class="label" id="rpip235c4299e56a0c5e2b06" data-parent-id="rpip5bc8b96119f5fff0857f" data-target-for="rpip235c4299e56a0c5e2b06">Returns</h4>
5021 <p class="returns" id="rpip980493723992c757d0e9" data-parent-id="rpip5bc8b96119f5fff0857f" data-target-for="rpip980493723992c757d0e9">quotient in low word/r0, remainder in high word/r1</p>
5022 <p id="rpipaff8406deece4d91e193">Do not use in interrupts </p>
5023
5024 </div>
5025 </div>
5026 <a id="ga936872c9df9360e2b32b5d8b2c345913" name="ga936872c9df9360e2b32b5d8b2c345913"></a>
5027 </div>
5028 <div class="sect3">
5029 <h4 id="rpip9fa329300dc453cec8d1">
5030 <a class="anchor" href="#rpip9fa329300dc453cec8d1"></a>◆ divmod_s64s64()</h4>
5031 <div class="memitem" id="rpip12098216328a2b9f25d5">
5032 <div class="memproto" id="rpip6dc7f7ec6243e2a1fb8a">
5033       <table class="memname" id="rpipe04d7c53973648045b94">
5034         <tr id="rpipe1a9e59c4e6b145151a5">
5035           <td class="memname" id="rpip620241013cfc74b62ee2">int64_t divmod_s64s64 </td>
5036           <td id="rpipd7dc2ee14c88865b2d83">(</td>
5037           <td class="paramtype" id="rpip85d6bd9e00fcaed287c6">int64_t </td>
5038           <td class="paramname" id="rpip28cbc25e32837b8785d1">
5039 <em id="rpipd34f58db629c071f7f83">a</em>, </td>
5040         </tr>
5041         <tr id="rpip6a9bfcd08bf76fbf67c1">
5042           <td class="paramkey" id="rpip1bd3274ceb525694904d"></td>
5043           <td id="rpip351b0cb60935ad62f679"></td>
5044           <td class="paramtype" id="rpipb58d13db902a57576ac2">int64_t </td>
5045           <td class="paramname" id="rpip7f2b2e3c099a7d6658f4">
5046 <em id="rpipbd27bf5fba0f28278274">b</em> </td>
5047         </tr>
5048         <tr id="rpip55b78720819141402c2d">
5049           <td id="rpip7080045470813f2c5750"></td>
5050           <td id="rpipaa1c775c246f20dbffb5">)</td>
5051           <td id="rpip11849fb56bf986a1cece"></td>
5052 <td id="rpip399a408f5ccfb759ac31"></td>
5053         </tr>
5054       </table>
5055 </div>
5056 <div class="memdoc" id="rpipd65ac2c58c105926e148">
5057
5058 <p id="rpip4a6cacc4356ce4c3e2b0">Integer divide of two signed 64-bit values. </p>
5059 <h4 id="rpip3fcda2c697cf7c0b36ec" data-parent-id="rpip62042f8cc3333740b854" data-target-for="rpip3fcda2c697cf7c0b36ec">Parameters</h4>
5060 <p class="paragraph" id="rpipdcec6400df369c86e9af" data-parent-id="rpip62042f8cc3333740b854" data-target-for="rpipdcec6400df369c86e9af">
5061   </p>
5062 <table class="params" id="rpip1fba43162aacebfe98ef">
5063     <tr id="rpipde07ce08e71c98a3a0aa">
5064 <td class="paramname" id="rpip763c4950b21ea3a33218">a</td>
5065 <td id="rpip939f392a7ac95a30d025">Dividend </td>
5066 </tr>
5067     <tr id="rpip34fc939727cf294a99b7">
5068 <td class="paramname" id="rpip6e6f403c12c3ca94e33b">b</td>
5069 <td id="rpip08f6a76bb881b0c9b61f">Divisor </td>
5070 </tr>
5071   </table>
5072   
5073
5074
5075 <h4 class="label" id="rpip9fde76fe3ba956f3b090" data-parent-id="rpipc276aeeac405250d0799" data-target-for="rpip9fde76fe3ba956f3b090">Returns</h4>
5076 <p class="returns" id="rpip6cc61cbcc17f8b9a3736" data-parent-id="rpipc276aeeac405250d0799" data-target-for="rpip6cc61cbcc17f8b9a3736">quotient in result (r0,r1), remainder in regs (r2, r3) </p>
5077
5078 </div>
5079 </div>
5080 <a id="ga7f6ec69ce8ef4406923d56a0a6e1d409" name="ga7f6ec69ce8ef4406923d56a0a6e1d409"></a>
5081 </div>
5082 <div class="sect3">
5083 <h4 id="rpip99732e80fb8e815d3b85">
5084 <a class="anchor" href="#rpip99732e80fb8e815d3b85"></a>◆ divmod_s64s64_rem()</h4>
5085 <div class="memitem" id="rpip68ebed90a4943ea2edc9">
5086 <div class="memproto" id="rpip123fe9b41f786c7b1a9e">
5087       <table class="memname" id="rpip34a82997f25528bd920c">
5088         <tr id="rpipf2959a466fa12b033cb4">
5089           <td class="memname" id="rpipc8ee9c2ad0fecfe4b11f">int64_t divmod_s64s64_rem </td>
5090           <td id="rpip7c188a6dea416ac162c3">(</td>
5091           <td class="paramtype" id="rpip210e459fead6ec9e18cd">int64_t </td>
5092           <td class="paramname" id="rpip0d0301fccbe34aec34b1">
5093 <em id="rpip150d4e2364a9d47ebaaa">a</em>, </td>
5094         </tr>
5095         <tr id="rpip8bf451300836c2d96285">
5096           <td class="paramkey" id="rpip1a1eed6bcc713be1ad7c"></td>
5097           <td id="rpip2e62fcb5fa5fc5a1199a"></td>
5098           <td class="paramtype" id="rpip02406c6d7927ca4d2842">int64_t </td>
5099           <td class="paramname" id="rpip75fd39e01bc128efee9f">
5100 <em id="rpip79625e6caad4f7d2d4e2">b</em>, </td>
5101         </tr>
5102         <tr id="rpip2a634bf2aef5db217edb">
5103           <td class="paramkey" id="rpipf98f33906c18e4ca1843"></td>
5104           <td id="rpipb00b5dafd04efc0b4dbf"></td>
5105           <td class="paramtype" id="rpipcc11c561ef1e822e18e0">int64_t * </td>
5106           <td class="paramname" id="rpip6eabcfa63d84748c6a4c">
5107 <em id="rpip1c0a6a632da1f447a5f7">rem</em> </td>
5108         </tr>
5109         <tr id="rpipb62c3744a7fcaa1cb639">
5110           <td id="rpip89f9628c2261d9eb17b1"></td>
5111           <td id="rpipd19d0e5be2c56383a88f">)</td>
5112           <td id="rpip79c3b8909e94ec2a3d8b"></td>
5113 <td id="rpipcd0354f6b1bc0a5b4068"></td>
5114         </tr>
5115       </table>
5116 </div>
5117 <div class="memdoc" id="rpip75cd6738a414c7c9435a">
5118
5119 <p id="rpipe40501d8053beda62001">Integer divide of two signed 64-bit values, with remainder. </p>
5120 <h4 id="rpip853ea05a90d118c6158a" data-parent-id="rpipf71f56cacffc359b0b43" data-target-for="rpip853ea05a90d118c6158a">Parameters</h4>
5121 <p class="paragraph" id="rpipad4052fb6bd9097dba21" data-parent-id="rpipf71f56cacffc359b0b43" data-target-for="rpipad4052fb6bd9097dba21">
5122   </p>
5123 <table class="params" id="rpip73687f331a5f2509d75f">
5124     <tr id="rpip3bc6b6020f4563fcf45f">
5125 <td class="paramdir" id="rpipf578c86ce117124871cd"></td>
5126 <td class="paramname" id="rpip1ab7ebb9b57501ba73d6">a</td>
5127 <td id="rpip3d4fbc33b9c6c7b87548">Dividend </td>
5128 </tr>
5129     <tr id="rpip1ec5d1af72afbaef520e">
5130 <td class="paramdir" id="rpipad9a2190ca38b8be67d0"></td>
5131 <td class="paramname" id="rpip7e28aee018e484fe539f">b</td>
5132 <td id="rpip2ee918c8ff4014d2be5b">Divisor </td>
5133 </tr>
5134     <tr id="rpipb7fa050e4778ac5306ac">
5135 <td class="paramdir" id="rpipc885651c4b67fb20aa2d">[out]</td>
5136 <td class="paramname" id="rpipb5c5abf0c04f4c3fb544">rem</td>
5137 <td id="rpipda1a0bb709914098efaf">The remainder of dividend/divisor </td>
5138 </tr>
5139   </table>
5140   
5141
5142
5143 <h4 class="label" id="rpip03d9d3698c01eeb74524" data-parent-id="rpipe4eefc9375366cae9c04" data-target-for="rpip03d9d3698c01eeb74524">Returns</h4>
5144 <p class="returns" id="rpip9c9b43d6e59d70c0b368" data-parent-id="rpipe4eefc9375366cae9c04" data-target-for="rpip9c9b43d6e59d70c0b368">Quotient result of dividend/divisor </p>
5145
5146 </div>
5147 </div>
5148 <a id="gacfbc03721cfa18f7f1865d0cb17a62f9" name="gacfbc03721cfa18f7f1865d0cb17a62f9"></a>
5149 </div>
5150 <div class="sect3">
5151 <h4 id="rpipac7ce0b7550c6f97bcf1">
5152 <a class="anchor" href="#rpipac7ce0b7550c6f97bcf1"></a>◆ divmod_s64s64_rem_unsafe()</h4>
5153 <div class="memitem" id="rpip66dd6240bb989d941a04">
5154 <div class="memproto" id="rpip3560583e38575a882067">
5155       <table class="memname" id="rpipe6e7541fb660e19276dd">
5156         <tr id="rpip0b0e42aad2759b0ee501">
5157           <td class="memname" id="rpipf76e3ef4dc956cb90a1d">int64_t divmod_s64s64_rem_unsafe </td>
5158           <td id="rpip4811bce7c9dfb121870d">(</td>
5159           <td class="paramtype" id="rpip9c67af1800e8a93b2e81">int64_t </td>
5160           <td class="paramname" id="rpip95d68ad079e832334ef6">
5161 <em id="rpipfacba25f4c04b212aadb">a</em>, </td>
5162         </tr>
5163         <tr id="rpip69a21265f0fad875f4d4">
5164           <td class="paramkey" id="rpipa5d61b90bc59c9c06255"></td>
5165           <td id="rpip11dba8b6e5f644005b6b"></td>
5166           <td class="paramtype" id="rpipb4fd35c8301ff62ab600">int64_t </td>
5167           <td class="paramname" id="rpipff815394f6b2a3ec4b87">
5168 <em id="rpipaa2f70aac5a5e19cccde">b</em>, </td>
5169         </tr>
5170         <tr id="rpip62b7e3af0af07d23830b">
5171           <td class="paramkey" id="rpip95f28b7a6cab13e4d020"></td>
5172           <td id="rpip27b1bbe6f03cdc3ba37a"></td>
5173           <td class="paramtype" id="rpip4b3d29ba55561f823ae5">int64_t * </td>
5174           <td class="paramname" id="rpip0840b28b46ffa16f02c5">
5175 <em id="rpip3fb81f1fcd604256e640">rem</em> </td>
5176         </tr>
5177         <tr id="rpipa28503c53e51ebc608ff">
5178           <td id="rpip2d7be479d5fcfc2cf574"></td>
5179           <td id="rpip0f8d00eddf2cd810d425">)</td>
5180           <td id="rpip4df4bb83456df3dfd3ea"></td>
5181 <td id="rpipbeb87792713c939bf4ca"></td>
5182         </tr>
5183       </table>
5184 </div>
5185 <div class="memdoc" id="rpipe0438155124f4ef3d44f">
5186
5187 <p id="rpip70cadadb2936def2ca2d">Unsafe integer divide of two signed 64-bit values, with remainder. </p>
5188 <h4 id="rpipda39cfaf23b9a8079bd2" data-parent-id="rpipce47be2d4cd88144ace0" data-target-for="rpipda39cfaf23b9a8079bd2">Parameters</h4>
5189 <p class="paragraph" id="rpip5ad79e84227ef4abaec5" data-parent-id="rpipce47be2d4cd88144ace0" data-target-for="rpip5ad79e84227ef4abaec5">
5190   </p>
5191 <table class="params" id="rpipf69aa4409453bb2be812">
5192     <tr id="rpipe616d665ebf4b050edbe">
5193 <td class="paramdir" id="rpipb04f49ede2bea182e3bd"></td>
5194 <td class="paramname" id="rpipdb1056f435dae255f27d">a</td>
5195 <td id="rpip59ef2ac32757f0701945">Dividend </td>
5196 </tr>
5197     <tr id="rpipd27e2123f8e25fb7350d">
5198 <td class="paramdir" id="rpip4bb12e2c249df15e94cf"></td>
5199 <td class="paramname" id="rpip9b60d7c38c2765d924f0">b</td>
5200 <td id="rpipc2e2f5b521babe64408c">Divisor </td>
5201 </tr>
5202     <tr id="rpip5c7e05ecc113d0233705">
5203 <td class="paramdir" id="rpip378cbb782c06e3b2f3c3">[out]</td>
5204 <td class="paramname" id="rpip7fcd573a34b204091334">rem</td>
5205 <td id="rpipb0b7ad088c1b532bb3e5">The remainder of dividend/divisor </td>
5206 </tr>
5207   </table>
5208   
5209
5210
5211 <h4 class="label" id="rpip80f14adfec1d050f7352" data-parent-id="rpip2627c46381fb46233bec" data-target-for="rpip80f14adfec1d050f7352">Returns</h4>
5212 <p class="returns" id="rpip853939a6beca7d85a069" data-parent-id="rpip2627c46381fb46233bec" data-target-for="rpip853939a6beca7d85a069">Quotient result of dividend/divisor</p>
5213 <p id="rpipe4e2669f4fbae67ed0f1">Do not use in interrupts </p>
5214
5215 </div>
5216 </div>
5217 <a id="ga47233b8d21888b733c5f271fdf290a33" name="ga47233b8d21888b733c5f271fdf290a33"></a>
5218 </div>
5219 <div class="sect3">
5220 <h4 id="rpipbc3314af1e282f809b8f">
5221 <a class="anchor" href="#rpipbc3314af1e282f809b8f"></a>◆ divmod_s64s64_unsafe()</h4>
5222 <div class="memitem" id="rpip194b8a4cad3c0862c8d6">
5223 <div class="memproto" id="rpip5e6e4b0bf0a2d56f4a2b">
5224       <table class="memname" id="rpip4ee8e111a8a9a0e175f5">
5225         <tr id="rpipc04c4300d58a03367b5e">
5226           <td class="memname" id="rpipd00401af82eb0fc748a9">int64_t divmod_s64s64_unsafe </td>
5227           <td id="rpipd7dd77914575a8443311">(</td>
5228           <td class="paramtype" id="rpip8cc9cbf840f0401e3a77">int64_t </td>
5229           <td class="paramname" id="rpip91c8f90cfddcc4809ee6">
5230 <em id="rpip5b72ec02ffea22be3884">a</em>, </td>
5231         </tr>
5232         <tr id="rpipb2b0bf7a40c4b37a80fa">
5233           <td class="paramkey" id="rpipc3778155f65d7b85ce1b"></td>
5234           <td id="rpip216754c1e03b5a8048c4"></td>
5235           <td class="paramtype" id="rpipadeb5a002198ab4d9fcd">int64_t </td>
5236           <td class="paramname" id="rpip56372deea25293ec5e1c">
5237 <em id="rpipebe28fac4da40840123d">b</em> </td>
5238         </tr>
5239         <tr id="rpip0df16c388d5c8239df50">
5240           <td id="rpipa99085384f63dbf406b4"></td>
5241           <td id="rpip456182c4fd4d97f5e4d1">)</td>
5242           <td id="rpipd255b5a13b9c7ff62c52"></td>
5243 <td id="rpip5e8d4c21923d1794dabd"></td>
5244         </tr>
5245       </table>
5246 </div>
5247 <div class="memdoc" id="rpipda080d01e7a27430abb9">
5248
5249 <p id="rpip9fed009fadc280c6a664">Unsafe integer divide of two signed 64-bit values. </p>
5250 <h4 id="rpip9342ca45c7de8d3b8ae0" data-parent-id="rpipa89473e41b4815536380" data-target-for="rpip9342ca45c7de8d3b8ae0">Parameters</h4>
5251 <p class="paragraph" id="rpip90634d755d4c4726c6f3" data-parent-id="rpipa89473e41b4815536380" data-target-for="rpip90634d755d4c4726c6f3">
5252   </p>
5253 <table class="params" id="rpipaa61c2cde45b70866950">
5254     <tr id="rpip2ab7baeef6b4a8ccd9ef">
5255 <td class="paramname" id="rpip4ca1a7280728b134a0f6">a</td>
5256 <td id="rpip64cb42ba7fb344b324ab">Dividend </td>
5257 </tr>
5258     <tr id="rpip77e53197718c7c4fbdac">
5259 <td class="paramname" id="rpip5f5a134ad33cfae6ec4f">b</td>
5260 <td id="rpipb1a4a4d008c3f858f26e">Divisor </td>
5261 </tr>
5262   </table>
5263   
5264
5265
5266 <h4 class="label" id="rpipd34d5a19db50d1d7bce0" data-parent-id="rpip517be635616cde5b5a84" data-target-for="rpipd34d5a19db50d1d7bce0">Returns</h4>
5267 <p class="returns" id="rpipc7e1e2c5400dfd5a763f" data-parent-id="rpip517be635616cde5b5a84" data-target-for="rpipc7e1e2c5400dfd5a763f">quotient in result (r0,r1), remainder in regs (r2, r3)</p>
5268 <p id="rpip8e91a66e7480036a0049">Do not use in interrupts </p>
5269
5270 </div>
5271 </div>
5272 <a id="ga71d8e53c72b078f1334061ff0aebe8d8" name="ga71d8e53c72b078f1334061ff0aebe8d8"></a>
5273 </div>
5274 <div class="sect3">
5275 <h4 id="rpip23029710a487c6ab4b22">
5276 <a class="anchor" href="#rpip23029710a487c6ab4b22"></a>◆ divmod_u32u32()</h4>
5277 <div class="memitem" id="rpip2c8c52ebe77d8b8d3001">
5278 <div class="memproto" id="rpip3370cba3f228280ebdb0">
5279       <table class="memname" id="rpip76945b686a35889f853f">
5280         <tr id="rpipa9007f65da1069002d7c">
5281           <td class="memname" id="rpipe6b6b8eebba91d0a74ca">divmod_result_t divmod_u32u32 </td>
5282           <td id="rpipd050bd31b50c5fcbe71c">(</td>
5283           <td class="paramtype" id="rpipb32b21354982e05d69b1">uint32_t </td>
5284           <td class="paramname" id="rpip338cad1344120c6d985d">
5285 <em id="rpipfcccbe1507bb0cdbcf19">a</em>, </td>
5286         </tr>
5287         <tr id="rpipd08042845c29d2516dcf">
5288           <td class="paramkey" id="rpipab8308e04925786b930a"></td>
5289           <td id="rpipfc7f6a5a7af735fcfedf"></td>
5290           <td class="paramtype" id="rpip2efc0d8d432e38c031f9">uint32_t </td>
5291           <td class="paramname" id="rpip47794721027a93a1de63">
5292 <em id="rpip4b61ea035f0efb549446">b</em> </td>
5293         </tr>
5294         <tr id="rpip1fa7c6cdd5abf8100e4c">
5295           <td id="rpipf39456e5245e099bd42c"></td>
5296           <td id="rpip9d91ad45b77b8638a852">)</td>
5297           <td id="rpip2ef14ce3382fe5932b6f"></td>
5298 <td id="rpipab55b65c34ea76a6c196"></td>
5299         </tr>
5300       </table>
5301 </div>
5302 <div class="memdoc" id="rpipeabc8a6f05b01b48bec2">
5303
5304 <p id="rpip58a17c514cd0d90a1bec">Integer divide of two unsigned 32-bit values. </p>
5305 <h4 id="rpip574a3d3399cb9cd02480" data-parent-id="rpip9010e27fedccadc6cd6b" data-target-for="rpip574a3d3399cb9cd02480">Parameters</h4>
5306 <p class="paragraph" id="rpipf73251e0821145b5e825" data-parent-id="rpip9010e27fedccadc6cd6b" data-target-for="rpipf73251e0821145b5e825">
5307   </p>
5308 <table class="params" id="rpip41b45dc37022974e85dd">
5309     <tr id="rpip952b39d8ec4dbe55442c">
5310 <td class="paramname" id="rpipf857b637a8a32416a759">a</td>
5311 <td id="rpip41d525116dbbf4ed7722">Dividend </td>
5312 </tr>
5313     <tr id="rpipd4b1197b4254124253b9">
5314 <td class="paramname" id="rpip511f1e5ed1b5addca37c">b</td>
5315 <td id="rpip8d50d8e73f29f1db5bba">Divisor </td>
5316 </tr>
5317   </table>
5318   
5319
5320
5321 <h4 class="label" id="rpip2a946cf58d3ac895112a" data-parent-id="rpipd94f31742574db01e441" data-target-for="rpip2a946cf58d3ac895112a">Returns</h4>
5322 <p class="returns" id="rpipbee2aa44b4ea0346d083" data-parent-id="rpipd94f31742574db01e441" data-target-for="rpipbee2aa44b4ea0346d083">quotient in low word/r0, remainder in high word/r1 </p>
5323
5324 </div>
5325 </div>
5326 <a id="ga02bac0aea2fa383a28bd05bcd682a07a" name="ga02bac0aea2fa383a28bd05bcd682a07a"></a>
5327 </div>
5328 <div class="sect3">
5329 <h4 id="rpipa3ffd5dbe1427e1b2b30">
5330 <a class="anchor" href="#rpipa3ffd5dbe1427e1b2b30"></a>◆ divmod_u32u32_rem()</h4>
5331 <div class="memitem" id="rpip1b9b202d99d0fb130222">
5332 <div class="memproto" id="rpip847036b9c5c253bba6fc">
5333 <table class="mlabels" id="rpip8ccbda3294e9106c248e">
5334   <tr id="rpipe98f2f69a1322ddcd40f">
5335   <td class="mlabels-left" id="rpip1477143a4ac916e96154">
5336       <table class="memname" id="rpip8d38b3833721c72d6366">
5337         <tr id="rpip8149aee22726d5f1bad9">
5338           <td class="memname" id="rpipabde2d222b4ab1a35d25">static uint32_t divmod_u32u32_rem </td>
5339           <td id="rpip874cc389bed565c96dfd">(</td>
5340           <td class="paramtype" id="rpipdcd9fd52390bac3a49d0">uint32_t </td>
5341           <td class="paramname" id="rpip746bc8a8795c3825f634">
5342 <em id="rpipc2ce5ae43a9345f8f697">a</em>, </td>
5343         </tr>
5344         <tr id="rpipe648ba0d3f3763154725">
5345           <td class="paramkey" id="rpip8cbecb264a24378ea307"></td>
5346           <td id="rpipd924580044f3110caac6"></td>
5347           <td class="paramtype" id="rpip2ab5936506a88d159f0c">uint32_t </td>
5348           <td class="paramname" id="rpipf0c2437ff2eae42e5156">
5349 <em id="rpipbba2da850597012f3150">b</em>, </td>
5350         </tr>
5351         <tr id="rpip70e0b459c1ea068c4cd6">
5352           <td class="paramkey" id="rpip637edd344ba1ec1d0e2c"></td>
5353           <td id="rpip8c2853af37db2e52c36f"></td>
5354           <td class="paramtype" id="rpip4b04ddc77116d35c9515">uint32_t * </td>
5355           <td class="paramname" id="rpip72f155cfbd09dc904222">
5356 <em id="rpipf65437b7c52fe6452c74">rem</em> </td>
5357         </tr>
5358         <tr id="rpipf3083871114507ee5832">
5359           <td id="rpip4716fc25054d6c0fb33a"></td>
5360           <td id="rpip2678224ca05e0f282da2">)</td>
5361           <td id="rpip1f8819b5fbe2b8f51320"></td>
5362 <td id="rpipd2fe3d53d17ae4c0d6ca"></td>
5363         </tr>
5364       </table>
5365   </td>
5366   <td class="mlabels-right" id="rpip9ce3e7c866ef7a1188fd">
5367 <span class="mlabels" id="rpipbeceebabe3ebb0ff50b3"><span class="mlabel" id="rpipa5cd22b69c05fc59f371">inline</span><span class="mlabel" id="rpip1e4c913068d8367502b4">static</span></span>  </td>
5368   </tr>
5369 </table>
5370 </div>
5371 <div class="memdoc" id="rpip0e5fa8a2ac5aafaa3f5b">
5372
5373 <p id="rpiped2abb05aaa05c35409f">Integer divide of two unsigned 32-bit values, with remainder. </p>
5374 <h4 id="rpipfe7940a86c70e32e216c" data-parent-id="rpip2ad1041e4813009ed3e0" data-target-for="rpipfe7940a86c70e32e216c">Parameters</h4>
5375 <p class="paragraph" id="rpipa5d9eac58b8d8e7e1551" data-parent-id="rpip2ad1041e4813009ed3e0" data-target-for="rpipa5d9eac58b8d8e7e1551">
5376   </p>
5377 <table class="params" id="rpip298e1f61e3aeec2c35f5">
5378     <tr id="rpipa2d204e538caa4274883">
5379 <td class="paramdir" id="rpip75e822d036cae8334938"></td>
5380 <td class="paramname" id="rpip1c441a7ac3251b74bdf6">a</td>
5381 <td id="rpipd1df42b3bd044b2f3727">Dividend </td>
5382 </tr>
5383     <tr id="rpipd9250abc44ec9dc4728b">
5384 <td class="paramdir" id="rpipfda898e436d1921a85a3"></td>
5385 <td class="paramname" id="rpipb4d8f3fbb8c9fddfffd7">b</td>
5386 <td id="rpip4e0cd031b6fc8e4e6fb8">Divisor </td>
5387 </tr>
5388     <tr id="rpip2c041aae81f58d9487b8">
5389 <td class="paramdir" id="rpip3ef08e4ec487d64ab10f">[out]</td>
5390 <td class="paramname" id="rpipa90ef57069b1d7b9aab8">rem</td>
5391 <td id="rpipa2862952846823d48dca">The remainder of dividend/divisor </td>
5392 </tr>
5393   </table>
5394   
5395
5396
5397 <h4 class="label" id="rpip20b1b5e8750aba4bb320" data-parent-id="rpipcf63c69960f77d4db336" data-target-for="rpip20b1b5e8750aba4bb320">Returns</h4>
5398 <p class="returns" id="rpip83b626669b4588d64a5f" data-parent-id="rpipcf63c69960f77d4db336" data-target-for="rpip83b626669b4588d64a5f">Quotient result of dividend/divisor </p>
5399
5400 </div>
5401 </div>
5402 <a id="ga110fad3fe5af8415e2c4bc4272c38591" name="ga110fad3fe5af8415e2c4bc4272c38591"></a>
5403 </div>
5404 <div class="sect3">
5405 <h4 id="rpip2ecbb0589384ecacfcb5">
5406 <a class="anchor" href="#rpip2ecbb0589384ecacfcb5"></a>◆ divmod_u32u32_rem_unsafe()</h4>
5407 <div class="memitem" id="rpipa284390315d31070471e">
5408 <div class="memproto" id="rpipc4937d1950f0ff21546d">
5409       <table class="memname" id="rpipd4d642bef2f217e5af19">
5410         <tr id="rpipa21bd580515524c25e72">
5411           <td class="memname" id="rpip6b312f7e4d8a86ec1253">uint32_t divmod_u32u32_rem_unsafe </td>
5412           <td id="rpip1ee9b08545d4bac00a16">(</td>
5413           <td class="paramtype" id="rpipc7e1c0a785482d3723d3">uint32_t </td>
5414           <td class="paramname" id="rpip9e1c23d1f30f9f387a8e">
5415 <em id="rpipae0516f69b73ece73632">a</em>, </td>
5416         </tr>
5417         <tr id="rpipd18de217a9245c3c20ad">
5418           <td class="paramkey" id="rpipd440246c1d6106ca5d8c"></td>
5419           <td id="rpip3cddc615ccc7a5e5e01e"></td>
5420           <td class="paramtype" id="rpipc0c4789787ee5c429ca7">uint32_t </td>
5421           <td class="paramname" id="rpip277a0a7ca2c7802be4e5">
5422 <em id="rpip5322cd7dcfb3a71e8372">b</em>, </td>
5423         </tr>
5424         <tr id="rpip1371d367891c64528d45">
5425           <td class="paramkey" id="rpip9a33efb7edcde878d3ba"></td>
5426           <td id="rpipd89fd53f6d34822ff1f5"></td>
5427           <td class="paramtype" id="rpipafd9c53db88cd6bafdc9">uint32_t * </td>
5428           <td class="paramname" id="rpip32689adc5d3fa4cc7d41">
5429 <em id="rpipe7b659d2e973fe9e3dc5">rem</em> </td>
5430         </tr>
5431         <tr id="rpip9e85698fd4c729083d33">
5432           <td id="rpipd3c98d5a2ea7a23b60c4"></td>
5433           <td id="rpip2f6293681b5d8e199d98">)</td>
5434           <td id="rpipb2366293dd744c11710c"></td>
5435 <td id="rpip10d1865b0c1e336de93b"></td>
5436         </tr>
5437       </table>
5438 </div>
5439 <div class="memdoc" id="rpipd984449c33a2affae042">
5440
5441 <p id="rpip9e7841a0a345a1d837dd">Unsafe integer divide of two unsigned 32-bit values, with remainder. </p>
5442 <h4 id="rpip0135ec1992536903152c" data-parent-id="rpip84245e276d9a74c276b1" data-target-for="rpip0135ec1992536903152c">Parameters</h4>
5443 <p class="paragraph" id="rpip3e0ae7222ca8511bf954" data-parent-id="rpip84245e276d9a74c276b1" data-target-for="rpip3e0ae7222ca8511bf954">
5444   </p>
5445 <table class="params" id="rpipece4acf60440f3e1a249">
5446     <tr id="rpip7f1d99cd04b8e4f1c056">
5447 <td class="paramdir" id="rpip3cc38f578d603745123c"></td>
5448 <td class="paramname" id="rpipb4fc3180f7ddd3029fbe">a</td>
5449 <td id="rpipadbb9964ed75d12ce043">Dividend </td>
5450 </tr>
5451     <tr id="rpipaf35212af764d48d6f6a">
5452 <td class="paramdir" id="rpipd53e26b6ddb0e22f8c0a"></td>
5453 <td class="paramname" id="rpip583193ceab223b0107b4">b</td>
5454 <td id="rpipa69280e7e4f1a841807a">Divisor </td>
5455 </tr>
5456     <tr id="rpip22894af9d3099b0f42ac">
5457 <td class="paramdir" id="rpipa72728d1c896e239d49d">[out]</td>
5458 <td class="paramname" id="rpip91f8757e4df24922e4f9">rem</td>
5459 <td id="rpipca03fa797f3fe8d69119">The remainder of dividend/divisor </td>
5460 </tr>
5461   </table>
5462   
5463
5464
5465 <h4 class="label" id="rpip7b6b21998b774a670550" data-parent-id="rpipb632888370de5f4f7ac8" data-target-for="rpip7b6b21998b774a670550">Returns</h4>
5466 <p class="returns" id="rpipe23d70d19e30bb35ab0b" data-parent-id="rpipb632888370de5f4f7ac8" data-target-for="rpipe23d70d19e30bb35ab0b">Quotient result of dividend/divisor</p>
5467 <p id="rpip0eebf4354c0f0e29dc8e">Do not use in interrupts </p>
5468
5469 </div>
5470 </div>
5471 <a id="gaca386ee7c507716df3a0b6c1d5ad6502" name="gaca386ee7c507716df3a0b6c1d5ad6502"></a>
5472 </div>
5473 <div class="sect3">
5474 <h4 id="rpip714d22a0b9b69a8fae73">
5475 <a class="anchor" href="#rpip714d22a0b9b69a8fae73"></a>◆ divmod_u32u32_unsafe()</h4>
5476 <div class="memitem" id="rpip4c9914c8f03d7cb4445d">
5477 <div class="memproto" id="rpip6df97b8594cfd626f7ac">
5478       <table class="memname" id="rpipaaaf9d2169b4a1fe610c">
5479         <tr id="rpipba2c40b42c9429378d5b">
5480           <td class="memname" id="rpip15eae174e7ef0fe0c6e7">uint64_t divmod_u32u32_unsafe </td>
5481           <td id="rpip4ec0e7f9e989ee2d0136">(</td>
5482           <td class="paramtype" id="rpipd86c66e72b689339c112">uint32_t </td>
5483           <td class="paramname" id="rpip5fcaf1892187f6366e44">
5484 <em id="rpip60cbebe1225c9892a447">a</em>, </td>
5485         </tr>
5486         <tr id="rpip933767bf9f06166da8e6">
5487           <td class="paramkey" id="rpipea82ba9db1c9317c52f8"></td>
5488           <td id="rpip117427cf105f8fc73beb"></td>
5489           <td class="paramtype" id="rpipf9925d167c1a420c5c60">uint32_t </td>
5490           <td class="paramname" id="rpipba4e3f5f2f510383e161">
5491 <em id="rpip81f9721221c616e0e768">b</em> </td>
5492         </tr>
5493         <tr id="rpipceddaff34fd6f36121d0">
5494           <td id="rpipc82b30389c5cce1a9256"></td>
5495           <td id="rpipa90b88bf822b816794e7">)</td>
5496           <td id="rpip11f8c640c921e9f3c5f1"></td>
5497 <td id="rpip4c2ac215094575a051b0"></td>
5498         </tr>
5499       </table>
5500 </div>
5501 <div class="memdoc" id="rpip600a446eb85c061ea9c2">
5502
5503 <p id="rpip542920d8f80e6546b340">Unsafe integer divide of two unsigned 32-bit values. </p>
5504 <h4 id="rpipcc80b4f201d7b58a4c32" data-parent-id="rpipf6f3d443e68225953a15" data-target-for="rpipcc80b4f201d7b58a4c32">Parameters</h4>
5505 <p class="paragraph" id="rpip8f7bcd4316821a6d1524" data-parent-id="rpipf6f3d443e68225953a15" data-target-for="rpip8f7bcd4316821a6d1524">
5506   </p>
5507 <table class="params" id="rpipab778bb7d30e2de22baa">
5508     <tr id="rpip7908fe2d3b96dc9b6e87">
5509 <td class="paramname" id="rpipdcba50452cf3e0660c6c">a</td>
5510 <td id="rpip54e146d8ff8ccce6867a">Dividend </td>
5511 </tr>
5512     <tr id="rpipc34c8834e460b2d88c9a">
5513 <td class="paramname" id="rpipa9599e73abfeeb73cce7">b</td>
5514 <td id="rpip8c06d6f2e0ceb29eb5cb">Divisor </td>
5515 </tr>
5516   </table>
5517   
5518
5519
5520 <h4 class="label" id="rpipa24c7d8b57c6581c2d91" data-parent-id="rpipd8f9606755f55c223f77" data-target-for="rpipa24c7d8b57c6581c2d91">Returns</h4>
5521 <p class="returns" id="rpipea8ed26940070406817f" data-parent-id="rpipd8f9606755f55c223f77" data-target-for="rpipea8ed26940070406817f">quotient in low word/r0, remainder in high word/r1</p>
5522 <p id="rpipa8fd2189e678a74b3348">Do not use in interrupts </p>
5523
5524 </div>
5525 </div>
5526 <a id="ga523fd2399753e2e1c9ebeb3bbc3ad175" name="ga523fd2399753e2e1c9ebeb3bbc3ad175"></a>
5527 </div>
5528 <div class="sect3">
5529 <h4 id="rpip83a5fbfa7768f5369eea">
5530 <a class="anchor" href="#rpip83a5fbfa7768f5369eea"></a>◆ divmod_u64u64()</h4>
5531 <div class="memitem" id="rpip4a8692ee59bccdf0c88f">
5532 <div class="memproto" id="rpip06e74ecb5a41439e8cca">
5533       <table class="memname" id="rpip2bcde4bbc096b6d39646">
5534         <tr id="rpip4b1f2e7ee380d8e95c78">
5535           <td class="memname" id="rpipcac9ff627c50837eb43e">uint64_t divmod_u64u64 </td>
5536           <td id="rpip1a5748652d1c78b9f961">(</td>
5537           <td class="paramtype" id="rpipdb6f10e9f31c4d78dc30">uint64_t </td>
5538           <td class="paramname" id="rpipa84d1743dc754d922e28">
5539 <em id="rpip6c75d52e7feca3b13b23">a</em>, </td>
5540         </tr>
5541         <tr id="rpip7ebf0f8188ff9453bd2d">
5542           <td class="paramkey" id="rpip7133d21f664312583f54"></td>
5543           <td id="rpip9d202749d525a11f9496"></td>
5544           <td class="paramtype" id="rpip0512b3965fa90b672c6f">uint64_t </td>
5545           <td class="paramname" id="rpipbd51d436c02c842508d8">
5546 <em id="rpipbda6a0fafc712a818fe2">b</em> </td>
5547         </tr>
5548         <tr id="rpip4fbd00ce8737fb145900">
5549           <td id="rpip6ea35dc62a20ae0c437d"></td>
5550           <td id="rpipae32b8821dd80ac40605">)</td>
5551           <td id="rpipb6a0f612f5a63889795b"></td>
5552 <td id="rpip258942d0d0876ebf3cb7"></td>
5553         </tr>
5554       </table>
5555 </div>
5556 <div class="memdoc" id="rpip19db281e618763f0a9ec">
5557
5558 <p id="rpip034e3d2836df37e12b45">Integer divide of two signed 64-bit values. </p>
5559 <h4 id="rpip3450d990a223d688a177" data-parent-id="rpip44160bce0e99d5a8df29" data-target-for="rpip3450d990a223d688a177">Parameters</h4>
5560 <p class="paragraph" id="rpip8291795a374f3b6b4001" data-parent-id="rpip44160bce0e99d5a8df29" data-target-for="rpip8291795a374f3b6b4001">
5561   </p>
5562 <table class="params" id="rpip9a64179ac816ae7a292e">
5563     <tr id="rpipbfd8832fcb7cc7d42e78">
5564 <td class="paramname" id="rpip63926e2e36e9b9e6442b">a</td>
5565 <td id="rpip6fa191053861dacb9067">Dividend </td>
5566 </tr>
5567     <tr id="rpipafa50d3d61f727e8d337">
5568 <td class="paramname" id="rpip8e9a101418cd9bacc180">b</td>
5569 <td id="rpipdebc47a2f7a37dfec791">Divisor </td>
5570 </tr>
5571   </table>
5572   
5573
5574
5575 <h4 class="label" id="rpip94713b742023f750617c" data-parent-id="rpip4cb95af5b110309fdd49" data-target-for="rpip94713b742023f750617c">Returns</h4>
5576 <p class="returns" id="rpip53ddf53cd3bbc67a1ae8" data-parent-id="rpip4cb95af5b110309fdd49" data-target-for="rpip53ddf53cd3bbc67a1ae8">quotient in result (r0,r1), remainder in regs (r2, r3) </p>
5577
5578 </div>
5579 </div>
5580 <a id="gad4a811e1113b670a7b67df9d7e8c17f8" name="gad4a811e1113b670a7b67df9d7e8c17f8"></a>
5581 </div>
5582 <div class="sect3">
5583 <h4 id="rpip303c329f8c95ef3121c9">
5584 <a class="anchor" href="#rpip303c329f8c95ef3121c9"></a>◆ divmod_u64u64_rem()</h4>
5585 <div class="memitem" id="rpipd8955277642488a96d1a">
5586 <div class="memproto" id="rpip39353f684ee43c818384">
5587       <table class="memname" id="rpipc2adf9ab073c0b9d9407">
5588         <tr id="rpipc3014a349c9f70930838">
5589           <td class="memname" id="rpip4c52aad51e17ea036c5e">uint64_t divmod_u64u64_rem </td>
5590           <td id="rpipd2c4be1587f1c170e2cd">(</td>
5591           <td class="paramtype" id="rpip89fb622597e32166ac86">uint64_t </td>
5592           <td class="paramname" id="rpip63695daa36cf8dc96bb7">
5593 <em id="rpipe27ab4c0ba8b8e221228">a</em>, </td>
5594         </tr>
5595         <tr id="rpipc048b89326256ff82469">
5596           <td class="paramkey" id="rpip71c10b46430d296ebae8"></td>
5597           <td id="rpipfe44ac1c717b7dc8097a"></td>
5598           <td class="paramtype" id="rpip7f55d33ceaceae5e47fd">uint64_t </td>
5599           <td class="paramname" id="rpip6897a4ba4e1bbc70158e">
5600 <em id="rpip79bddac7f8db6d6020c5">b</em>, </td>
5601         </tr>
5602         <tr id="rpip848e4a7f6ae6dc859029">
5603           <td class="paramkey" id="rpip5f4dba77891791faf51c"></td>
5604           <td id="rpip8aedcb2ccc066aa59ff9"></td>
5605           <td class="paramtype" id="rpip4c62c621dffe990c48e5">uint64_t * </td>
5606           <td class="paramname" id="rpip6b298fe36e7055600b75">
5607 <em id="rpipeee369959e19c121b276">rem</em> </td>
5608         </tr>
5609         <tr id="rpip4941944f781d5665a9d9">
5610           <td id="rpip785f8d5486eabb84a85e"></td>
5611           <td id="rpipba6a6f16a7f85fac235a">)</td>
5612           <td id="rpip6b81591674d4d5e20eda"></td>
5613 <td id="rpipdb0ba6d01827e42d273b"></td>
5614         </tr>
5615       </table>
5616 </div>
5617 <div class="memdoc" id="rpip0176bbd0c393124bb8a6">
5618
5619 <p id="rpipfda89d7c8c3b33c17599">Integer divide of two unsigned 64-bit values, with remainder. </p>
5620 <h4 id="rpip08f35e0bf8f65ddf5ab9" data-parent-id="rpipcf94be62f0000a5e7b76" data-target-for="rpip08f35e0bf8f65ddf5ab9">Parameters</h4>
5621 <p class="paragraph" id="rpipdae6919276f0e4b4bb15" data-parent-id="rpipcf94be62f0000a5e7b76" data-target-for="rpipdae6919276f0e4b4bb15">
5622   </p>
5623 <table class="params" id="rpipdec6fffffa47ef43b6db">
5624     <tr id="rpip9db1616487b76d88c813">
5625 <td class="paramdir" id="rpip2da94103596a1c79c800"></td>
5626 <td class="paramname" id="rpipb6e9eef217e05ae77edb">a</td>
5627 <td id="rpipc6923c50b0b03332a232">Dividend </td>
5628 </tr>
5629     <tr id="rpip51d0b7e5b88fd7172201">
5630 <td class="paramdir" id="rpipabd0d97be2bc6a3a7279"></td>
5631 <td class="paramname" id="rpip471784360b77bd39ebd9">b</td>
5632 <td id="rpipef75c1ec594a6fc7ed26">Divisor </td>
5633 </tr>
5634     <tr id="rpipe23647fe1e24edf37194">
5635 <td class="paramdir" id="rpip7d672b81b53f079a6c1c">[out]</td>
5636 <td class="paramname" id="rpip47c9d4832766dfdb6c8f">rem</td>
5637 <td id="rpip98baf0fd8e4ee30ef456">The remainder of dividend/divisor </td>
5638 </tr>
5639   </table>
5640   
5641
5642
5643 <h4 class="label" id="rpip3bc79a4d8a4d91ce7531" data-parent-id="rpip4241a40acf3b0f877069" data-target-for="rpip3bc79a4d8a4d91ce7531">Returns</h4>
5644 <p class="returns" id="rpip91aefe9bdd1ccbb47491" data-parent-id="rpip4241a40acf3b0f877069" data-target-for="rpip91aefe9bdd1ccbb47491">Quotient result of dividend/divisor </p>
5645
5646 </div>
5647 </div>
5648 <a id="ga9f37bfee18ba829fe4249b309dcb4fad" name="ga9f37bfee18ba829fe4249b309dcb4fad"></a>
5649 </div>
5650 <div class="sect3">
5651 <h4 id="rpip151c6e4c01262553ad27">
5652 <a class="anchor" href="#rpip151c6e4c01262553ad27"></a>◆ divmod_u64u64_rem_unsafe()</h4>
5653 <div class="memitem" id="rpip1f909d50dd235c42c8dc">
5654 <div class="memproto" id="rpipeb705ac3946c61d2c167">
5655       <table class="memname" id="rpip8c66861ac04c7352df27">
5656         <tr id="rpip1bf1d3b823df743eedad">
5657           <td class="memname" id="rpip76f4feb51ba5199ca941">uint64_t divmod_u64u64_rem_unsafe </td>
5658           <td id="rpip244a4f8d4fc1457d54d1">(</td>
5659           <td class="paramtype" id="rpip634aef409b9c24331b2b">uint64_t </td>
5660           <td class="paramname" id="rpip33bb6fac24583c170ed8">
5661 <em id="rpipef2340b99a1e067d69c5">a</em>, </td>
5662         </tr>
5663         <tr id="rpipa4b5a63f89d4c39c30ef">
5664           <td class="paramkey" id="rpip48f52fd9e4193796daa1"></td>
5665           <td id="rpip6bb7d4b48652add412d5"></td>
5666           <td class="paramtype" id="rpip0e22d18601d257589741">uint64_t </td>
5667           <td class="paramname" id="rpipe30bb3629c5f2e6456de">
5668 <em id="rpip6137515b700cba38515a">b</em>, </td>
5669         </tr>
5670         <tr id="rpipafea4691f828c42fcb45">
5671           <td class="paramkey" id="rpip4ee073ef0e1de8155e73"></td>
5672           <td id="rpipa09bc87e4e1f0f63ec9c"></td>
5673           <td class="paramtype" id="rpip4ef6f0361e8b29412116">uint64_t * </td>
5674           <td class="paramname" id="rpip071318b49cfc683e9ec0">
5675 <em id="rpipf7ec45ddbe201b6a86f5">rem</em> </td>
5676         </tr>
5677         <tr id="rpip0be8b81658f8103fbffe">
5678           <td id="rpip13ede011019c2efb3aa8"></td>
5679           <td id="rpipbe0e78521f2cac2285ed">)</td>
5680           <td id="rpip546482003616c4d93348"></td>
5681 <td id="rpip8e2f5dd5fcbf58975178"></td>
5682         </tr>
5683       </table>
5684 </div>
5685 <div class="memdoc" id="rpipf30a648c6b0e32add815">
5686
5687 <p id="rpipc41edcf07df93d24f9f6">Unsafe integer divide of two unsigned 64-bit values, with remainder. </p>
5688 <h4 id="rpip2857d11077928e458229" data-parent-id="rpip10ac0b5b38fa1d19c8ac" data-target-for="rpip2857d11077928e458229">Parameters</h4>
5689 <p class="paragraph" id="rpip410da067b4f327e41d15" data-parent-id="rpip10ac0b5b38fa1d19c8ac" data-target-for="rpip410da067b4f327e41d15">
5690   </p>
5691 <table class="params" id="rpipba85a60ada92609f5137">
5692     <tr id="rpip71b7f24bb28b0974f276">
5693 <td class="paramdir" id="rpipa7e0055fe914fca6bd5f"></td>
5694 <td class="paramname" id="rpip2818cdfe7127097d03bf">a</td>
5695 <td id="rpip9ec0093914d7f05cd3b4">Dividend </td>
5696 </tr>
5697     <tr id="rpipa56c44cc854b2c4e1c47">
5698 <td class="paramdir" id="rpip62adaa0584c6d62e453a"></td>
5699 <td class="paramname" id="rpipa0d0cb497a2f6c7679c6">b</td>
5700 <td id="rpip6cc6436a065a5dcd621f">Divisor </td>
5701 </tr>
5702     <tr id="rpipf4dda1f241ac660a4a8c">
5703 <td class="paramdir" id="rpip9dc78a2b8652d92e997b">[out]</td>
5704 <td class="paramname" id="rpip8a0e349c8a784846d2f1">rem</td>
5705 <td id="rpip021917c173df35be9ecc">The remainder of dividend/divisor </td>
5706 </tr>
5707   </table>
5708   
5709
5710
5711 <h4 class="label" id="rpip0c4104e41ec356099f8a" data-parent-id="rpip159a9d1c2e7791bb7b18" data-target-for="rpip0c4104e41ec356099f8a">Returns</h4>
5712 <p class="returns" id="rpip02a24bd75ba132938f5f" data-parent-id="rpip159a9d1c2e7791bb7b18" data-target-for="rpip02a24bd75ba132938f5f">Quotient result of dividend/divisor</p>
5713 <p id="rpip1c23f301dd889acefcd0">Do not use in interrupts </p>
5714
5715 </div>
5716 </div>
5717 <a id="ga18f537358cd342a32fa6781e7ca4b475" name="ga18f537358cd342a32fa6781e7ca4b475"></a>
5718 </div>
5719 <div class="sect3">
5720 <h4 id="rpip4e1e0ffba6fbc22c85bf">
5721 <a class="anchor" href="#rpip4e1e0ffba6fbc22c85bf"></a>◆ divmod_u64u64_unsafe()</h4>
5722 <div class="memitem" id="rpipba5cee1db84d9bae9bcf">
5723 <div class="memproto" id="rpip02b56e2f1f387b6d8120">
5724       <table class="memname" id="rpip65f491382fa6f613df8a">
5725         <tr id="rpip1c0d9d1f41fbad0eeceb">
5726           <td class="memname" id="rpip329f731e24eab2c4dc2c">uint64_t divmod_u64u64_unsafe </td>
5727           <td id="rpip4a6fba68d7e41ce78b1e">(</td>
5728           <td class="paramtype" id="rpipcbc6d39c0a7d98a9f1fa">uint64_t </td>
5729           <td class="paramname" id="rpip4453f1245b349d7356a4">
5730 <em id="rpip84fbe6944b066264683c">a</em>, </td>
5731         </tr>
5732         <tr id="rpip8992c72dab7efa11e9fc">
5733           <td class="paramkey" id="rpipbd6c6ff79c9e176acf49"></td>
5734           <td id="rpip6ec38182815cf5536d0f"></td>
5735           <td class="paramtype" id="rpip541216db17c153d76fb5">uint64_t </td>
5736           <td class="paramname" id="rpip640607e34c6c07d2db1b">
5737 <em id="rpipfd98529c410d9b2b5cc1">b</em> </td>
5738         </tr>
5739         <tr id="rpip29eb015e19953e4b6da1">
5740           <td id="rpipf00d52dd1c05f11bf0e4"></td>
5741           <td id="rpipd5b2283b125ca77bc653">)</td>
5742           <td id="rpipa3a99e998c1651044ff2"></td>
5743 <td id="rpip1b17b17f1d615a6c9668"></td>
5744         </tr>
5745       </table>
5746 </div>
5747 <div class="memdoc" id="rpip3c631956a611723ca180">
5748
5749 <p id="rpip14898801ef117f8de964">Unsafe integer divide of two signed 64-bit values. </p>
5750 <h4 id="rpipf6dc9212e2453690855e" data-parent-id="rpip46ecc3137fe6d7e08336" data-target-for="rpipf6dc9212e2453690855e">Parameters</h4>
5751 <p class="paragraph" id="rpip5f13000b30aa291c8a88" data-parent-id="rpip46ecc3137fe6d7e08336" data-target-for="rpip5f13000b30aa291c8a88">
5752   </p>
5753 <table class="params" id="rpip1c1d00f7ceedfb10d89f">
5754     <tr id="rpipe89fbc9e734c4ccb31ba">
5755 <td class="paramname" id="rpip1676472ddbec77be3d81">a</td>
5756 <td id="rpip4ae2f96e4b556f566832">Dividend </td>
5757 </tr>
5758     <tr id="rpipb17350a87eb563674280">
5759 <td class="paramname" id="rpipce0cb0b1d0acf3a4247d">b</td>
5760 <td id="rpip92dc377ab65344ad217c">Divisor </td>
5761 </tr>
5762   </table>
5763   
5764
5765
5766 <h4 class="label" id="rpip24773f00978b42ba5edc" data-parent-id="rpipe8b00c0aec20fe415bb8" data-target-for="rpip24773f00978b42ba5edc">Returns</h4>
5767 <p class="returns" id="rpip34fa18a1f0241408d338" data-parent-id="rpipe8b00c0aec20fe415bb8" data-target-for="rpip34fa18a1f0241408d338">quotient in result (r0,r1), remainder in regs (r2, r3)</p>
5768 <p id="rpip72261c07bdb0d4818d1a">Do not use in interrupts </p>
5769
5770 </div>
5771 </div>
5772 </div>
5773 </div>
5774 </div>
5775 <div class="sect1">
5776 <h2 id="pico_double">
5777 <a class="anchor" href="#pico_double"></a>pico_double</h2>
5778 <div class="sectionbody"></div>
5779 <div class="ingroups" id="rpip1779394bd80e177d0776">Part of: <a class="el" href="runtime.html" id="rpipe70310c42b98c05f79d0">Runtime Infrastructure</a>
5780 </div>
5781 <p id="rpipd56f3c32e3cdde33a19f">Optimized double-precision floating point functions</p>
5782 <p id="rpip3a6ccdd6817b274fa8b0">(Replacement) optimized implementations are provided of the following compiler built-ins and math library functions:</p>
5783 <div class="ulist" id="rpipa95627568fd47b41495d" data-parent-id="rpipad521f105fbbe799d52f">
5784 <ul data-target="true" data-target-for="rpipa95627568fd47b41495d">
5785 <li id="rpip7728be104bf8e98c6345"><p>__aeabi_dadd, __aeabi_ddiv, __aeabi_dmul, __aeabi_drsub, __aeabi_dsub, __aeabi_cdcmpeq, __aeabi_cdrcmple, __aeabi_cdcmple, __aeabi_dcmpeq, __aeabi_dcmplt, __aeabi_dcmple, __aeabi_dcmpge, __aeabi_dcmpgt, __aeabi_dcmpun, __aeabi_i2d, __aeabi_l2d, __aeabi_ui2d, __aeabi_ul2d, __aeabi_d2iz, __aeabi_d2lz, __aeabi_d2uiz, __aeabi_d2ulz, __aeabi_d2f</p></li>
5786 <li id="rpip9e09f3f5a43149378e04"><p>sqrt, cos, sin, tan, atan2, exp, log, ldexp, copysign, trunc, floor, ceil, round, asin, acos, atan, sinh, cosh, tanh, asinh, acosh, atanh, exp2, log2, exp10, log10, pow,, hypot, cbrt, fmod, drem, remainder, remquo, expm1, log1p, fma</p></li>
5787 <li id="rpip591dac2fd475b8752b98"><p>powint, sincos (GNU extensions)</p></li>
5788 </ul>
5789 </div>
5790 <p id="rpip5b59c9882545e03851b6">The following additional optimized functions are also provided:</p>
5791 <div class="ulist" id="rpip519fb03bd9b68fadbe23" data-parent-id="rpipad521f105fbbe799d52f">
5792 <ul data-target="true" data-target-for="rpip519fb03bd9b68fadbe23">
5793 <li id="rpip7262a1c3252ac0e1c1ac"><p>fix2double, ufix2double, fix642double, ufix642double, double2fix, double2ufix, double2fix64, double2ufix64, double2int, double2int64, double2int_z, double2int64_z </p></li>
5794 </ul>
5795 </div>
5796 </div>
5797 <div class="sect1">
5798 <h2 id="pico_float">
5799 <a class="anchor" href="#pico_float"></a>pico_float</h2>
5800 <div class="sectionbody"></div>
5801 <div class="ingroups" id="rpipcf6001cfd8f64cf18107">Part of: <a class="el" href="runtime.html" id="rpip7458927270b8299e35ac">Runtime Infrastructure</a>
5802 </div>
5803 <p id="rpip84baec4b5319008bf79c">Optimized single-precision floating point functions</p>
5804 <p id="rpipa284bc244f50d0da8f52">(Replacement) optimized implementations are provided of the following compiler built-ins and math library functions:</p>
5805 <div class="ulist" id="rpip0dcd62f8c17db08bdd86" data-parent-id="rpip4ae77ff6fa04038a8e6a">
5806 <ul data-target="true" data-target-for="rpip0dcd62f8c17db08bdd86">
5807 <li id="rpipec97efb22ae5fe94125a"><p>__aeabi_fadd, __aeabi_fdiv, __aeabi_fmul, __aeabi_frsub, __aeabi_fsub, __aeabi_cfcmpeq, __aeabi_cfrcmple, __aeabi_cfcmple, __aeabi_fcmpeq, __aeabi_fcmplt, __aeabi_fcmple, __aeabi_fcmpge, __aeabi_fcmpgt, __aeabi_fcmpun, __aeabi_i2f, __aeabi_l2f, __aeabi_ui2f, __aeabi_ul2f, __aeabi_f2iz, __aeabi_f2lz, __aeabi_f2uiz, __aeabi_f2ulz, __aeabi_f2d, sqrtf, cosf, sinf, tanf, atan2f, expf, logf</p></li>
5808 <li id="rpipa3c2bd95efe7050e7e5e"><p>ldexpf, copysignf, truncf, floorf, ceilf, roundf, asinf, acosf, atanf, sinhf, coshf, tanhf, asinhf, acoshf, atanhf, exp2f, log2f, exp10f, log10f, powf, hypotf, cbrtf, fmodf, dremf, remainderf, remquof, expm1f, log1pf, fmaf</p></li>
5809 <li id="rpip25b83e24a7fd1f74da35"><p>powintf, sincosf (GNU extensions)</p></li>
5810 </ul>
5811 </div>
5812 <p id="rpip4fe047f2e887926b08bb">The following additional optimized functions are also provided:</p>
5813 <div class="ulist" id="rpip84021888061ce3030749" data-parent-id="rpip4ae77ff6fa04038a8e6a">
5814 <ul data-target="true" data-target-for="rpip84021888061ce3030749">
5815 <li id="rpipf576c7e30859482af30a"><p>fix2float, ufix2float, fix642float, ufix642float, float2fix, float2ufix, float2fix64, float2ufix64, float2int, float2int64, float2int_z, float2int64_z </p></li>
5816 </ul>
5817 </div>
5818 </div>
5819 <div class="sect1">
5820 <h2 id="pico_int64_ops">
5821 <a class="anchor" href="#pico_int64_ops"></a>pico_int64_ops</h2>
5822 <div class="sectionbody"></div>
5823 <div class="ingroups" id="rpip492e8b49f7eb814697de">Part of: <a class="el" href="runtime.html" id="rpipb46350ccdcb24cf0d0dc">Runtime Infrastructure</a>
5824 </div>
5825 <p id="rpipd8ff838c9f1061a390cc">Optimized replacement implementations of the compiler built-in 64 bit multiplication</p>
5826 <p id="rpipeb1f4d2527d659911a96">This library does not provide any additional functions </p>
5827 </div>
5828 <div class="sect1">
5829 <h2 id="pico_malloc">
5830 <a class="anchor" href="#pico_malloc"></a>pico_malloc</h2>
5831 <div class="sectionbody"></div>
5832 <div class="ingroups" id="rpip979f8cc9146fcf202180">Part of: <a class="el" href="runtime.html" id="rpipc9edc3751c2f1f4bc059">Runtime Infrastructure</a>
5833 </div>
5834 <p id="rpipc6c45692600182ee3901">Multi-core safety for malloc, calloc and free</p>
5835 <p id="rpipe6cdeb558b4aeb65cc4e">This library does not provide any additional functions </p>
5836 </div>
5837 <div class="sect1">
5838 <h2 id="pico_mem_ops">
5839 <a class="anchor" href="#pico_mem_ops"></a>pico_mem_ops</h2>
5840 <div class="sectionbody"></div>
5841 <div class="ingroups" id="rpip40b9e9288654b9d86d7a">Part of: <a class="el" href="runtime.html" id="rpipc66bf652d18780c0f827">Runtime Infrastructure</a>
5842 </div>
5843 <p id="rpipcd7b7bd88f3d8af9ed9b">Provides optimized replacement implementations of the compiler built-in memcpy, memset and related functions:</p>
5844 <div class="ulist" id="rpipded41d9ba6195b6b470e" data-parent-id="rpipbaefc85dc5ff8399ca15">
5845 <ul data-target="true" data-target-for="rpipded41d9ba6195b6b470e">
5846 <li id="rpip4870b23c8cbcd37e3eb7"><p>memset, memcpy</p></li>
5847 <li id="rpipa9744e0f48c79ac92abc"><p>__aeabi_memset, __aeabi_memset4, __aeabi_memset8, __aeabi_memcpy, __aeabi_memcpy4, __aeabi_memcpy8</p></li>
5848 </ul>
5849 </div>
5850 <p id="rpip9e8945fb2ed8a4dc0bf7">This library does not provide any additional functions </p>
5851 </div>
5852 <div class="sect1">
5853 <h2 id="pico_platform">
5854 <a class="anchor" href="#pico_platform"></a>pico_platform</h2>
5855 <div class="sectionbody"></div>
5856 <div class="ingroups" id="rpipc3d916d5a8d38c49a997">Part of: <a class="el" href="runtime.html" id="rpipd6012010b63cbf50aaf5">Runtime Infrastructure</a>
5857 </div>
5858 <div class="sect2">
5859 <h3 id="rpipb6ca92b8ab23006742ba">
5860 <a class="anchor" href="#rpipb6ca92b8ab23006742ba"></a>Macros</h3>
5861 <ul class="memberdecls" id="rpip8365fa65b3f71e04fa60" data-parent-id="rpipa10afb45dcf78b1ffd5f">
5862 <li class="memitem">
5863 <p data-target="true" data-target-for="rpip8365fa65b3f71e04fa60"><span class="memItemLeft" data-target="true" id="rpipea51ca8fd97b96a64986" data-parent-id="rpip8365fa65b3f71e04fa60" data-target-for="rpipea51ca8fd97b96a64986">#define </span><span class="memItemRight" data-target="true" id="rpipd6227c13e67e11b19b70" data-parent-id="rpip8365fa65b3f71e04fa60" data-target-for="rpipd6227c13e67e11b19b70"><a class="el" href="#ga7a3538bc029b0e60c2f308008fc095c6" id="rpip9c6f82a26bb62b2d42c2" data-adjusted="true">__isr</a></span></p>
5864 </li>
5865 <li class="memdesc">
5866 <p data-target="true" data-target-for="rpip88eb34851d04fc0237a1"><span class="mdescLeft" data-target="true" id="rpip8145559ba0208781f943" data-parent-id="rpip88eb34851d04fc0237a1" data-target-for="rpip8145559ba0208781f943"> </span><span class="mdescRight" data-target="true" id="rpip3052f7a7095998bbff24" data-parent-id="rpip88eb34851d04fc0237a1" data-target-for="rpip3052f7a7095998bbff24">Marker for an interrupt handler.  <br id="rpip6f091218de2a1c64311f"></span></p>
5867 </li>
5868 <li class="memitem">
5869 <p data-target="true" data-target-for="rpipbb70413e5a2657b533b3"><span class="memItemLeft" data-target="true" id="rpip2d3c6bf2052264e93ae9" data-parent-id="rpipbb70413e5a2657b533b3" data-target-for="rpip2d3c6bf2052264e93ae9">#define </span><span class="memItemRight" data-target="true" id="rpipd4a12564ae90a4a64148" data-parent-id="rpipbb70413e5a2657b533b3" data-target-for="rpipd4a12564ae90a4a64148"><a class="el" href="#ga88c6891ab226690c883f3396611d8dc9" id="rpip327e6a5d38bf486eebc2" data-adjusted="true">__after_data</a>(group)   __attribute__((section(".after_data." group)))</span></p>
5870 </li>
5871 <li class="memdesc">
5872 <p data-target="true" data-target-for="rpipe7fcddee2f1b38d08f1a"><span class="mdescLeft" data-target="true" id="rpipd982b4dcfcbb93fb7bc7" data-parent-id="rpipe7fcddee2f1b38d08f1a" data-target-for="rpipd982b4dcfcbb93fb7bc7"> </span><span class="mdescRight" data-target="true" id="rpipa336339938246f441aca" data-parent-id="rpipe7fcddee2f1b38d08f1a" data-target-for="rpipa336339938246f441aca">Section attribute macro for placement in RAM after the <code id="rpip28600e4e115d23b0b868">.data</code> section.  <br id="rpipba68caa9fbfe8df63db3"></span></p>
5873 </li>
5874 <li class="memitem">
5875 <p data-target="true" data-target-for="rpip5e09a0e9bd3c2bef15fa"><span class="memItemLeft" data-target="true" id="rpipd61644c9f3d229335fdf" data-parent-id="rpip5e09a0e9bd3c2bef15fa" data-target-for="rpipd61644c9f3d229335fdf">#define </span><span class="memItemRight" data-target="true" id="rpip32519d307d89fad30c71" data-parent-id="rpip5e09a0e9bd3c2bef15fa" data-target-for="rpip32519d307d89fad30c71"><a class="el" href="#ga98947648f4fd8b22f9cccc4c2f0d64fd" id="rpip2e03d081ea29023f027f" data-adjusted="true">__not_in_flash</a>(group)   __attribute__((section(".time_critical." group)))</span></p>
5876 </li>
5877 <li class="memdesc">
5878 <p data-target="true" data-target-for="rpip99c0e6613d6daf1469d9"><span class="mdescLeft" data-target="true" id="rpip8d19bbd3be0d0301ac8f" data-parent-id="rpip99c0e6613d6daf1469d9" data-target-for="rpip8d19bbd3be0d0301ac8f"> </span><span class="mdescRight" data-target="true" id="rpipa26fef4aa3b68980a47f" data-parent-id="rpip99c0e6613d6daf1469d9" data-target-for="rpipa26fef4aa3b68980a47f">Section attribute macro for placement not in flash (i.e in RAM)  <br id="rpipe5dd736f084e13b029c5"></span></p>
5879 </li>
5880 <li class="memitem">
5881 <p data-target="true" data-target-for="rpip77a3e41186eff213705e"><span class="memItemLeft" data-target="true" id="rpipb9711364d22c43bf2ed1" data-parent-id="rpip77a3e41186eff213705e" data-target-for="rpipb9711364d22c43bf2ed1">#define </span><span class="memItemRight" data-target="true" id="rpipd2837835aabe49bd1e18" data-parent-id="rpip77a3e41186eff213705e" data-target-for="rpipd2837835aabe49bd1e18"><a class="el" href="#gad8b78e068558946081789ce1935528bf" id="rpipffe3a39fe48353993ffa" data-adjusted="true">__scratch_x</a>(group)   __attribute__((section(".scratch_x." group)))</span></p>
5882 </li>
5883 <li class="memdesc">
5884 <p data-target="true" data-target-for="rpip00b46013dc25aa4a0fbb"><span class="mdescLeft" data-target="true" id="rpipbdf7aa92c0c345584806" data-parent-id="rpip00b46013dc25aa4a0fbb" data-target-for="rpipbdf7aa92c0c345584806"> </span><span class="mdescRight" data-target="true" id="rpipbecb4b6c88632bfb0c06" data-parent-id="rpip00b46013dc25aa4a0fbb" data-target-for="rpipbecb4b6c88632bfb0c06">Section attribute macro for placement in the SRAM bank 4 (known as "scratch X")  <br id="rpipa27b8ed6de5446ccbad2"></span></p>
5885 </li>
5886 <li class="memitem">
5887 <p data-target="true" data-target-for="rpipbb7f636a342f0934f6cd"><span class="memItemLeft" data-target="true" id="rpip9042fd3b2e4f7902cffb" data-parent-id="rpipbb7f636a342f0934f6cd" data-target-for="rpip9042fd3b2e4f7902cffb">#define </span><span class="memItemRight" data-target="true" id="rpipe555cc5c97a2d4584195" data-parent-id="rpipbb7f636a342f0934f6cd" data-target-for="rpipe555cc5c97a2d4584195"><a class="el" href="#ga699cabffc3896ece6ec696e841146b3c" id="rpip5dfb883a78f126c8916f" data-adjusted="true">__scratch_y</a>(group)   __attribute__((section(".scratch_y." group)))</span></p>
5888 </li>
5889 <li class="memdesc">
5890 <p data-target="true" data-target-for="rpip048a440baa4400e7da68"><span class="mdescLeft" data-target="true" id="rpip71eb438cf42e6c089c79" data-parent-id="rpip048a440baa4400e7da68" data-target-for="rpip71eb438cf42e6c089c79"> </span><span class="mdescRight" data-target="true" id="rpipac606c88dd93bf7b21c9" data-parent-id="rpip048a440baa4400e7da68" data-target-for="rpipac606c88dd93bf7b21c9">Section attribute macro for placement in the SRAM bank 5 (known as "scratch Y")  <br id="rpipd6ea8046eedc3360f907"></span></p>
5891 </li>
5892 <li class="memitem">
5893 <p data-target="true" data-target-for="rpip37f7b174a628f30a7d43"><span class="memItemLeft" data-target="true" id="rpip4006df49530d1c5acc70" data-parent-id="rpip37f7b174a628f30a7d43" data-target-for="rpip4006df49530d1c5acc70">#define </span><span class="memItemRight" data-target="true" id="rpipd9fe7dd46101d5c688af" data-parent-id="rpip37f7b174a628f30a7d43" data-target-for="rpipd9fe7dd46101d5c688af"><a class="el" href="#ga118d39a4ebb425b8bef29e7a1f8731c2" id="rpipee119d6e0cd0244b1ccd" data-adjusted="true">__uninitialized_ram</a>(group)   __attribute__((section(".uninitialized_data." #group))) group</span></p>
5894 </li>
5895 <li class="memdesc">
5896 <p data-target="true" data-target-for="rpipb5fd6b1895dc31efd0d6"><span class="mdescLeft" data-target="true" id="rpipbd85061cf83d31f76b1b" data-parent-id="rpipb5fd6b1895dc31efd0d6" data-target-for="rpipbd85061cf83d31f76b1b"> </span><span class="mdescRight" data-target="true" id="rpip84f3781fe7ec33ae325a" data-parent-id="rpipb5fd6b1895dc31efd0d6" data-target-for="rpip84f3781fe7ec33ae325a">Section attribute macro for data that is to be left uninitialized.  <br id="rpipb6ba50cfb795e0ff1bb5"></span></p>
5897 </li>
5898 <li class="memitem">
5899 <p data-target="true" data-target-for="rpipfb20cd73bbe7b71bf8f4"><span class="memItemLeft" data-target="true" id="rpip86b04e6bbbef140f8857" data-parent-id="rpipfb20cd73bbe7b71bf8f4" data-target-for="rpip86b04e6bbbef140f8857">#define </span><span class="memItemRight" data-target="true" id="rpip1811bc223c6306dba4ca" data-parent-id="rpipfb20cd73bbe7b71bf8f4" data-target-for="rpip1811bc223c6306dba4ca"><a class="el" href="#ga0f27b5a18b17ef82ff103825a3b7322d" id="rpipe0ba04c9c1a3a42f0491" data-adjusted="true">__in_flash</a>(group)   __attribute__((section(".flashdata." group)))</span></p>
5900 </li>
5901 <li class="memdesc">
5902 <p data-target="true" data-target-for="rpipd010487c06c9e225d359"><span class="mdescLeft" data-target="true" id="rpipb158e078b462280d6609" data-parent-id="rpipd010487c06c9e225d359" data-target-for="rpipb158e078b462280d6609"> </span><span class="mdescRight" data-target="true" id="rpipd29507c40a0c8d88f114" data-parent-id="rpipd010487c06c9e225d359" data-target-for="rpipd29507c40a0c8d88f114">Section attribute macro for placement in flash even in a COPY_TO_RAM binary.  <br id="rpipbfbe467755ef50cccded"></span></p>
5903 </li>
5904 <li class="memitem">
5905 <p data-target="true" data-target-for="rpip7d39051d8053b84c71bb"><span class="memItemLeft" data-target="true" id="rpip1e671d3cddb3b45d7052" data-parent-id="rpip7d39051d8053b84c71bb" data-target-for="rpip1e671d3cddb3b45d7052">#define </span><span class="memItemRight" data-target="true" id="rpip6ec0090c784fa94c2f4a" data-parent-id="rpip7d39051d8053b84c71bb" data-target-for="rpip6ec0090c784fa94c2f4a"><a class="el" href="#ga7ea262771f71b22e4e720bc2ca31d936" id="rpipd01e7e6a4aa4e8736eb6" data-adjusted="true">__not_in_flash_func</a>(func_name)   <a class="el" href="#ga98947648f4fd8b22f9cccc4c2f0d64fd" id="rpipc61d304973f82bdb2892" data-adjusted="true">__not_in_flash</a>(__STRING(func_name)) func_name</span></p>
5906 </li>
5907 <li class="memdesc">
5908 <p data-target="true" data-target-for="rpip9c3e390349a99bb0d792"><span class="mdescLeft" data-target="true" id="rpip869f3b2cd5dcb760b9f9" data-parent-id="rpip9c3e390349a99bb0d792" data-target-for="rpip869f3b2cd5dcb760b9f9"> </span><span class="mdescRight" data-target="true" id="rpipde494b48fd31c0e88775" data-parent-id="rpip9c3e390349a99bb0d792" data-target-for="rpipde494b48fd31c0e88775">Indicates a function should not be stored in flash.  <br id="rpipb2ec4d57d4a1a676ed47"></span></p>
5909 </li>
5910 <li class="memitem">
5911 <p data-target="true" data-target-for="rpip637c046b6dac5233fc53"><span class="memItemLeft" data-target="true" id="rpip6cd17531eb577683e6cd" data-parent-id="rpip637c046b6dac5233fc53" data-target-for="rpip6cd17531eb577683e6cd">#define </span><span class="memItemRight" data-target="true" id="rpipda15b621d74e69948853" data-parent-id="rpip637c046b6dac5233fc53" data-target-for="rpipda15b621d74e69948853"><a class="el" href="#ga27ef91000958320e25ff481d16786ebf" id="rpip4c40997e316be8645210" data-adjusted="true">__time_critical_func</a>(func_name)   <a class="el" href="#ga7ea262771f71b22e4e720bc2ca31d936" id="rpip2946338a0e9deda844d1" data-adjusted="true">__not_in_flash_func</a>(func_name)</span></p>
5912 </li>
5913 <li class="memdesc">
5914 <p data-target="true" data-target-for="rpip6cbc21007dc83f84b343"><span class="mdescLeft" data-target="true" id="rpipf1b4f5d7127ccc69e4a8" data-parent-id="rpip6cbc21007dc83f84b343" data-target-for="rpipf1b4f5d7127ccc69e4a8"> </span><span class="mdescRight" data-target="true" id="rpip9a4afcd8b31b2a5c5cc0" data-parent-id="rpip6cbc21007dc83f84b343" data-target-for="rpip9a4afcd8b31b2a5c5cc0">Indicates a function is time/latency critical and should not run from flash.  <br id="rpip77e62e41c023d4aa2882"></span></p>
5915 </li>
5916 <li class="memitem">
5917 <p data-target="true" data-target-for="rpip7c1abddcaac699220969"><span class="memItemLeft" data-target="true" id="rpip85b99aa6be8ed15976fb" data-parent-id="rpip7c1abddcaac699220969" data-target-for="rpip85b99aa6be8ed15976fb">#define </span><span class="memItemRight" data-target="true" id="rpip44b297f95a5086cf4c05" data-parent-id="rpip7c1abddcaac699220969" data-target-for="rpip44b297f95a5086cf4c05"><a class="el" href="#gad9ab05c9a8f0ab455a5e11773d610787" id="rpipa639114ad6a6430fc4f8" data-adjusted="true">__no_inline_not_in_flash_func</a>(func_name)   __noinline <a class="el" href="#ga7ea262771f71b22e4e720bc2ca31d936" id="rpip3def09fbacc3481b69f0" data-adjusted="true">__not_in_flash_func</a>(func_name)</span></p>
5918 </li>
5919 <li class="memdesc">
5920 <p data-target="true" data-target-for="rpip8cc81f262bbd1fe95dcb"><span class="mdescLeft" data-target="true" id="rpip7906f68741dc3fc04a16" data-parent-id="rpip8cc81f262bbd1fe95dcb" data-target-for="rpip7906f68741dc3fc04a16"> </span><span class="mdescRight" data-target="true" id="rpip72d17128b6b0583e2895" data-parent-id="rpip8cc81f262bbd1fe95dcb" data-target-for="rpip72d17128b6b0583e2895">Indicate a function should not be stored in flash and should not be inlined.  <br id="rpipe993749d903f6a75cee7"></span></p>
5921 </li>
5922 <li class="memitem">
5923 <p data-target="true" data-target-for="rpip410fa7a5cd71594ec99f"><span class="memItemLeft" data-target="true" id="rpip8f98c48abe59413c72d2" data-parent-id="rpip410fa7a5cd71594ec99f" data-target-for="rpip8f98c48abe59413c72d2">#define </span><span class="memItemRight" data-target="true" id="rpip9c281e7316094309ab67" data-parent-id="rpip410fa7a5cd71594ec99f" data-target-for="rpip9c281e7316094309ab67"><a class="el" href="#ga23eadd8d1642fb8fe4600708c36e116a" id="rpip1c7c71a9c85ae3d67b3c" data-adjusted="true">__force_inline</a>   __always_inline</span></p>
5924 </li>
5925 <li class="memdesc">
5926 <p data-target="true" data-target-for="rpip4cd654f69201db9819f4"><span class="mdescLeft" data-target="true" id="rpip1f8b2f95f09112e21bf0" data-parent-id="rpip4cd654f69201db9819f4" data-target-for="rpip1f8b2f95f09112e21bf0"> </span><span class="mdescRight" data-target="true" id="rpip6b3bedc2c18b0c200196" data-parent-id="rpip4cd654f69201db9819f4" data-target-for="rpip6b3bedc2c18b0c200196">Attribute to force inlining of a function regardless of optimization level.  <br id="rpipfbabdc6f0e38bd6badd0"></span></p>
5927 </li>
5928 <li class="memitem">
5929 <p data-target="true" data-target-for="rpip7fbf260ac41179f28338"><span class="memItemLeft" data-target="true" id="rpipec293aabb61c5cd61584" data-parent-id="rpip7fbf260ac41179f28338" data-target-for="rpipec293aabb61c5cd61584"><a id="ga29022c0c92a05cf88ca5046c59d6f629" name="ga29022c0c92a05cf88ca5046c59d6f629"></a>
5930 #define </span><span class="memItemRight" data-target="true" id="rpip03e4a6f7070a1039912b" data-parent-id="rpip7fbf260ac41179f28338" data-target-for="rpip03e4a6f7070a1039912b"><b id="rpipcd662cb0906233624345">count_of</b>(a)   (sizeof(a)/sizeof((a)[0]))</span></p>
5931 </li>
5932 <li class="memdesc">
5933 <p data-target="true" data-target-for="rpip4fe6434245c4acb8611e"><span class="mdescLeft" data-target="true" id="rpipe0d6ab3ab7492b9aea73" data-parent-id="rpip4fe6434245c4acb8611e" data-target-for="rpipe0d6ab3ab7492b9aea73"> </span><span class="mdescRight" data-target="true" id="rpip07742c3fe385fc0c5a03" data-parent-id="rpip4fe6434245c4acb8611e" data-target-for="rpip07742c3fe385fc0c5a03">Macro to determine the number of elements in an array. <br id="rpip02e182d75242dd12b588"></span></p>
5934 </li>
5935 <li class="memitem">
5936 <p data-target="true" data-target-for="rpip29d7a1c04f4500d536c1"><span class="memItemLeft" data-target="true" id="rpipba0a3f424e6ba175eca2" data-parent-id="rpip29d7a1c04f4500d536c1" data-target-for="rpipba0a3f424e6ba175eca2"><a id="gafa99ec4acc4ecb2dc3c2d05da15d0e3f" name="gafa99ec4acc4ecb2dc3c2d05da15d0e3f"></a>
5937 #define </span><span class="memItemRight" data-target="true" id="rpipada5be9c31378140563f" data-parent-id="rpip29d7a1c04f4500d536c1" data-target-for="rpipada5be9c31378140563f"><b id="rpipcd7b844ae6dda25d25a6">MAX</b>(a,  b)   ((a)&gt;(b)?(a):(b))</span></p>
5938 </li>
5939 <li class="memdesc">
5940 <p data-target="true" data-target-for="rpip4431d08e37ae55aaadc1"><span class="mdescLeft" data-target="true" id="rpip649c25206620c0122485" data-parent-id="rpip4431d08e37ae55aaadc1" data-target-for="rpip649c25206620c0122485"> </span><span class="mdescRight" data-target="true" id="rpipb47edae21730ad846561" data-parent-id="rpip4431d08e37ae55aaadc1" data-target-for="rpipb47edae21730ad846561">Macro to return the maximum of two comparable values. <br id="rpip6da85500c8d4b52d0732"></span></p>
5941 </li>
5942 <li class="memitem">
5943 <p data-target="true" data-target-for="rpip45bee3265a10001b2e1a"><span class="memItemLeft" data-target="true" id="rpip7f4598dc5323203b010c" data-parent-id="rpip45bee3265a10001b2e1a" data-target-for="rpip7f4598dc5323203b010c"><a id="ga3acffbd305ee72dcd4593c0d8af64a4f" name="ga3acffbd305ee72dcd4593c0d8af64a4f"></a>
5944 #define </span><span class="memItemRight" data-target="true" id="rpip1e1cefee4f331d010771" data-parent-id="rpip45bee3265a10001b2e1a" data-target-for="rpip1e1cefee4f331d010771"><b id="rpipf3cd31a86acdfd7f3b05">MIN</b>(a,  b)   ((b)&gt;(a)?(a):(b))</span></p>
5945 </li>
5946 <li class="memdesc">
5947 <p data-target="true" data-target-for="rpip76417403b162434c6293"><span class="mdescLeft" data-target="true" id="rpip5a7d3e6b15cbbf251d0f" data-parent-id="rpip76417403b162434c6293" data-target-for="rpip5a7d3e6b15cbbf251d0f"> </span><span class="mdescRight" data-target="true" id="rpip49bf6ef5cc07786e64f8" data-parent-id="rpip76417403b162434c6293" data-target-for="rpip49bf6ef5cc07786e64f8">Macro to return the minimum of two comparable values. <br id="rpip835f5360cebf1b899a23"></span></p>
5948 </li>
5949 <li class="memitem">
5950 <p data-target="true" data-target-for="rpip7e0853f120eb3c1c60c3"><span class="memItemLeft" data-target="true" id="rpip65bc33a9b9dcf0d7d3fe" data-parent-id="rpip7e0853f120eb3c1c60c3" data-target-for="rpip65bc33a9b9dcf0d7d3fe">#define </span><span class="memItemRight" data-target="true" id="rpip8a962b1334a203ac14fc" data-parent-id="rpip7e0853f120eb3c1c60c3" data-target-for="rpip8a962b1334a203ac14fc"><a class="el" href="#ga8b4ea86124befde17d69926b4f938c07" id="rpipa51c46aee039ef41128d" data-adjusted="true">host_safe_hw_ptr</a>(x)   ((uintptr_t)(x))</span></p>
5951 </li>
5952 <li class="memdesc">
5953 <p data-target="true" data-target-for="rpip979f855f883961369668"><span class="mdescLeft" data-target="true" id="rpipbd5fd9cb70b708404a04" data-parent-id="rpip979f855f883961369668" data-target-for="rpipbd5fd9cb70b708404a04"> </span><span class="mdescRight" data-target="true" id="rpip040c28b56197526e5a56" data-parent-id="rpip979f855f883961369668" data-target-for="rpip040c28b56197526e5a56">Macro for converting memory addresses to 32 bit addresses suitable for DMA.  <br id="rpip54788b4da1c81b7d1428"></span></p>
5954 </li>
5955 <li class="memitem">
5956 <p data-target="true" data-target-for="rpipc820b7bdd8e94d8232b5"><span class="memItemLeft" data-target="true" id="rpip0a19264237b9553b900f" data-parent-id="rpipc820b7bdd8e94d8232b5" data-target-for="rpip0a19264237b9553b900f">#define </span><span class="memItemRight" data-target="true" id="rpipaa254c140f00abcce8b4" data-parent-id="rpipc820b7bdd8e94d8232b5" data-target-for="rpipaa254c140f00abcce8b4"><a class="el" href="#ga1f7eafa00361375ec15412f634ad67b7" id="rpipb1dec704fd9f6dc9101f" data-adjusted="true">__fast_mul</a>(a,  b)</span></p>
5957 </li>
5958 <li class="memdesc">
5959 <p data-target="true" data-target-for="rpip65ddbd1387eee7382a23"><span class="mdescLeft" data-target="true" id="rpipf03f86475cae92ba399c" data-parent-id="rpip65ddbd1387eee7382a23" data-target-for="rpipf03f86475cae92ba399c"> </span><span class="mdescRight" data-target="true" id="rpipe89a477e74bde5e92d8a" data-parent-id="rpip65ddbd1387eee7382a23" data-target-for="rpipe89a477e74bde5e92d8a">multiply two integer values using the fastest method possible  <br id="rpipd417017de0d1f8fa292c"></span></p>
5960 </li>
5961 <li class="memitem">
5962 <p data-target="true" data-target-for="rpip1baba55d4cf191c3f632"><span class="memItemLeft" data-target="true" id="rpip41844402f68df9f3979d" data-parent-id="rpip1baba55d4cf191c3f632" data-target-for="rpip41844402f68df9f3979d">#define </span><span class="memItemRight" data-target="true" id="rpip67602abfd0b0ca04a32b" data-parent-id="rpip1baba55d4cf191c3f632" data-target-for="rpip67602abfd0b0ca04a32b"><a class="el" href="#ga2d0b8227d9981a22692d5ef6aa1a386f" id="rpip6c594c505175b770bf77" data-adjusted="true">__check_type_compatible</a>(type_a,  type_b)   static_assert(__builtin_types_compatible_p(type_a, type_b), __STRING(type_a) " is not compatible with " __STRING(type_b));</span></p>
5963 </li>
5964 <li class="memdesc">
5965 <p data-target="true" data-target-for="rpip4bc2d399869508a26a92"><span class="mdescLeft" data-target="true" id="rpip3c575e4caa829f087468" data-parent-id="rpip4bc2d399869508a26a92" data-target-for="rpip3c575e4caa829f087468"> </span><span class="mdescRight" data-target="true" id="rpipa4f719ec16240a7631e4" data-parent-id="rpip4bc2d399869508a26a92" data-target-for="rpipa4f719ec16240a7631e4">Utility macro to assert two types are equivalent.  <br id="rpip5ee457a882513329c625"></span></p>
5966 </li>
5967 </ul>
5968 </div>
5969 <div class="sect2">
5970 <h3 id="rpip96324626dec724f7403d">
5971 <a class="anchor" href="#rpip96324626dec724f7403d"></a>Functions</h3>
5972 <ul class="memberdecls" id="rpip68305aec9da551d5cd95" data-parent-id="rpipf162c2a7d55a253bd76f">
5973 <li class="memitem">
5974 <p data-target="true" data-target-for="rpip68305aec9da551d5cd95"><span class="memItemLeft" data-target="true" id="rpipad98754f5588c53380b3" data-parent-id="rpip68305aec9da551d5cd95" data-target-for="rpipad98754f5588c53380b3"><a id="ga8bf6fec781d812539007d16d919bb87b" name="ga8bf6fec781d812539007d16d919bb87b"></a>
5975 static void </span><span class="memItemRight" data-target="true" id="rpipbfd02fe92efb375bf8b6" data-parent-id="rpip68305aec9da551d5cd95" data-target-for="rpipbfd02fe92efb375bf8b6"><b id="rpipbee9ab8c6255cc82e8b2">__breakpoint</b> (void)</span></p>
5976 </li>
5977 <li class="memdesc">
5978 <p data-target="true" data-target-for="rpip93143aaa08db1f83491e"><span class="mdescLeft" data-target="true" id="rpipcc02e93cb3a5315e6683" data-parent-id="rpip93143aaa08db1f83491e" data-target-for="rpipcc02e93cb3a5315e6683"> </span><span class="mdescRight" data-target="true" id="rpip9381018dd5fb9e348e83" data-parent-id="rpip93143aaa08db1f83491e" data-target-for="rpip9381018dd5fb9e348e83">Execute a breakpoint instruction. <br id="rpip7328e33c6f5f47b345fd"></span></p>
5979 </li>
5980 <li class="memitem">
5981 <p data-target="true" data-target-for="rpip48a183bfd3864a1dfa49"><span class="memItemLeft" data-target="true" id="rpipa3cc7bc1fcc708a145ca" data-parent-id="rpip48a183bfd3864a1dfa49" data-target-for="rpipa3cc7bc1fcc708a145ca">static __always_inline void </span><span class="memItemRight" data-target="true" id="rpipec5ff6c35fa08b0dd3e8" data-parent-id="rpip48a183bfd3864a1dfa49" data-target-for="rpipec5ff6c35fa08b0dd3e8"><a class="el" href="#gac01ec0ae597f7572f8e298fa4f48c8e6" id="rpipb9c7f7e7f6f92e36dd84" data-adjusted="true">__compiler_memory_barrier</a> (void)</span></p>
5982 </li>
5983 <li class="memdesc">
5984 <p data-target="true" data-target-for="rpip06a94bb587c46e02c079"><span class="mdescLeft" data-target="true" id="rpip2aeff2f0a22465d012ac" data-parent-id="rpip06a94bb587c46e02c079" data-target-for="rpip2aeff2f0a22465d012ac"> </span><span class="mdescRight" data-target="true" id="rpip6041e5815c3f39d8c3b5" data-parent-id="rpip06a94bb587c46e02c079" data-target-for="rpip6041e5815c3f39d8c3b5">Ensure that the compiler does not move memory access across this method call.  <br id="rpip97b033b5d79c94b43412"></span></p>
5985 </li>
5986 <li class="memitem">
5987 <p data-target="true" data-target-for="rpip2fac632d8947e8761ded"><span class="memItemLeft" data-target="true" id="rpipaabc6e60153a1382264a" data-parent-id="rpip2fac632d8947e8761ded" data-target-for="rpipaabc6e60153a1382264a">void </span><span class="memItemRight" data-target="true" id="rpipb9835057b6b9ff4e26ea" data-parent-id="rpip2fac632d8947e8761ded" data-target-for="rpipb9835057b6b9ff4e26ea"><a class="el" href="#ga29ba8f40ca0c961e04c7380a3665e612" id="rpip1da6f8704788cd647dd3" data-adjusted="true">panic_unsupported</a> (void)</span></p>
5988 </li>
5989 <li class="memdesc">
5990 <p data-target="true" data-target-for="rpip91efcd8155003c92371a"><span class="mdescLeft" data-target="true" id="rpipab9864750627e44ada3d" data-parent-id="rpip91efcd8155003c92371a" data-target-for="rpipab9864750627e44ada3d"> </span><span class="mdescRight" data-target="true" id="rpiped5da74ae0834c4503cb" data-parent-id="rpip91efcd8155003c92371a" data-target-for="rpiped5da74ae0834c4503cb">Panics with the message "Unsupported".  <br id="rpip14833816aa1be8665169"></span></p>
5991 </li>
5992 <li class="memitem">
5993 <p data-target="true" data-target-for="rpipa235eff42d5c32bb1264"><span class="memItemLeft" data-target="true" id="rpipcd7966fd518c30a9f90e" data-parent-id="rpipa235eff42d5c32bb1264" data-target-for="rpipcd7966fd518c30a9f90e">void </span><span class="memItemRight" data-target="true" id="rpipb973bf5b4efa7be38a3e" data-parent-id="rpipa235eff42d5c32bb1264" data-target-for="rpipb973bf5b4efa7be38a3e"><a class="el" href="#gad1f1a1dc0581a11b597453f148106393" id="rpipfd5d82547f9ed428c2ab" data-adjusted="true">panic</a> (const char *fmt,...)</span></p>
5994 </li>
5995 <li class="memdesc">
5996 <p data-target="true" data-target-for="rpip9fa6718b8c0ac9c0d8ba"><span class="mdescLeft" data-target="true" id="rpipcecb2f9c1d744658d623" data-parent-id="rpip9fa6718b8c0ac9c0d8ba" data-target-for="rpipcecb2f9c1d744658d623"> </span><span class="mdescRight" data-target="true" id="rpip4fecf1b3dd77b5f1e1e1" data-parent-id="rpip9fa6718b8c0ac9c0d8ba" data-target-for="rpip4fecf1b3dd77b5f1e1e1">Displays a panic message and halts execution.  <br id="rpip71c223a13da08d070412"></span></p>
5997 </li>
5998 <li class="memitem">
5999 <p data-target="true" data-target-for="rpipc596a40831d46c947843"><span class="memItemLeft" data-target="true" id="rpip63a4a28bab27eadfb7fb" data-parent-id="rpipc596a40831d46c947843" data-target-for="rpip63a4a28bab27eadfb7fb">uint8_t </span><span class="memItemRight" data-target="true" id="rpip09923b9ebd11b79d69ae" data-parent-id="rpipc596a40831d46c947843" data-target-for="rpip09923b9ebd11b79d69ae"><a class="el" href="#ga2f16fe03135e5a5cb9f098a538a8671a" id="rpip372ec4ea1909001a0602" data-adjusted="true">rp2040_chip_version</a> (void)</span></p>
6000 </li>
6001 <li class="memdesc">
6002 <p data-target="true" data-target-for="rpip5a9de5e61bd617265ebf"><span class="mdescLeft" data-target="true" id="rpip876a7202d1bff5265a35" data-parent-id="rpip5a9de5e61bd617265ebf" data-target-for="rpip876a7202d1bff5265a35"> </span><span class="mdescRight" data-target="true" id="rpipb9e4c8c0582bf36a9209" data-parent-id="rpip5a9de5e61bd617265ebf" data-target-for="rpipb9e4c8c0582bf36a9209">Returns the RP2040 chip revision number.  <br id="rpipa0aec22eb030e6460851"></span></p>
6003 </li>
6004 <li class="memitem">
6005 <p data-target="true" data-target-for="rpipd4f7cc5381b1366898ff"><span class="memItemLeft" data-target="true" id="rpip3d163055c05ca0657ea5" data-parent-id="rpipd4f7cc5381b1366898ff" data-target-for="rpip3d163055c05ca0657ea5">static uint8_t </span><span class="memItemRight" data-target="true" id="rpip775ea02af212990f1a8a" data-parent-id="rpipd4f7cc5381b1366898ff" data-target-for="rpip775ea02af212990f1a8a"><a class="el" href="#gadcb55b507bb15fbe5a71bcb2f222b6e2" id="rpipdf5fb999b6c26eed552b" data-adjusted="true">rp2040_rom_version</a> (void)</span></p>
6006 </li>
6007 <li class="memdesc">
6008 <p data-target="true" data-target-for="rpipeff5db2635eedf3d3c83"><span class="mdescLeft" data-target="true" id="rpipc1018bc0af134d5e8f39" data-parent-id="rpipeff5db2635eedf3d3c83" data-target-for="rpipc1018bc0af134d5e8f39"> </span><span class="mdescRight" data-target="true" id="rpip997ee703fbcfec9b4109" data-parent-id="rpipeff5db2635eedf3d3c83" data-target-for="rpip997ee703fbcfec9b4109">Returns the RP2040 rom version number.  <br id="rpip5a5d5219ea62c2392e75"></span></p>
6009 </li>
6010 <li class="memitem">
6011 <p data-target="true" data-target-for="rpipc9b89a3fb655654c02c2"><span class="memItemLeft" data-target="true" id="rpip6560ed6c5939187f5d1a" data-parent-id="rpipc9b89a3fb655654c02c2" data-target-for="rpip6560ed6c5939187f5d1a">static __always_inline void </span><span class="memItemRight" data-target="true" id="rpip896ac559ccb784c8e74f" data-parent-id="rpipc9b89a3fb655654c02c2" data-target-for="rpip896ac559ccb784c8e74f"><a class="el" href="#gaf04e1c7eb32935a422d975abdec4f4b0" id="rpipace6c217ff4dd530b11c" data-adjusted="true">tight_loop_contents</a> (void)</span></p>
6012 </li>
6013 <li class="memdesc">
6014 <p data-target="true" data-target-for="rpipa3b610702150946ed7ba"><span class="mdescLeft" data-target="true" id="rpip59bd453268564704b962" data-parent-id="rpipa3b610702150946ed7ba" data-target-for="rpip59bd453268564704b962"> </span><span class="mdescRight" data-target="true" id="rpipf93cb9a3c32c09a9ebe6" data-parent-id="rpipa3b610702150946ed7ba" data-target-for="rpipf93cb9a3c32c09a9ebe6">No-op function for the body of tight loops.  <br id="rpipf713b1e1180f5c586ed4"></span></p>
6015 </li>
6016 <li class="memitem">
6017 <p data-target="true" data-target-for="rpipbbb237906d5117d64819"><span class="memItemLeft" data-target="true" id="rpipcdb118332a482638295b" data-parent-id="rpipbbb237906d5117d64819" data-target-for="rpipcdb118332a482638295b">static __always_inline int32_t </span><span class="memItemRight" data-target="true" id="rpipf0fd2d484c2228351e91" data-parent-id="rpipbbb237906d5117d64819" data-target-for="rpipf0fd2d484c2228351e91"><a class="el" href="#ga63f9737a1242323cc33b89d06ee8d935" id="rpip9b0513c64ebc2faf7d3e" data-adjusted="true">__mul_instruction</a> (int32_t a, int32_t b)</span></p>
6018 </li>
6019 <li class="memdesc">
6020 <p data-target="true" data-target-for="rpipce9f4ca135a2990cd162"><span class="mdescLeft" data-target="true" id="rpip20eaca2057ce7a876e9d" data-parent-id="rpipce9f4ca135a2990cd162" data-target-for="rpip20eaca2057ce7a876e9d"> </span><span class="mdescRight" data-target="true" id="rpip9a9dfbe887d49f6932c2" data-parent-id="rpipce9f4ca135a2990cd162" data-target-for="rpip9a9dfbe887d49f6932c2">Multiply two integers using an assembly <code id="rpipbc69b777385a6c5b01e4">MUL</code> instruction.  <br id="rpipaca5b7f44ee37d38e051"></span></p>
6021 </li>
6022 <li class="memitem">
6023 <p data-target="true" data-target-for="rpip768e31db6035aa6819ab"><span class="memItemLeft" data-target="true" id="rpipb23437ffb3e9d0ee563f" data-parent-id="rpip768e31db6035aa6819ab" data-target-for="rpipb23437ffb3e9d0ee563f">static __always_inline uint </span><span class="memItemRight" data-target="true" id="rpipc9d743ef348de6fdcffb" data-parent-id="rpip768e31db6035aa6819ab" data-target-for="rpipc9d743ef348de6fdcffb"><a class="el" href="#ga8a35e9582b94259dc1c36938949f7ca4" id="rpipf4fe2f0b662932f5326e" data-adjusted="true">__get_current_exception</a> (void)</span></p>
6024 </li>
6025 <li class="memdesc">
6026 <p data-target="true" data-target-for="rpip9cdabdda58a1b185a41f"><span class="mdescLeft" data-target="true" id="rpip07c01f082734fb347962" data-parent-id="rpip9cdabdda58a1b185a41f" data-target-for="rpip07c01f082734fb347962"> </span><span class="mdescRight" data-target="true" id="rpip6c778c4657f3b65f4054" data-parent-id="rpip9cdabdda58a1b185a41f" data-target-for="rpip6c778c4657f3b65f4054">Get the current exception level on this core.  <br id="rpip1d387e79b51e5a49d4ea"></span></p>
6027 </li>
6028 <li class="memitem">
6029 <p data-target="true" data-target-for="rpipa6bd8756e6b43b9d8782"><span class="memItemLeft" data-target="true" id="rpipf22386d8f9b6852b101e" data-parent-id="rpipa6bd8756e6b43b9d8782" data-target-for="rpipf22386d8f9b6852b101e">static void </span><span class="memItemRight" data-target="true" id="rpip272fc4099bd3a4ad0375" data-parent-id="rpipa6bd8756e6b43b9d8782" data-target-for="rpip272fc4099bd3a4ad0375"><a class="el" href="#ga49c4fc3b5d3fbe9f2f6f7bc500b9db4f" id="rpipa3aa9adb2b2bc89049e3" data-adjusted="true">busy_wait_at_least_cycles</a> (uint32_t minimum_cycles)</span></p>
6030 </li>
6031 <li class="memdesc">
6032 <p data-target="true" data-target-for="rpipce24429c96227fcb5e15"><span class="mdescLeft" data-target="true" id="rpipd43cb143f67775d64f41" data-parent-id="rpipce24429c96227fcb5e15" data-target-for="rpipd43cb143f67775d64f41"> </span><span class="mdescRight" data-target="true" id="rpip81b9baf9295bdbc96182" data-parent-id="rpipce24429c96227fcb5e15" data-target-for="rpip81b9baf9295bdbc96182">Helper method to busy-wait for at least the given number of cycles.  <br id="rpipf0ab0ea74bfea7d14ec6"></span></p>
6033 </li>
6034 <li class="memitem">
6035 <p data-target="true" data-target-for="rpip0ee4eb82a1a201f54ed1"><span class="memItemLeft" data-target="true" id="rpip2a1cd23bcfb363807a02" data-parent-id="rpip0ee4eb82a1a201f54ed1" data-target-for="rpip2a1cd23bcfb363807a02">static __always_inline uint </span><span class="memItemRight" data-target="true" id="rpip871df8f65726b72fd0de" data-parent-id="rpip0ee4eb82a1a201f54ed1" data-target-for="rpip871df8f65726b72fd0de"><a class="el" href="#ga974b4945ae0ac8892717cb5f05e83c53" id="rpip2c09f9d7d9492b9ad4a7" data-adjusted="true">get_core_num</a> (void)</span></p>
6036 </li>
6037 <li class="memdesc">
6038 <p data-target="true" data-target-for="rpip513519b2024a61fd1d12"><span class="mdescLeft" data-target="true" id="rpipe03121fbe1a20a8becf9" data-parent-id="rpip513519b2024a61fd1d12" data-target-for="rpipe03121fbe1a20a8becf9"> </span><span class="mdescRight" data-target="true" id="rpip642f72e4037ade7f4893" data-parent-id="rpip513519b2024a61fd1d12" data-target-for="rpip642f72e4037ade7f4893">Get the current core number.  <br id="rpip6c4c02b411b6a633d769"></span></p>
6039 </li>
6040 </ul>
6041 <a name="details" id="details"></a>
6042 </div>
6043 <div class="sect2">
6044 <h3 id="rpip092e8191441c92cf5ccf">
6045 <a class="anchor" href="#rpip092e8191441c92cf5ccf"></a>Detailed Description</h3>
6046 <p id="rpip4df3da44d5b9b96215a0">Macros and definitions (and functions when included by non assembly code) for the RP2 family device / architecture to provide a common abstraction over low level compiler / platform specifics.</p>
6047 <p id="rpipfddbd94edbdbeb5030e5">This header may be included by assembly code </p>
6048 </div>
6049 <div class="sect2">
6050 <h3 id="rpip464a3792c78a5a9ffa73">
6051 <a class="anchor" href="#rpip464a3792c78a5a9ffa73"></a>Macro Definition Documentation</h3>
6052 <a id="ga88c6891ab226690c883f3396611d8dc9" name="ga88c6891ab226690c883f3396611d8dc9"></a>
6053 <div class="sect3">
6054 <h4 id="rpipee6170c105847244af1b">
6055 <a class="anchor" href="#rpipee6170c105847244af1b"></a>◆ __after_data</h4>
6056 <div class="memitem" id="rpip3b67d180dc9bfeaba39d">
6057 <div class="memproto" id="rpipe1739f13d1b7b4ac9856">
6058       <table class="memname" id="rpipf1024cdf02449a578d17">
6059         <tr id="rpipd8e2ee8a972acaf72fef">
6060           <td class="memname" id="rpip77b55c54aefe5235aaec">#define __after_data</td>
6061           <td id="rpip919793a77c4e979d4c18">(</td>
6062           <td class="paramtype" id="rpip661fc4fe2b9962a9f28c"> </td>
6063           <td class="paramname" id="rpip992fc9dc0b377ae496d7">group</td>
6064 <td id="rpip8296dc18fa32c5c77ead">)</td>
6065           <td id="rpipa817c9607a2b0a960cfa">   __attribute__((section(".after_data." group)))</td>
6066         </tr>
6067       </table>
6068 </div>
6069 <div class="memdoc" id="rpipc817e297efc1c7af5a54">
6070
6071 <p id="rpipa54611c68c6490d9f28f">Section attribute macro for placement in RAM after the <code id="rpip6d27e27224ffa0c0f215">.data</code> section. </p>
6072 <p id="rpipb3f95dd50cb4cd262f24">For example a 400 element <code id="rpip37816535571a83b50974">uint32_t</code> array placed after the .data section </p>
6073 <pre class="fragment" id="rpipd290668d169ca2c1b2e6">uint32_t __after_data("my_group_name") a_big_array[400];
6074 </pre>
6075 <p id="rpipbcb7a4a8b4003d193331"> The section attribute is <code id="rpipf679855e81d7d4c69fdb">.after_data.&lt;group&gt;</code></p>
6076 <h4 id="rpipce598f9daf240a1bccfd" data-parent-id="rpip1d02fb627754724e141d" data-target-for="rpipce598f9daf240a1bccfd">Parameters</h4>
6077 <p class="paragraph" id="rpip03da959bd6a871dc1b05" data-parent-id="rpip1d02fb627754724e141d" data-target-for="rpip03da959bd6a871dc1b05">
6078   </p>
6079 <table class="params" id="rpip258f1f455dea00433570">
6080     <tr id="rpip9203c0bd9cf924c68192">
6081 <td class="paramname" id="rpip8fd021f2ae9c79467ac0">group</td>
6082 <td id="rpip165ebb4d04c6d0cdd0f6">a string suffix to use in the section name to distinguish groups that can be linker garbage-collected independently </td>
6083 </tr>
6084   </table>
6085   
6086
6087
6088
6089 </div>
6090 </div>
6091 <a id="ga2d0b8227d9981a22692d5ef6aa1a386f" name="ga2d0b8227d9981a22692d5ef6aa1a386f"></a>
6092 </div>
6093 <div class="sect3">
6094 <h4 id="rpip2b104bedf4eb8aad6818">
6095 <a class="anchor" href="#rpip2b104bedf4eb8aad6818"></a>◆ __check_type_compatible</h4>
6096 <div class="memitem" id="rpip606444fd20b3523c9724">
6097 <div class="memproto" id="rpip0cd67350a440f3c9c43e">
6098       <table class="memname" id="rpip2d09e285567a780017d4">
6099         <tr id="rpip181acdbbef7a3b8a86ca">
6100           <td class="memname" id="rpip035c9676b0a2964099ac">#define __check_type_compatible</td>
6101           <td id="rpip1537fb4dd4d69e588e98">(</td>
6102           <td class="paramtype" id="rpip090017d9651119b97631"> </td>
6103           <td class="paramname" id="rpip83a89e981a423f01fc62">type_a, </td>
6104         </tr>
6105         <tr id="rpip02060912ea325f346c7e">
6106           <td class="paramkey" id="rpip871e3fe6985707759a21"></td>
6107           <td id="rpipc962f1da18ef851bf937"></td>
6108           <td class="paramtype" id="rpipc3ec4a4433133447cb95"> </td>
6109           <td class="paramname" id="rpip84dbd89589d27760fa46">type_b </td>
6110         </tr>
6111         <tr id="rpip3c0b4b1274ddb2e4c275">
6112           <td id="rpipc9ac1e7fcc84edaa3681"></td>
6113           <td id="rpipb07c81cf177c540d48fa">)</td>
6114           <td id="rpipaf2cf0f901092c868717"></td>
6115 <td id="rpip7a091307a4a5f550a6b0">   static_assert(__builtin_types_compatible_p(type_a, type_b), __STRING(type_a) " is not compatible with " __STRING(type_b));</td>
6116         </tr>
6117       </table>
6118 </div>
6119 <div class="memdoc" id="rpip7efb40a804422e25ee56">
6120
6121 <p id="rpip319d0f659f8cb9a097f4">Utility macro to assert two types are equivalent. </p>
6122 <p id="rpip421dfd2ecfca9ba43cc3">This macro can be useful in other macros along with <code id="rpip2388e31dfa7b107bfd46">typeof</code> to assert that two parameters are of equivalent type (or that a single parameter is of an expected type) </p>
6123
6124 </div>
6125 </div>
6126 <a id="ga1f7eafa00361375ec15412f634ad67b7" name="ga1f7eafa00361375ec15412f634ad67b7"></a>
6127 </div>
6128 <div class="sect3">
6129 <h4 id="rpipf27d35b42ab0dc9c203e">
6130 <a class="anchor" href="#rpipf27d35b42ab0dc9c203e"></a>◆ __fast_mul</h4>
6131 <div class="memitem" id="rpip214392cd1032d82f4aee">
6132 <div class="memproto" id="rpip44c514ed54b6094c3516">
6133       <table class="memname" id="rpipd32616e720d84b2515f0">
6134         <tr id="rpip1211a3d6db960eb186ad">
6135           <td class="memname" id="rpip070cbee394534f6892f4">#define __fast_mul</td>
6136           <td id="rpip1fd16f422f85a6a8f798">(</td>
6137           <td class="paramtype" id="rpipd205ae737e9428b7e907"> </td>
6138           <td class="paramname" id="rpip3ace8053f954009c902c">a, </td>
6139         </tr>
6140         <tr id="rpip099ed1953ba825ef2975">
6141           <td class="paramkey" id="rpip7dfd177817ea296d1474"></td>
6142           <td id="rpip347fc05258cde205f17b"></td>
6143           <td class="paramtype" id="rpip2aceca47ef0c907850cd"> </td>
6144           <td class="paramname" id="rpip18a4108500724d833100">b </td>
6145         </tr>
6146         <tr id="rpip9b35be891afb0870bbfc">
6147           <td id="rpip877d1d5dc5e2302f4e38"></td>
6148           <td id="rpip27196446185404268295">)</td>
6149           <td id="rpipb705bc308b535556b3ba"></td>
6150 <td id="rpip00741954db23be4dbdc8"></td>
6151         </tr>
6152       </table>
6153 </div>
6154 <div class="memdoc" id="rpipa299fb6099c8684a40e6">
6155 <b id="rpip843dcbf6702574f00797">Value:</b><div class="listingblock" id="rpip19e7f2359352f1b4950f" data-parent-id="rpipa299fb6099c8684a40e6">
6156 <button class="copy-button hidden" aria-label="copy code to clipboard" type="button" aria-hidden="true"><div class="copy-button-inner">
6157 <svg xmlns="http://www.w3.org/2000/svg" id="Layer_1" data-name="Layer 1" viewBox="0 0 12 12"><rect x="1" y="6" width="5" height="1"></rect><path d="M10,1H8A1,1,0,0,0,7,0H6A1,1,0,0,0,5,1H3A1,1,0,0,0,2,2V5H3V2H4V3H9V2h1v9H3V8H2v3a1,1,0,0,0,1,1h7a1,1,0,0,0,1-1V2A1,1,0,0,0,10,1ZM6.5,2.25a.75.75,0,1,1,.75-.75A.76.76,0,0,1,6.5,2.25Z"></path><path d="M6.32,6.32,4.43,4.43A.25.25,0,0,0,4,4.6V8.4a.25.25,0,0,0,.43.17L6.32,6.68A.25.25,0,0,0,6.32,6.32Z"></path></svg><strong class="copy-button-label"></strong><span class="tooltip hidden"> Copy to Clipboard</span>
6158 </div></button><div class="content" data-target="true" data-target-for="rpip19e7f2359352f1b4950f">
6159 <div class="line" id="rpipf4325926876442e24a3e">__builtin_choose_expr(__builtin_constant_p(b) &amp;&amp; !__builtin_constant_p(a), \</div>
6160 <div class="line" id="rpipe3f74e2379de07dc344d">(__builtin_popcount(b) &gt;= 2 ? <a class="code hl_function" href="#ga63f9737a1242323cc33b89d06ee8d935" id="rpipeb27fe9598a1f60f08d8" data-adjusted="true">__mul_instruction</a>(a,b) : (a)*(b)), \</div>
6161 <div class="line" id="rpipfbcb0a474cb4909c8f8f">(a)*(b))</div>
6162 <div class="ttc" id="agroup__pico__platform_html_ga63f9737a1242323cc33b89d06ee8d935">
6163 <div class="ttname" id="rpip5c7206345df2deb0ed2d"><a href="#ga63f9737a1242323cc33b89d06ee8d935" id="rpip9fe37fdad194669264d8" data-adjusted="true">__mul_instruction</a></div>
6164 <div class="ttdeci" id="rpipc062d253b29966eebba7">static __always_inline int32_t __mul_instruction(int32_t a, int32_t b)</div>
6165 <div class="ttdoc" id="rpipec80ba83cb1efbeef563">Multiply two integers using an assembly MUL instruction.</div>
6166 <div class="ttdef" id="rpip9814f47cbd629d1d5222">
6167 <b id="rpiped4ac6cf11baba9300d5">Definition:</b> platform.h:446</div>
6168 </div>
6169 </div>
6170 </div>
6171 <!-- fragment -->
6172 <p id="rpip54a1d719f134f29d2452">multiply two integer values using the fastest method possible </p>
6173 <p id="rpip9c22d2061b3b4cb9414a">Efficiently multiplies value a by possibly constant value b.</p>
6174 <p id="rpipb75b319b1073d5e8b838">If b is known to be constant and not zero or a power of 2, then a mul instruction is used rather than gcc's default which is often a slow combination of shifts and adds. If b is a power of 2 then a single shift is of course preferable and will be used</p>
6175 <h4 id="rpipb49266e74c8380c6be2d" data-parent-id="rpipb0259660577d5d82c19e" data-target-for="rpipb49266e74c8380c6be2d">Parameters</h4>
6176 <p class="paragraph" id="rpip3083bc87fc3da341c6c8" data-parent-id="rpipb0259660577d5d82c19e" data-target-for="rpip3083bc87fc3da341c6c8">
6177   </p>
6178 <table class="params" id="rpip63aaa2c696f24ff0aab2">
6179     <tr id="rpip6c390776fafdde683e20">
6180 <td class="paramname" id="rpipa94f069e1ad391babdc5">a</td>
6181 <td id="rpipff93bb2ba9382050f705">the first operand </td>
6182 </tr>
6183     <tr id="rpipb27e2c9141b6bb5fff74">
6184 <td class="paramname" id="rpip18a6177d63bf21b234cc">b</td>
6185 <td id="rpipe98d5961f6bf7b4b8086">the second operand </td>
6186 </tr>
6187   </table>
6188   
6189
6190
6191 <h4 class="label" id="rpipf0cd4428c299fc8c8815" data-parent-id="rpipca4dda6782578794198e" data-target-for="rpipf0cd4428c299fc8c8815">Returns</h4>
6192 <p class="returns" id="rpipce4a3aff5de7a845b3b7" data-parent-id="rpipca4dda6782578794198e" data-target-for="rpipce4a3aff5de7a845b3b7">a * b </p>
6193
6194 </div>
6195 </div>
6196 <a id="ga23eadd8d1642fb8fe4600708c36e116a" name="ga23eadd8d1642fb8fe4600708c36e116a"></a>
6197 </div>
6198 <div class="sect3">
6199 <h4 id="rpip8f89058d29efd4ee5cc6">
6200 <a class="anchor" href="#rpip8f89058d29efd4ee5cc6"></a>◆ __force_inline</h4>
6201 <div class="memitem" id="rpipd3db218da482a58b4975">
6202 <div class="memproto" id="rpip818d8616e8f9dea6f844">
6203       <table class="memname" id="rpip33849b29c46379cc3b13">
6204         <tr id="rpip84ffe16415963e4ea6e2">
6205           <td class="memname" id="rpip08cac2040aa6410cac2e">#define __force_inline   __always_inline</td>
6206         </tr>
6207       </table>
6208 </div>
6209 <div class="memdoc" id="rpip8b7b45c3973b6a151140">
6210
6211 <p id="rpip3f1c0e0b8bf4665d249f">Attribute to force inlining of a function regardless of optimization level. </p>
6212 <p id="rpipcfa75994cb8acf74f15e">For example my_function here will always be inlined: </p>
6213 <pre class="fragment" id="rpip43da2deb914283737d25">int __force_inline my_function(int x) {
6214 </pre>
6215 </div>
6216 </div>
6217 <a id="ga0f27b5a18b17ef82ff103825a3b7322d" name="ga0f27b5a18b17ef82ff103825a3b7322d"></a>
6218 </div>
6219 <div class="sect3">
6220 <h4 id="rpip1b78fc0a8c390a4ca7c7">
6221 <a class="anchor" href="#rpip1b78fc0a8c390a4ca7c7"></a>◆ __in_flash</h4>
6222 <div class="memitem" id="rpip8ab815c28f8288834f36">
6223 <div class="memproto" id="rpipb2c3b16955f0173a8581">
6224       <table class="memname" id="rpip45b216e088a262bd83b3">
6225         <tr id="rpipe5f99faab506e94b8ecc">
6226           <td class="memname" id="rpip5ac63535792b5c54e359">#define __in_flash</td>
6227           <td id="rpip2601880ceb1ab99f4c30">(</td>
6228           <td class="paramtype" id="rpipe3089388b5d30315a15a"> </td>
6229           <td class="paramname" id="rpip770f7a6a2f3b2fb53d2c">group</td>
6230 <td id="rpipe136e0bf5e0106f7b879">)</td>
6231           <td id="rpip00b0687a9e8fec81d3e0">   __attribute__((section(".flashdata." group)))</td>
6232         </tr>
6233       </table>
6234 </div>
6235 <div class="memdoc" id="rpip32d6f7539c586f1dc6ce">
6236
6237 <p id="rpip717366bc2d409fc4d3e5">Section attribute macro for placement in flash even in a COPY_TO_RAM binary. </p>
6238 <p id="rpip11f16530db589b5257a6">For example a <code id="rpip79ddc33d66d17681cd5c">uint32_t</code> variable explicitly placed in flash (it will hard fault if you attempt to write it!) </p>
6239 <pre class="fragment" id="rpipc58ac70a47cd2df99205">uint32_t __in_flash("my_group_name") foo = 23;
6240 </pre>
6241 <p id="rpipcb6ab5f9e5a550bed289"> The section attribute is <code id="rpip3ed547a113f79561c749">.flashdata.&lt;group&gt;</code></p>
6242 <h4 id="rpip8ee3718e86b03c4d022e" data-parent-id="rpipbd5a88ce7c83583e6a6e" data-target-for="rpip8ee3718e86b03c4d022e">Parameters</h4>
6243 <p class="paragraph" id="rpip04bfd80ce82274943c0c" data-parent-id="rpipbd5a88ce7c83583e6a6e" data-target-for="rpip04bfd80ce82274943c0c">
6244   </p>
6245 <table class="params" id="rpip4217ed6f9d7bc1fef8ae">
6246     <tr id="rpipd29f5de838ea9a7210a4">
6247 <td class="paramname" id="rpip4a2a0363a0360873d2f8">group</td>
6248 <td id="rpip86227dfc1ce47cbb7c07">a string suffix to use in the section name to distinguish groups that can be linker garbage-collected independently </td>
6249 </tr>
6250   </table>
6251   
6252
6253
6254
6255 </div>
6256 </div>
6257 <a id="ga7a3538bc029b0e60c2f308008fc095c6" name="ga7a3538bc029b0e60c2f308008fc095c6"></a>
6258 </div>
6259 <div class="sect3">
6260 <h4 id="rpip881c73d14cd57b2aba92">
6261 <a class="anchor" href="#rpip881c73d14cd57b2aba92"></a>◆ __isr</h4>
6262 <div class="memitem" id="rpipd76925d7ce1d79e1f6a1">
6263 <div class="memproto" id="rpip5e8a691a8d949c1e039b">
6264       <table class="memname" id="rpip9257d284b09f2fd32d85">
6265         <tr id="rpip3a8f62c766ef00da170e">
6266           <td class="memname" id="rpip70f2cc3468335d018123">#define __isr</td>
6267         </tr>
6268       </table>
6269 </div>
6270 <div class="memdoc" id="rpip644c8c006df05419bef1">
6271
6272 <p id="rpipdce300ffaad971b06192">Marker for an interrupt handler. </p>
6273 <p id="rpip5a5d450e326734a793fd">For example an IRQ handler function called my_interrupt_handler: </p>
6274 <pre class="fragment" id="rpip9390a43b3f1a19b7c9af">void __isr my_interrupt_handler(void) {
6275 </pre>
6276 </div>
6277 </div>
6278 <a id="gad9ab05c9a8f0ab455a5e11773d610787" name="gad9ab05c9a8f0ab455a5e11773d610787"></a>
6279 </div>
6280 <div class="sect3">
6281 <h4 id="rpipd42118230b5982adb688">
6282 <a class="anchor" href="#rpipd42118230b5982adb688"></a>◆ __no_inline_not_in_flash_func</h4>
6283 <div class="memitem" id="rpip5ce694baa6d49c909bb3">
6284 <div class="memproto" id="rpip5b1424cc0868345c0da3">
6285       <table class="memname" id="rpip9b453b15bc6dccf1758b">
6286         <tr id="rpip305ee490eb739e71ed4f">
6287           <td class="memname" id="rpipb7355d0022b374206ccd">#define __no_inline_not_in_flash_func</td>
6288           <td id="rpip72ff17abed1e156be4ec">(</td>
6289           <td class="paramtype" id="rpip277de2eec2d7444c91e1"> </td>
6290           <td class="paramname" id="rpip29538ca1b538791d5a2c">func_name</td>
6291 <td id="rpip4442e600bc52f521cf90">)</td>
6292           <td id="rpipa9958da74e47ca59ec8b">   __noinline <a class="el" href="#ga7ea262771f71b22e4e720bc2ca31d936" id="rpipe7cbb7a815ede30a93f8" data-adjusted="true">__not_in_flash_func</a>(func_name)</td>
6293         </tr>
6294       </table>
6295 </div>
6296 <div class="memdoc" id="rpip56e57c76a5b14c61baac">
6297
6298 <p id="rpip5ac0f3c96f7d770df71e">Indicate a function should not be stored in flash and should not be inlined. </p>
6299 <p id="rpipbc02becbd55af5743642">Decorates a function name, such that the function will execute from RAM, explicitly marking it as noinline to prevent it being inlined into a flash function by the compiler</p>
6300 <p id="rpipde54627457e1e3269edf">For example a function called my_func taking an int parameter: </p>
6301 <pre class="fragment" id="rpip3e6a13ea000669c2938e">void __no_inline_not_in_flash_func(my_func)(int some_arg) {
6302 </pre>
6303 <p id="rpip60df18480976e4809906"> The function is placed in the <code id="rpip79e81d7dac17f5e890a5">.time_critical.&lt;func_name&gt;</code> linker section </p>
6304
6305 </div>
6306 </div>
6307 <a id="ga98947648f4fd8b22f9cccc4c2f0d64fd" name="ga98947648f4fd8b22f9cccc4c2f0d64fd"></a>
6308 </div>
6309 <div class="sect3">
6310 <h4 id="rpip2cba875b886cf8dbd3d8">
6311 <a class="anchor" href="#rpip2cba875b886cf8dbd3d8"></a>◆ __not_in_flash</h4>
6312 <div class="memitem" id="rpip5b44ad612466734c873d">
6313 <div class="memproto" id="rpip30586d2b22d10e60bcc1">
6314       <table class="memname" id="rpipff287d5602e6a61e7ea4">
6315         <tr id="rpipf7ad1bce34d890fb9927">
6316           <td class="memname" id="rpipabf1b3f0dbc928101ba5">#define __not_in_flash</td>
6317           <td id="rpip0844b04352445aec0387">(</td>
6318           <td class="paramtype" id="rpip0a9e4c33320b1444a8e0"> </td>
6319           <td class="paramname" id="rpip2b812987fd9fa9810f23">group</td>
6320 <td id="rpip5ff9716e83ec2690520e">)</td>
6321           <td id="rpip4d129538f89e0f5e46fd">   __attribute__((section(".time_critical." group)))</td>
6322         </tr>
6323       </table>
6324 </div>
6325 <div class="memdoc" id="rpip1ae2816c8bc574446915">
6326
6327 <p id="rpipb62a288807b1feee0f9f">Section attribute macro for placement not in flash (i.e in RAM) </p>
6328 <p id="rpip8805533456f90ba57aa5">For example a 3 element <code id="rpip17ccfe6e157b61471d79">uint32_t</code> array placed in RAM (even though it is <code id="rpip1efff178077aca861524">static const</code>) </p>
6329 <pre class="fragment" id="rpip8b226f93346cb69f26a1">static const uint32_t __not_in_flash("my_group_name") an_array[3];
6330 </pre>
6331 <p id="rpip6be3300124901f0f5e96"> The section attribute is <code id="rpipf13c7173c363e45d84b7">.time_critical.&lt;group&gt;</code></p>
6332 <h4 id="rpip22839c62e5d9d5f79aa9" data-parent-id="rpip56ba80d8eb5317c39827" data-target-for="rpip22839c62e5d9d5f79aa9">Parameters</h4>
6333 <p class="paragraph" id="rpip6b9dc536ebb77f975362" data-parent-id="rpip56ba80d8eb5317c39827" data-target-for="rpip6b9dc536ebb77f975362">
6334   </p>
6335 <table class="params" id="rpip0329107a2296bc789476">
6336     <tr id="rpip217e8928548319891ed7">
6337 <td class="paramname" id="rpipcad25f827ded3fb5b18d">group</td>
6338 <td id="rpipa3c6208a8abb78343a12">a string suffix to use in the section name to distinguish groups that can be linker garbage-collected independently </td>
6339 </tr>
6340   </table>
6341   
6342
6343
6344
6345 </div>
6346 </div>
6347 <a id="ga7ea262771f71b22e4e720bc2ca31d936" name="ga7ea262771f71b22e4e720bc2ca31d936"></a>
6348 </div>
6349 <div class="sect3">
6350 <h4 id="rpip303e43897c81c1b13bdc">
6351 <a class="anchor" href="#rpip303e43897c81c1b13bdc"></a>◆ __not_in_flash_func</h4>
6352 <div class="memitem" id="rpipbc34b755d3b3190856bd">
6353 <div class="memproto" id="rpip9b0c02fb28f9c2c42921">
6354       <table class="memname" id="rpip04de41e3dabac168e0a9">
6355         <tr id="rpipa6ca7f894dfbcfcc6cce">
6356           <td class="memname" id="rpipb22869218c69a3ae849b">#define __not_in_flash_func</td>
6357           <td id="rpip79ad65bed1818593de00">(</td>
6358           <td class="paramtype" id="rpip6aad1e75dd61c2e4e339"> </td>
6359           <td class="paramname" id="rpip4ce0fffb2fe5834ca711">func_name</td>
6360 <td id="rpip8b5bd772744cda18e854">)</td>
6361           <td id="rpipca26baa41025058391b3">   <a class="el" href="#ga98947648f4fd8b22f9cccc4c2f0d64fd" id="rpipe2f68ddde3c1515ba0b2" data-adjusted="true">__not_in_flash</a>(__STRING(func_name)) func_name</td>
6362         </tr>
6363       </table>
6364 </div>
6365 <div class="memdoc" id="rpip0be6a74ac24d8c22f036">
6366
6367 <p id="rpipc3e4f7445232144b85ef">Indicates a function should not be stored in flash. </p>
6368 <p id="rpip2f58c0e1e98a70fcb15f">Decorates a function name, such that the function will execute from RAM (assuming it is not inlined into a flash function by the compiler)</p>
6369 <p id="rpipacd013746811aa28d5fb">For example a function called my_func taking an int parameter: </p>
6370 <pre class="fragment" id="rpip6026ffa5b912388f555e">void __not_in_flash_func(my_func)(int some_arg) {
6371 </pre>
6372 <p id="rpip8cdefeef5eae6c72c52a"> The function is placed in the <code id="rpip10f8c9993a909ea05631">.time_critical.&lt;func_name&gt;</code> linker section</p>
6373 <p class="see" id="rpip6b7a9d83ff6e456e7fc5" data-parent-id="rpip0be6a74ac24d8c22f036" data-target-for="rpip6b7a9d83ff6e456e7fc5"><span class="label" id="rpip68baa65307d32ed183b4" data-parent-id="rpip6b7a9d83ff6e456e7fc5" data-target-for="rpip68baa65307d32ed183b4">See also</span><span class="target" id="rpipb9c35574d29af153f825" data-parent-id="rpip6b7a9d83ff6e456e7fc5" data-target-for="rpipb9c35574d29af153f825"><a class="el" href="#gad9ab05c9a8f0ab455a5e11773d610787" title="Indicate a function should not be stored in flash and should not be inlined." id="rpip8c19f6511c9917b3a4aa" data-adjusted="true">__no_inline_not_in_flash_func</a> </span></p>
6374
6375
6376
6377 </div>
6378 </div>
6379 <a id="gad8b78e068558946081789ce1935528bf" name="gad8b78e068558946081789ce1935528bf"></a>
6380 </div>
6381 <div class="sect3">
6382 <h4 id="rpip9ae1a0c336970e4de07f">
6383 <a class="anchor" href="#rpip9ae1a0c336970e4de07f"></a>◆ __scratch_x</h4>
6384 <div class="memitem" id="rpip8f1209c6540bfa8776d3">
6385 <div class="memproto" id="rpip5503cd57b6fabf74d9a8">
6386       <table class="memname" id="rpipb2fb54e8584850aa09db">
6387         <tr id="rpipdff928e199b19ff2493a">
6388           <td class="memname" id="rpip3beed43b6233fa465180">#define __scratch_x</td>
6389           <td id="rpipabd1db7d46cd739e35c3">(</td>
6390           <td class="paramtype" id="rpip42070b0eacfd44413c21"> </td>
6391           <td class="paramname" id="rpipba430256286c5ce88327">group</td>
6392 <td id="rpip163475d859f1d5666eb4">)</td>
6393           <td id="rpipb28b8bfdddba3e6621d4">   __attribute__((section(".scratch_x." group)))</td>
6394         </tr>
6395       </table>
6396 </div>
6397 <div class="memdoc" id="rpipb7ccca93d97ac533c40e">
6398
6399 <p id="rpipf93adf71b60b684270b8">Section attribute macro for placement in the SRAM bank 4 (known as "scratch X") </p>
6400 <p id="rpip2d81f6e5ffa1331ec5c7">Scratch X is commonly used for critical data and functions accessed only by one core (when only one core is accessing the RAM bank, there is no opportunity for stalls)</p>
6401 <p id="rpipe84297a94d4379e05595">For example a <code id="rpipe6dea031fdf03309e181">uint32_t</code> variable placed in "scratch X" </p>
6402 <pre class="fragment" id="rpip580575c93d7b85182b5f">uint32_t __scratch_x("my_group_name") foo = 23;
6403 </pre>
6404 <p id="rpip3c6676ec3bce1609f6e7"> The section attribute is <code id="rpip7f86d3fa407d089aa563">.scratch_x.&lt;group&gt;</code></p>
6405 <h4 id="rpip1a82d1203977193449c5" data-parent-id="rpipce2cb043865f7978fd0a" data-target-for="rpip1a82d1203977193449c5">Parameters</h4>
6406 <p class="paragraph" id="rpip579dfb2df391f6c56971" data-parent-id="rpipce2cb043865f7978fd0a" data-target-for="rpip579dfb2df391f6c56971">
6407   </p>
6408 <table class="params" id="rpipdcaa3852e9ac09d2a3e3">
6409     <tr id="rpipefd8765dff06a7f8fa3b">
6410 <td class="paramname" id="rpip1e588461f114193d9a67">group</td>
6411 <td id="rpip9dfbbd85b7b2e62f65b4">a string suffix to use in the section name to distinguish groups that can be linker garbage-collected independently </td>
6412 </tr>
6413   </table>
6414   
6415
6416
6417
6418 </div>
6419 </div>
6420 <a id="ga699cabffc3896ece6ec696e841146b3c" name="ga699cabffc3896ece6ec696e841146b3c"></a>
6421 </div>
6422 <div class="sect3">
6423 <h4 id="rpipe50ceb6084cb1f09980e">
6424 <a class="anchor" href="#rpipe50ceb6084cb1f09980e"></a>◆ __scratch_y</h4>
6425 <div class="memitem" id="rpip1318880192510d984513">
6426 <div class="memproto" id="rpip795925405aedd201a71a">
6427       <table class="memname" id="rpip0f2a844cf50bc20b42c1">
6428         <tr id="rpipd9a195d0c9bbfc53a713">
6429           <td class="memname" id="rpipc46b4bab2b9874e8c47e">#define __scratch_y</td>
6430           <td id="rpip7ec3abbb095b537ed85d">(</td>
6431           <td class="paramtype" id="rpipea648fb2bf6b06e9ea8f"> </td>
6432           <td class="paramname" id="rpip20626f2bb31b9d49c581">group</td>
6433 <td id="rpip3d57bce3588a437c0675">)</td>
6434           <td id="rpip8d1647254555887282e2">   __attribute__((section(".scratch_y." group)))</td>
6435         </tr>
6436       </table>
6437 </div>
6438 <div class="memdoc" id="rpip6c3526cddc079dde5d63">
6439
6440 <p id="rpipebcb7b79163d6202029a">Section attribute macro for placement in the SRAM bank 5 (known as "scratch Y") </p>
6441 <p id="rpipf5e3713a4ebd176271f3">Scratch Y is commonly used for critical data and functions accessed only by one core (when only one core is accessing the RAM bank, there is no opportunity for stalls)</p>
6442 <p id="rpipfc95cff198b72377b234">For example a <code id="rpipc2b0fa2f59c1fce7835c">uint32_t</code> variable placed in "scratch Y" </p>
6443 <pre class="fragment" id="rpipeafa0f19533245bb8c47">uint32_t __scratch_y("my_group_name") foo = 23;
6444 </pre>
6445 <p id="rpip53de9e5a606500e9c636"> The section attribute is <code id="rpip12901f3c5d6a03e1cfec">.scratch_y.&lt;group&gt;</code></p>
6446 <h4 id="rpip7c5ed312ff2350e6d562" data-parent-id="rpip6abb7e62b1d60a1cc366" data-target-for="rpip7c5ed312ff2350e6d562">Parameters</h4>
6447 <p class="paragraph" id="rpipa531acc3cacd087e218b" data-parent-id="rpip6abb7e62b1d60a1cc366" data-target-for="rpipa531acc3cacd087e218b">
6448   </p>
6449 <table class="params" id="rpip232fe8e1d7e439697964">
6450     <tr id="rpipeb3c5761728274118a50">
6451 <td class="paramname" id="rpip37d018860728e8907106">group</td>
6452 <td id="rpip92d768aa6f8a92f928e1">a string suffix to use in the section name to distinguish groups that can be linker garbage-collected independently </td>
6453 </tr>
6454   </table>
6455   
6456
6457
6458
6459 </div>
6460 </div>
6461 <a id="ga27ef91000958320e25ff481d16786ebf" name="ga27ef91000958320e25ff481d16786ebf"></a>
6462 </div>
6463 <div class="sect3">
6464 <h4 id="rpip54ad52d4e002cd266a7e">
6465 <a class="anchor" href="#rpip54ad52d4e002cd266a7e"></a>◆ __time_critical_func</h4>
6466 <div class="memitem" id="rpip4c1a953bdf92eeb0cf7c">
6467 <div class="memproto" id="rpip323581ba3a207cdb900b">
6468       <table class="memname" id="rpip81fb78859fa018e714e4">
6469         <tr id="rpip0e5763bf2c17b63be928">
6470           <td class="memname" id="rpip3143706a15d1f216ac3c">#define __time_critical_func</td>
6471           <td id="rpipc1ac55b0e380856abf25">(</td>
6472           <td class="paramtype" id="rpip5321058069f14514295c"> </td>
6473           <td class="paramname" id="rpip6fb385b886c3d7bb16d8">func_name</td>
6474 <td id="rpip7bbc79e6da1a4cc209f6">)</td>
6475           <td id="rpipe1e397dcd7b12aae8a2a">   <a class="el" href="#ga7ea262771f71b22e4e720bc2ca31d936" id="rpipfd85fd7f718bf357bbf5" data-adjusted="true">__not_in_flash_func</a>(func_name)</td>
6476         </tr>
6477       </table>
6478 </div>
6479 <div class="memdoc" id="rpipfff93365b208768479ab">
6480
6481 <p id="rpipfd36016097b2a1ca3ed8">Indicates a function is time/latency critical and should not run from flash. </p>
6482 <p id="rpipd1ebc4b9cbc08920f5d4">Decorates a function name, such that the function will execute from RAM (assuming it is not inlined into a flash function by the compiler) to avoid possible flash latency. Currently this macro is identical in implementation to <code id="rpipe29a7753b74e4e8924dc">__not_in_flash_func</code>, however the semantics are distinct and a <code id="rpip26ab01a1dee6aa794a55">__time_critical_func</code> may in the future be treated more specially to reduce the overhead when calling such function from a flash function.</p>
6483 <p id="rpip960d1f776eb9374ddce1">For example a function called my_func taking an int parameter: </p>
6484 <pre class="fragment" id="rpip6563d094dacde8692f7f">void __time_critical(my_func)(int some_arg) {
6485 </pre>
6486 <p id="rpip3a475db7e2d33729c2cb"> The function is placed in the <code id="rpip7100dcb7d1c801b6a335">.time_critical.&lt;func_name&gt;</code> linker section</p>
6487 <p class="see" id="rpip87cd163f5099427be8ae" data-parent-id="rpipfff93365b208768479ab" data-target-for="rpip87cd163f5099427be8ae"><span class="label" id="rpipefab4aa830a8243823b0" data-parent-id="rpip87cd163f5099427be8ae" data-target-for="rpipefab4aa830a8243823b0">See also</span><span class="target" id="rpip218630ad97fa8bbbff19" data-parent-id="rpip87cd163f5099427be8ae" data-target-for="rpip218630ad97fa8bbbff19"><a class="el" href="#ga7ea262771f71b22e4e720bc2ca31d936" title="Indicates a function should not be stored in flash." id="rpipa2f2fd1460dfc469dd90" data-adjusted="true">__not_in_flash_func</a> </span></p>
6488
6489
6490
6491 </div>
6492 </div>
6493 <a id="ga118d39a4ebb425b8bef29e7a1f8731c2" name="ga118d39a4ebb425b8bef29e7a1f8731c2"></a>
6494 </div>
6495 <div class="sect3">
6496 <h4 id="rpip0951c51bc32433917721">
6497 <a class="anchor" href="#rpip0951c51bc32433917721"></a>◆ __uninitialized_ram</h4>
6498 <div class="memitem" id="rpip6221a28a14bdd01f2164">
6499 <div class="memproto" id="rpip3e5a4bb7f794b70f2797">
6500       <table class="memname" id="rpipb84c64a1eb926c0daa57">
6501         <tr id="rpip1cac89dcaf313f4111ac">
6502           <td class="memname" id="rpip6cedb41976000ad3cef1">#define __uninitialized_ram</td>
6503           <td id="rpipd0e9cdae50553c1f914b">(</td>
6504           <td class="paramtype" id="rpip60e620e7904a6e361759"> </td>
6505           <td class="paramname" id="rpip08b769f57f5eef47600b">group</td>
6506 <td id="rpipe51915a1da308b464f57">)</td>
6507           <td id="rpip20c3dcdfe7fe821217bc">   __attribute__((section(".uninitialized_data." #group))) group</td>
6508         </tr>
6509       </table>
6510 </div>
6511 <div class="memdoc" id="rpipc0c456357bfefca82e1c">
6512
6513 <p id="rpipfcd09ac1d8be66da5ff4">Section attribute macro for data that is to be left uninitialized. </p>
6514 <p id="rpipddc65be76f3cc585f6e2">Data marked this way will retain its value across a reset (normally uninitialized data - in the .bss section) is initialized to zero during runtime initialization</p>
6515 <p id="rpip3d3c5e7de046faaf86ce">For example a <code id="rpipd315f3adb29509603063">uint32_t</code> foo that will retain its value if the program is restarted by reset. </p>
6516 <pre class="fragment" id="rpip25d6b111c78bf9fba99a">uint32_t __uninitialized_ram(foo);
6517 </pre>
6518 <p id="rpipe3c76ce6b71768a3a5d1"> The section attribute is <code id="rpip06fb5a8456ef4aea4c90">.uninitialized_data.&lt;group&gt;</code></p>
6519 <h4 id="rpipb56dadbfc5b2278ba71d" data-parent-id="rpip44621c7e4c08198778ab" data-target-for="rpipb56dadbfc5b2278ba71d">Parameters</h4>
6520 <p class="paragraph" id="rpipfa4b7d64cc40f342cf59" data-parent-id="rpip44621c7e4c08198778ab" data-target-for="rpipfa4b7d64cc40f342cf59">
6521   </p>
6522 <table class="params" id="rpip38b9fbf4e86bf9c9f985">
6523     <tr id="rpipab72243f1b6416bdd53b">
6524 <td class="paramname" id="rpipc96a8125d35758d4f5f1">group</td>
6525 <td id="rpip625bb36f3b9f4b6181e4">a string suffix to use in the section name to distinguish groups that can be linker garbage-collected independently </td>
6526 </tr>
6527   </table>
6528   
6529
6530
6531
6532 </div>
6533 </div>
6534 <a id="ga8b4ea86124befde17d69926b4f938c07" name="ga8b4ea86124befde17d69926b4f938c07"></a>
6535 </div>
6536 <div class="sect3">
6537 <h4 id="rpipef61490fc43aece9250d">
6538 <a class="anchor" href="#rpipef61490fc43aece9250d"></a>◆ host_safe_hw_ptr</h4>
6539 <div class="memitem" id="rpip011389ab417c1f3b78ce">
6540 <div class="memproto" id="rpip7635b6b041a3171c9f30">
6541       <table class="memname" id="rpip070574f1a4d5b2bf8fa1">
6542         <tr id="rpip5ac24386252fd8ea9263">
6543           <td class="memname" id="rpipa4ca68ba865e01e9a337">#define host_safe_hw_ptr</td>
6544           <td id="rpip49a3c4c01eb29b9537f5">(</td>
6545           <td class="paramtype" id="rpip7d3df2781f8794d6761c"> </td>
6546           <td class="paramname" id="rpipd020bfafe0f6ba661f74">x</td>
6547 <td id="rpipacebd59469306ba63c6a">)</td>
6548           <td id="rpipa578c5a48a8690e29f13">   ((uintptr_t)(x))</td>
6549         </tr>
6550       </table>
6551 </div>
6552 <div class="memdoc" id="rpip8f2090b64d3efbdda002">
6553
6554 <p id="rpipc461cf6bdf280d4ca401">Macro for converting memory addresses to 32 bit addresses suitable for DMA. </p>
6555 <p id="rpip7ad97e2c75e1bcec6f17">This is just a cast to <code id="rpipa265123f76c3861b3bf5">uintptr_t</code> on the RP2040, however you may want to use this when developing code that also runs in "host" mode. If the host mode is 64 bit and you are embedding data pointers in other data (e.g. DMA chaining), then there is a need in "host" mode to convert a 64 bit native pointer to a 32 bit value for storage, which can be done using this macro. </p>
6556
6557 </div>
6558 </div>
6559 </div>
6560 </div>
6561 <div class="sect2">
6562 <h3 id="rpip14e9a416348dd6951167">
6563 <a class="anchor" href="#rpip14e9a416348dd6951167"></a>Function Documentation</h3>
6564 <a id="gac01ec0ae597f7572f8e298fa4f48c8e6" name="gac01ec0ae597f7572f8e298fa4f48c8e6"></a>
6565 <div class="sect3">
6566 <h4 id="rpipa566d197cf475732aa65">
6567 <a class="anchor" href="#rpipa566d197cf475732aa65"></a>◆ __compiler_memory_barrier()</h4>
6568 <div class="memitem" id="rpip46d4a92b471a777d3529">
6569 <div class="memproto" id="rpip5d9606d89941569ac4c8">
6570 <table class="mlabels" id="rpip031a735ab74ed5faf0ff">
6571   <tr id="rpipb34ad45b5d42251b3dc3">
6572   <td class="mlabels-left" id="rpipbc628265dfa4095c5460">
6573       <table class="memname" id="rpip29799af5ee24eef6c7ad">
6574         <tr id="rpip632172c9cea45d70c820">
6575           <td class="memname" id="rpip712c96e5f0eeead37761">static __always_inline void __compiler_memory_barrier </td>
6576           <td id="rpip5cb5c7f5c8fe4db8e5a1">(</td>
6577           <td class="paramtype" id="rpip22efed414196b941a503">void </td>
6578           <td class="paramname" id="rpip894e26ad0f21bc2f1d61"></td>
6579 <td id="rpip82f4dbeb1bce369da14a">)</td>
6580           <td id="rpipfe56cc8342459b8211af"></td>
6581         </tr>
6582       </table>
6583   </td>
6584   <td class="mlabels-right" id="rpip6ae901ff4fca54736ea8">
6585 <span class="mlabels" id="rpip544236f89b2833eebc7c"><span class="mlabel" id="rpip23328acb0dfa449c3313">static</span></span>  </td>
6586   </tr>
6587 </table>
6588 </div>
6589 <div class="memdoc" id="rpip8b96992f0ca86d73a97b">
6590
6591 <p id="rpip76e732e1dac01265d053">Ensure that the compiler does not move memory access across this method call. </p>
6592 <p id="rpip5e875650e230231462ee">For example in the following code: </p>
6593 <pre class="fragment" id="rpip1d33e557e10dabbeb763">*some_memory_location = var_a;
6594 __compiler_memory_barrier();
6595 uint32_t var_b = *some_other_memory_location
6596 </pre>
6597 <p id="rpip47356c26bbcd3d8f675e"> The compiler will not move the load from <code id="rpipe302248001c930982569">some_other_memory_location</code> above the memory barrier (which it otherwise might - even above the memory store!) </p>
6598
6599 </div>
6600 </div>
6601 <a id="ga8a35e9582b94259dc1c36938949f7ca4" name="ga8a35e9582b94259dc1c36938949f7ca4"></a>
6602 </div>
6603 <div class="sect3">
6604 <h4 id="rpip978d83ea83b26b4e253c">
6605 <a class="anchor" href="#rpip978d83ea83b26b4e253c"></a>◆ __get_current_exception()</h4>
6606 <div class="memitem" id="rpipcfd5f1e420567719af4c">
6607 <div class="memproto" id="rpip5c654ac7c2e75cf4407e">
6608 <table class="mlabels" id="rpipc8bcf5d6bbaeb0fdf32f">
6609   <tr id="rpip9e28f26b092d3b5b2f22">
6610   <td class="mlabels-left" id="rpip89075fc27d181184d9a0">
6611       <table class="memname" id="rpipf6027425178127ac1127">
6612         <tr id="rpip7b20086682c90c3023a1">
6613           <td class="memname" id="rpip849b7124f108cb0a0ce3">static __always_inline uint __get_current_exception </td>
6614           <td id="rpip9f67a606c2dcf0feccb6">(</td>
6615           <td class="paramtype" id="rpip14d0ab9883d5b17ae7d9">void </td>
6616           <td class="paramname" id="rpip1ba62762551b208c63af"></td>
6617 <td id="rpipe17b0d8434fa51d94407">)</td>
6618           <td id="rpipf90ff044d9d5028015f7"></td>
6619         </tr>
6620       </table>
6621   </td>
6622   <td class="mlabels-right" id="rpip84b58d649de79488b997">
6623 <span class="mlabels" id="rpip21aeb928f05a24e62192"><span class="mlabel" id="rpip6b56e9b89dff250c67d4">static</span></span>  </td>
6624   </tr>
6625 </table>
6626 </div>
6627 <div class="memdoc" id="rpip861b89123550a17429d6">
6628
6629 <p id="rpip71c70a2711e0478cf69e">Get the current exception level on this core. </p>
6630 <h4 class="label" id="rpip598f9abf9b0e6fb98d05" data-parent-id="rpipeb570801c18f4612da14" data-target-for="rpip598f9abf9b0e6fb98d05">Returns</h4>
6631 <p class="returns" id="rpip1e0cc6037dc2c9311b6d" data-parent-id="rpipeb570801c18f4612da14" data-target-for="rpip1e0cc6037dc2c9311b6d">the exception number if the CPU is handling an exception, or 0 otherwise </p>
6632
6633 </div>
6634 </div>
6635 <a id="ga63f9737a1242323cc33b89d06ee8d935" name="ga63f9737a1242323cc33b89d06ee8d935"></a>
6636 </div>
6637 <div class="sect3">
6638 <h4 id="rpip24486b8cc19248c9c9ae">
6639 <a class="anchor" href="#rpip24486b8cc19248c9c9ae"></a>◆ __mul_instruction()</h4>
6640 <div class="memitem" id="rpipe414d646cdaed365218b">
6641 <div class="memproto" id="rpip3f6ec955e26a1cd26c8c">
6642 <table class="mlabels" id="rpipd47f9fdbd09326c3ebd4">
6643   <tr id="rpipa5efc79106d6d4bd8bab">
6644   <td class="mlabels-left" id="rpip2a27fd32d9b10bbf2148">
6645       <table class="memname" id="rpipac15efedfff814e0be27">
6646         <tr id="rpip2d03ae5b3032ff1369e9">
6647           <td class="memname" id="rpip2f165537dcf48325b5cb">static __always_inline int32_t __mul_instruction </td>
6648           <td id="rpipdc80183d79604491f341">(</td>
6649           <td class="paramtype" id="rpipc3b87f8b0dfb1c6bf642">int32_t </td>
6650           <td class="paramname" id="rpip0e5b09b01aa9fd48cc14">
6651 <em id="rpip457d7b2cac0fe83e9317">a</em>, </td>
6652         </tr>
6653         <tr id="rpipef0421103f15bc113562">
6654           <td class="paramkey" id="rpip2524d7cb2630629450b6"></td>
6655           <td id="rpipbaec4b0f2b520fef382c"></td>
6656           <td class="paramtype" id="rpipe1f802c67d4570ee28ab">int32_t </td>
6657           <td class="paramname" id="rpipf2c103d0b0583e05326b">
6658 <em id="rpip5b2ab3a1c0ebf98dfaaa">b</em> </td>
6659         </tr>
6660         <tr id="rpip0c52bf6ac6395e952364">
6661           <td id="rpipe04064c12ed6544a8941"></td>
6662           <td id="rpip7c607c989bbc254a4f2a">)</td>
6663           <td id="rpip843949c1d65d5ac7c237"></td>
6664 <td id="rpipbd55670ff57de8d097f2"></td>
6665         </tr>
6666       </table>
6667   </td>
6668   <td class="mlabels-right" id="rpip7e3965315efe470fb72e">
6669 <span class="mlabels" id="rpipc11e9d39654295507c54"><span class="mlabel" id="rpip439c6bc4f1b075e34999">static</span></span>  </td>
6670   </tr>
6671 </table>
6672 </div>
6673 <div class="memdoc" id="rpip741fbbd9fc4cd0666fc2">
6674
6675 <p id="rpip4a89eef70e9b3a9fc8da">Multiply two integers using an assembly <code id="rpipc3ca436fca0c18e99187">MUL</code> instruction. </p>
6676 <p id="rpip9948fc9153afc62eef87">This multiplies a by b using multiply instruction using the ARM mul instruction regardless of values (the compiler might otherwise choose to perform shifts/adds), i.e. this is a 1 cycle operation.</p>
6677 <h4 id="rpipb7f6c8d9ac65be9341e2" data-parent-id="rpip313d0846a2ca9422e471" data-target-for="rpipb7f6c8d9ac65be9341e2">Parameters</h4>
6678 <p class="paragraph" id="rpipb3abd5c93d45f33567d9" data-parent-id="rpip313d0846a2ca9422e471" data-target-for="rpipb3abd5c93d45f33567d9">
6679   </p>
6680 <table class="params" id="rpipc05ba49e03d70dc71ef5">
6681     <tr id="rpipfdb29523daedeaf73a95">
6682 <td class="paramname" id="rpip97f6975cf7811a89c671">a</td>
6683 <td id="rpip6d1aca7a3e36efe2ef29">the first operand </td>
6684 </tr>
6685     <tr id="rpip01c527d6990487b90bb0">
6686 <td class="paramname" id="rpip440a021d21b813e3ce95">b</td>
6687 <td id="rpip3b76b2811636fa9bab14">the second operand </td>
6688 </tr>
6689   </table>
6690   
6691
6692
6693 <h4 class="label" id="rpip3e9ce2d3c778b9db395b" data-parent-id="rpip21387129f77342a662a3" data-target-for="rpip3e9ce2d3c778b9db395b">Returns</h4>
6694 <p class="returns" id="rpipd0d881473acd98d0afe5" data-parent-id="rpip21387129f77342a662a3" data-target-for="rpipd0d881473acd98d0afe5">a * b </p>
6695
6696 </div>
6697 </div>
6698 <a id="ga49c4fc3b5d3fbe9f2f6f7bc500b9db4f" name="ga49c4fc3b5d3fbe9f2f6f7bc500b9db4f"></a>
6699 </div>
6700 <div class="sect3">
6701 <h4 id="rpipa0b3e10f6595f3ba9e4f">
6702 <a class="anchor" href="#rpipa0b3e10f6595f3ba9e4f"></a>◆ busy_wait_at_least_cycles()</h4>
6703 <div class="memitem" id="rpipbc006ad71dc4cf2854d9">
6704 <div class="memproto" id="rpipb168acd86414761190de">
6705 <table class="mlabels" id="rpipcdc2d5d8a569b9e18660">
6706   <tr id="rpip5d4729a55afab60215dc">
6707   <td class="mlabels-left" id="rpip4814bb2c042e29c06b53">
6708       <table class="memname" id="rpip43194e0be6dbe8ec4346">
6709         <tr id="rpip201261c02eeb315ee7ab">
6710           <td class="memname" id="rpip363aca55126e2f941da6">static void busy_wait_at_least_cycles </td>
6711           <td id="rpiped8106b1f78055984742">(</td>
6712           <td class="paramtype" id="rpipcf9fba4516e67a008cdf">uint32_t </td>
6713           <td class="paramname" id="rpipaa634186dd45ec164eb1"><em id="rpip0e321993506f6ad6a232">minimum_cycles</em></td>
6714 <td id="rpip4faa97a33bcb95de6270">)</td>
6715           <td id="rpip29967359b9f311d8af3f"></td>
6716         </tr>
6717       </table>
6718   </td>
6719   <td class="mlabels-right" id="rpip1d85c4c05b3db248545e">
6720 <span class="mlabels" id="rpipc5aaaea8a4dcb2c83282"><span class="mlabel" id="rpip73e2f771af795e087512">inline</span><span class="mlabel" id="rpip9b18134773960d537a88">static</span></span>  </td>
6721   </tr>
6722 </table>
6723 </div>
6724 <div class="memdoc" id="rpip831f02e46a8297bfc854">
6725
6726 <p id="rpip7f3e37f2007ec0905501">Helper method to busy-wait for at least the given number of cycles. </p>
6727 <p id="rpip15a295dc57b339fcd82d">This method is useful for introducing very short delays.</p>
6728 <p id="rpip64362ef6b7cb673950cb">This method busy-waits in a tight loop for the given number of system clock cycles. The total wait time is only accurate to within 2 cycles, and this method uses a loop counter rather than a hardware timer, so the method will always take longer than expected if an interrupt is handled on the calling core during the busy-wait; you can of course disable interrupts to prevent this.</p>
6729 <p id="rpipae8b2cb30f249ad1f16c">You can use clock_get_hz(clk_sys) to determine the number of clock cycles per second if you want to convert an actual time duration to a number of cycles.</p>
6730 <h4 id="rpip01c53da22fe13b5ae091" data-parent-id="rpip77c8530defed338aed35" data-target-for="rpip01c53da22fe13b5ae091">Parameters</h4>
6731 <p class="paragraph" id="rpip5c93c3e103991d66ff0c" data-parent-id="rpip77c8530defed338aed35" data-target-for="rpip5c93c3e103991d66ff0c">
6732   </p>
6733 <table class="params" id="rpip8eaad1670da824823081">
6734     <tr id="rpip8b456f80df5f47ffae9e">
6735 <td class="paramname" id="rpipaa0eb914b5de3514054a">minimum_cycles</td>
6736 <td id="rpipf39fdd3fbd545dc94e3b">the minimum number of system clock cycles to delay for </td>
6737 </tr>
6738   </table>
6739   
6740
6741
6742
6743 </div>
6744 </div>
6745 <a id="ga974b4945ae0ac8892717cb5f05e83c53" name="ga974b4945ae0ac8892717cb5f05e83c53"></a>
6746 </div>
6747 <div class="sect3">
6748 <h4 id="rpip5f24cde232b4c926ca98">
6749 <a class="anchor" href="#rpip5f24cde232b4c926ca98"></a>◆ get_core_num()</h4>
6750 <div class="memitem" id="rpip3e37867753a8dbdb136e">
6751 <div class="memproto" id="rpip8bdf849f827b1c8bd0c7">
6752 <table class="mlabels" id="rpip0265c60cfcc4bb46c98b">
6753   <tr id="rpip644c1d809d41759dfafe">
6754   <td class="mlabels-left" id="rpip9adf7dd61f11eba0f4c1">
6755       <table class="memname" id="rpip0093d2871be3cd2068d3">
6756         <tr id="rpip7e4d532a3294bef4abfd">
6757           <td class="memname" id="rpip73c9caaed425fdb7a606">static __always_inline uint get_core_num </td>
6758           <td id="rpip7dd2a37cec1e1eecd5c1">(</td>
6759           <td class="paramtype" id="rpip81d85191da724bef8fe9">void </td>
6760           <td class="paramname" id="rpipda7e96741423d58e6bb3"></td>
6761 <td id="rpip54ec6052dcb5615ef255">)</td>
6762           <td id="rpipc6989a5c54254aa68972"></td>
6763         </tr>
6764       </table>
6765   </td>
6766   <td class="mlabels-right" id="rpipeca3b62e6143c4f213a3">
6767 <span class="mlabels" id="rpipf281d7f5a80bd5f0b02d"><span class="mlabel" id="rpip4a91d2a9524831b65f3a">static</span></span>  </td>
6768   </tr>
6769 </table>
6770 </div>
6771 <div class="memdoc" id="rpip10ad49049b865f5aed25">
6772
6773 <p id="rpip50087c2628fd866850de">Get the current core number. </p>
6774 <h4 class="label" id="rpip52111dda241162936edd" data-parent-id="rpip09a386efbbc40156b657" data-target-for="rpip52111dda241162936edd">Returns</h4>
6775 <p class="returns" id="rpip09995177e2c63c5a872f" data-parent-id="rpip09a386efbbc40156b657" data-target-for="rpip09995177e2c63c5a872f">The core number the call was made from </p>
6776
6777 </div>
6778 </div>
6779 <a id="gad1f1a1dc0581a11b597453f148106393" name="gad1f1a1dc0581a11b597453f148106393"></a>
6780 </div>
6781 <div class="sect3">
6782 <h4 id="rpipd792e5e8a15a23e1cd71">
6783 <a class="anchor" href="#rpipd792e5e8a15a23e1cd71"></a>◆ panic()</h4>
6784 <div class="memitem" id="rpipa55322bae8b47643e51e">
6785 <div class="memproto" id="rpipeb7c074bcaccc521f8e2">
6786       <table class="memname" id="rpip7642e7808726e1c65e95">
6787         <tr id="rpip338e15808be358e3dde3">
6788           <td class="memname" id="rpipbaed865e0b78fcff3cec">void panic </td>
6789           <td id="rpip5f3fb92ae8d1cf65f075">(</td>
6790           <td class="paramtype" id="rpip14a651d88ec048541805">const char * </td>
6791           <td class="paramname" id="rpipf3264909b97191c85fdc">
6792 <em id="rpip6213052fcc52d118765e">fmt</em>, </td>
6793         </tr>
6794         <tr id="rpip7bb423825f4644cf7b17">
6795           <td class="paramkey" id="rpip90996b8a0c4b917648b9"></td>
6796           <td id="rpip5a36d83c063e70a92750"></td>
6797           <td class="paramtype" id="rpipb1dbc61afd53a9c56da4"> </td>
6798           <td class="paramname" id="rpip1556915fc2c3cc07c3aa">
6799 <em id="rpip98da9dd404193eddbfac">...</em> </td>
6800         </tr>
6801         <tr id="rpip51de9dfbaad625b77449">
6802           <td id="rpip8410ff7df8b2d294842a"></td>
6803           <td id="rpip1fb5225a8bbc19748364">)</td>
6804           <td id="rpipb0410a23a33b958bb91b"></td>
6805 <td id="rpipe08a4515373ff6c48e90"></td>
6806         </tr>
6807       </table>
6808 </div>
6809 <div class="memdoc" id="rpipee9799fcc32955df11c1">
6810
6811 <p id="rpipc66cbe853ba78e7ea6fe">Displays a panic message and halts execution. </p>
6812 <p id="rpip08413f7c8235c02dcb4c">An attempt is made to output the message to all registered STDOUT drivers after which this method executes a BKPT instruction.</p>
6813 <h4 id="rpip90fb37b64c8b529d0b4c" data-parent-id="rpipa572ad8021d324974c26" data-target-for="rpip90fb37b64c8b529d0b4c">Parameters</h4>
6814 <p class="paragraph" id="rpipfc0100cee310bc277e77" data-parent-id="rpipa572ad8021d324974c26" data-target-for="rpipfc0100cee310bc277e77">
6815   </p>
6816 <table class="params" id="rpip537878e5ad5c01252766">
6817     <tr id="rpip28cbf00112439f06915c">
6818 <td class="paramname" id="rpip5c30dc0d432f7488ccf3">fmt</td>
6819 <td id="rpip6664f90e794f0b99629e">format string (printf-like) </td>
6820 </tr>
6821     <tr id="rpip5c85c4d138a1d26c5385">
6822 <td class="paramname" id="rpipbafbf88b5348b868320c">...</td>
6823 <td id="rpip0d11ce6735bffdfd94c5">printf-like arguments </td>
6824 </tr>
6825   </table>
6826   
6827
6828
6829
6830 </div>
6831 </div>
6832 <a id="ga29ba8f40ca0c961e04c7380a3665e612" name="ga29ba8f40ca0c961e04c7380a3665e612"></a>
6833 </div>
6834 <div class="sect3">
6835 <h4 id="rpipbc06f6537e38e7d8cb3d">
6836 <a class="anchor" href="#rpipbc06f6537e38e7d8cb3d"></a>◆ panic_unsupported()</h4>
6837 <div class="memitem" id="rpip2058032045280dda6ea9">
6838 <div class="memproto" id="rpipdf2c6a11011572199734">
6839       <table class="memname" id="rpip02ddf890b8c5db46f53b">
6840         <tr id="rpip3165df8d5eae3c4a9e49">
6841           <td class="memname" id="rpip752a89055536b7251ae3">void panic_unsupported </td>
6842           <td id="rpip7f77bfca3469ca5d5ab3">(</td>
6843           <td class="paramtype" id="rpipe4e515386245e10fbcf9">void </td>
6844           <td class="paramname" id="rpip1503891b27c0f18070a9"></td>
6845 <td id="rpipdf503c86197956439f9b">)</td>
6846           <td id="rpip81543854dff2d8e8199f"></td>
6847         </tr>
6848       </table>
6849 </div>
6850 <div class="memdoc" id="rpipc0ff16c31f9947cb8274">
6851
6852 <p id="rpipe881dd4825907487ca20">Panics with the message "Unsupported". </p>
6853 <p class="see" id="rpipcdf13450708a5cbbc87a" data-parent-id="rpipc0ff16c31f9947cb8274" data-target-for="rpipcdf13450708a5cbbc87a"><span class="label" id="rpipddc15795d63d44cc9848" data-parent-id="rpipcdf13450708a5cbbc87a" data-target-for="rpipddc15795d63d44cc9848">See also</span><span class="target" id="rpip5bc13d89b5c2c49f18f9" data-parent-id="rpipcdf13450708a5cbbc87a" data-target-for="rpip5bc13d89b5c2c49f18f9"><a class="el" href="#gad1f1a1dc0581a11b597453f148106393" title="Displays a panic message and halts execution." id="rpip748ca09a00baa6337651" data-adjusted="true">panic</a> </span></p>
6854
6855
6856
6857 </div>
6858 </div>
6859 <a id="ga2f16fe03135e5a5cb9f098a538a8671a" name="ga2f16fe03135e5a5cb9f098a538a8671a"></a>
6860 </div>
6861 <div class="sect3">
6862 <h4 id="rpip351241e1dfc7cb0e6075">
6863 <a class="anchor" href="#rpip351241e1dfc7cb0e6075"></a>◆ rp2040_chip_version()</h4>
6864 <div class="memitem" id="rpipa673b768f33f4a5b2df7">
6865 <div class="memproto" id="rpipa7120d58b6fd325d6801">
6866       <table class="memname" id="rpipf15fbc4b41f07d0fc256">
6867         <tr id="rpipddef9525bf76ffab3ca4">
6868           <td class="memname" id="rpip2f12a84494f6291be238">uint8_t rp2040_chip_version </td>
6869           <td id="rpip227b48abca9f0744968e">(</td>
6870           <td class="paramtype" id="rpip484b6d78a323377b2f08">void </td>
6871           <td class="paramname" id="rpip8d787d4a18a7e771a7fd"></td>
6872 <td id="rpip38fbeb08bec4cc6fb81a">)</td>
6873           <td id="rpip97f9606dbd5e3f94134f"></td>
6874         </tr>
6875       </table>
6876 </div>
6877 <div class="memdoc" id="rpipa566c52da636a4c12ed4">
6878
6879 <p id="rpip69d6ab59a18b788e5de0">Returns the RP2040 chip revision number. </p>
6880 <h4 class="label" id="rpip2db3012d6b3ac248f8bd" data-parent-id="rpipf1fcfe6f54f43bff9ffa" data-target-for="rpip2db3012d6b3ac248f8bd">Returns</h4>
6881 <p class="returns" id="rpip5a9f8317a11923afd894" data-parent-id="rpipf1fcfe6f54f43bff9ffa" data-target-for="rpip5a9f8317a11923afd894">the RP2040 chip revision number (1 for B0/B1, 2 for B2) </p>
6882
6883 </div>
6884 </div>
6885 <a id="gadcb55b507bb15fbe5a71bcb2f222b6e2" name="gadcb55b507bb15fbe5a71bcb2f222b6e2"></a>
6886 </div>
6887 <div class="sect3">
6888 <h4 id="rpipd39e86bb178dba56c97c">
6889 <a class="anchor" href="#rpipd39e86bb178dba56c97c"></a>◆ rp2040_rom_version()</h4>
6890 <div class="memitem" id="rpipc0b9103917a13fb40486">
6891 <div class="memproto" id="rpip31f54ac7ad17ada361a8">
6892 <table class="mlabels" id="rpip95b59339388e3e2e1d1c">
6893   <tr id="rpip8204c17f5c7c95382462">
6894   <td class="mlabels-left" id="rpip8cc77c88ec143f440bf3">
6895       <table class="memname" id="rpip3eaa067caea2488207db">
6896         <tr id="rpip5bf4f7bb5fa9e224fb91">
6897           <td class="memname" id="rpip241c5d8d8eaff8c7d5da">static uint8_t rp2040_rom_version </td>
6898           <td id="rpipe095bbca5ff0b39978af">(</td>
6899           <td class="paramtype" id="rpip0aae40b2dfe7c62e33ba">void </td>
6900           <td class="paramname" id="rpipe926a86b8e3009417f11"></td>
6901 <td id="rpip9f4583a19e60dc320171">)</td>
6902           <td id="rpip92d6f295ec05efb048bb"></td>
6903         </tr>
6904       </table>
6905   </td>
6906   <td class="mlabels-right" id="rpip1a0af5fd709d40ab882a">
6907 <span class="mlabels" id="rpip502961b748fc01cc0684"><span class="mlabel" id="rpipe99a529c1b627079d4e5">inline</span><span class="mlabel" id="rpip60f90bd8d6e2f1d31670">static</span></span>  </td>
6908   </tr>
6909 </table>
6910 </div>
6911 <div class="memdoc" id="rpip09edba2fbeda3183e5a3">
6912
6913 <p id="rpip52e40e9f9d64d26c9a27">Returns the RP2040 rom version number. </p>
6914 <h4 class="label" id="rpipdcad5b76560b136b32fc" data-parent-id="rpip7569d52216bb900cf137" data-target-for="rpipdcad5b76560b136b32fc">Returns</h4>
6915 <p class="returns" id="rpip525a887185b4dc98c9a7" data-parent-id="rpip7569d52216bb900cf137" data-target-for="rpip525a887185b4dc98c9a7">the RP2040 rom version number (1 for RP2040-B0, 2 for RP2040-B1, 3 for RP2040-B2) </p>
6916
6917 </div>
6918 </div>
6919 <a id="gaf04e1c7eb32935a422d975abdec4f4b0" name="gaf04e1c7eb32935a422d975abdec4f4b0"></a>
6920 </div>
6921 <div class="sect3">
6922 <h4 id="rpipb724bb35a171665bb494">
6923 <a class="anchor" href="#rpipb724bb35a171665bb494"></a>◆ tight_loop_contents()</h4>
6924 <div class="memitem" id="rpip2640438b88f647a48ee0">
6925 <div class="memproto" id="rpipd3f23e728c27f71b468e">
6926 <table class="mlabels" id="rpip6d6bd533118c5140c722">
6927   <tr id="rpip1c1cbf1205986f364424">
6928   <td class="mlabels-left" id="rpip97d5ce95743e439b286d">
6929       <table class="memname" id="rpipebad0fc41885c2bc34d4">
6930         <tr id="rpip4c70760a7278c09e8b94">
6931           <td class="memname" id="rpip1e237e30108366c37946">static __always_inline void tight_loop_contents </td>
6932           <td id="rpipf867248746581724c695">(</td>
6933           <td class="paramtype" id="rpip166854933b33ce1f1b18">void </td>
6934           <td class="paramname" id="rpipab5634fccac785da8db7"></td>
6935 <td id="rpip5489c68dbaca617212e2">)</td>
6936           <td id="rpip0695bd8f86152ba115a6"></td>
6937         </tr>
6938       </table>
6939   </td>
6940   <td class="mlabels-right" id="rpip15a7b7f485c2d341554c">
6941 <span class="mlabels" id="rpipd8d7be8653b0dd90efe2"><span class="mlabel" id="rpip84255a4245d87cffb077">static</span></span>  </td>
6942   </tr>
6943 </table>
6944 </div>
6945 <div class="memdoc" id="rpipd4fe6faee3928fd60e97">
6946
6947 <p id="rpipfe5bd63984dddb174f49">No-op function for the body of tight loops. </p>
6948 <p id="rpip474c5c3d1379d63684b0">No-op function intended to be called by any tight hardware polling loop. Using this ubiquitously makes it much easier to find tight loops, but also in the future #ifdef-ed support for lockup debugging might be added </p>
6949
6950 </div>
6951 </div>
6952 </div>
6953 </div>
6954 </div>
6955 <div class="sect1">
6956 <h2 id="pico_printf">
6957 <a class="anchor" href="#pico_printf"></a>pico_printf</h2>
6958 <div class="sectionbody"></div>
6959 <div class="ingroups" id="rpip61ca359f5ce5d8aec849">Part of: <a class="el" href="runtime.html" id="rpip02fa600ba7ae9b6b7ed0">Runtime Infrastructure</a>
6960 </div>
6961 <p id="rpipe8a4c511b579750f7f7b">Compact replacement for printf by Marco Paland (<a href="#ga565dd878322d37e6ea74" onclick="location.href='mai'+'lto:'+'inf'+'o@'+'pal'+'an'+'d.c'+'om'; return false;" id="rpip173e763a8dd78f3c45b3" data-adjusted="true">info@<span class="obfuscator" id="rpipe419e14857140d2becf2">.nosp@m.</span>pala<span class="obfuscator" id="rpip9703c9ec9839c310ff1c">.nosp@m.</span>nd.co<span class="obfuscator" id="rpip5efaf55401cfd5c73e6e">.nosp@m.</span>m</a>) </p>
6962 </div>
6963 <div class="sect1">
6964 <h2 id="pico_runtime">
6965 <a class="anchor" href="#pico_runtime"></a>pico_runtime</h2>
6966 <div class="sectionbody"></div>
6967 <div class="ingroups" id="rpip03db9f56a48c591a283c">Part of: <a class="el" href="runtime.html" id="rpip95dd771d2112f4104c83">Runtime Infrastructure</a>
6968 </div>
6969 <p id="rpipfa2b83f97911bbdb2121">Aggregate runtime support including <a class="el" href="runtime.html#pico_bit_ops" id="rpip5bfa457cc8c1ddd9c509">pico_bit_ops</a>, <a class="el" href="runtime.html#pico_divider" id="rpipa9e1745b3b288ce03c92">pico_divider</a>, <a class="el" href="runtime.html#pico_double" id="rpip85d06dbe07e25f170d02">pico_double</a>, <a class="el" href="runtime.html#pico_int64_ops" id="rpipf0e6c9e484b35a668fe6">pico_int64_ops</a>, <a class="el" href="runtime.html#pico_float" id="rpip3ca36017d9e385c1ee03">pico_float</a>, <a class="el" href="runtime.html#pico_malloc" id="rpipe2b5b3d5f435edb68a69">pico_malloc</a>, <a class="el" href="runtime.html#pico_mem_ops" id="rpipae1d727f001393c7d854">pico_mem_ops</a> and <a class="el" href="runtime.html#pico_standard_link" id="rpipa93daa3f888e563015a9">pico_standard_link</a> </p>
6970 </div>
6971 <div class="sect1">
6972 <h2 id="pico_stdio">
6973 <a class="anchor" href="#pico_stdio"></a>pico_stdio</h2>
6974 <div class="sectionbody"></div>
6975 <div class="ingroups" id="rpipad99a2727a1e53413e6d">Part of: <a class="el" href="runtime.html" id="rpip7341f00b67ec39bca4d7">Runtime Infrastructure</a>
6976 </div>
6977 <div class="sect2">
6978 <h3 id="rpip66600d8c06f1ab929c23">
6979 <a class="anchor" href="#rpip66600d8c06f1ab929c23"></a>Modules</h3>
6980 <ul class="memberdecls" id="rpip9574b46c1930b08feb90" data-parent-id="rpip0d687d9213b8d2361d18">
6981 <li class="memitem">
6982 <p data-target="true" data-target-for="rpip9574b46c1930b08feb90"><span class="memItemLeft" data-target="true" id="rpipc3a9e1adb2ced77bb37d" data-parent-id="rpip9574b46c1930b08feb90" data-target-for="rpipc3a9e1adb2ced77bb37d"> </span><span class="memItemRight" data-target="true" id="rpipf63bc67b5e239765ac91" data-parent-id="rpip9574b46c1930b08feb90" data-target-for="rpipf63bc67b5e239765ac91"><a class="el" href="runtime.html#pico_stdio_semihosting" id="rpipc588a10ec22487baf623">pico_stdio_semihosting</a></span></p>
6983 </li>
6984 <li class="memdesc">
6985 <p data-target="true" data-target-for="rpip28e216d7d67c1ccdc470"><span class="mdescLeft" data-target="true" id="rpip0510ec0cdfc135e4cc68" data-parent-id="rpip28e216d7d67c1ccdc470" data-target-for="rpip0510ec0cdfc135e4cc68"> </span><span class="mdescRight" data-target="true" id="rpipb7a0c8b77ec2d5ed3603" data-parent-id="rpip28e216d7d67c1ccdc470" data-target-for="rpipb7a0c8b77ec2d5ed3603">Experimental support for stdout using RAM semihosting. <br id="rpip37f9f07c3d9f14804a6a"></span></p>
6986 </li>
6987 <li class="memitem">
6988 <p data-target="true" data-target-for="rpipa198227aba557dfea05c"><span class="memItemLeft" data-target="true" id="rpipf0dffd77826a380c27b4" data-parent-id="rpipa198227aba557dfea05c" data-target-for="rpipf0dffd77826a380c27b4"> </span><span class="memItemRight" data-target="true" id="rpipcfdf221d2e12b3985a11" data-parent-id="rpipa198227aba557dfea05c" data-target-for="rpipcfdf221d2e12b3985a11"><a class="el" href="runtime.html#pico_stdio_uart" id="rpip1fc3a5d17cb47f87f3a0">pico_stdio_uart</a></span></p>
6989 </li>
6990 <li class="memdesc">
6991 <p data-target="true" data-target-for="rpipb126c826dcc0867b84a4"><span class="mdescLeft" data-target="true" id="rpipec61e206a17ce9e7b4fe" data-parent-id="rpipb126c826dcc0867b84a4" data-target-for="rpipec61e206a17ce9e7b4fe"> </span><span class="mdescRight" data-target="true" id="rpip65b8d520f85685dfca5a" data-parent-id="rpipb126c826dcc0867b84a4" data-target-for="rpip65b8d520f85685dfca5a">Support for stdin/stdout using UART. <br id="rpip84d2397f4517e6c811a5"></span></p>
6992 </li>
6993 <li class="memitem">
6994 <p data-target="true" data-target-for="rpipc5e7e0a6312d41913743"><span class="memItemLeft" data-target="true" id="rpip071dc479def8bb0faff1" data-parent-id="rpipc5e7e0a6312d41913743" data-target-for="rpip071dc479def8bb0faff1"> </span><span class="memItemRight" data-target="true" id="rpipe4ae79e44dd8e7fcff6b" data-parent-id="rpipc5e7e0a6312d41913743" data-target-for="rpipe4ae79e44dd8e7fcff6b"><a class="el" href="runtime.html#pico_stdio_usb" id="rpipa983f6a15fbd64e5660d">pico_stdio_usb</a></span></p>
6995 </li>
6996 <li class="memdesc">
6997 <p data-target="true" data-target-for="rpip8790da42a85992d4f327"><span class="mdescLeft" data-target="true" id="rpip5094a3f8bc4d874d36cd" data-parent-id="rpip8790da42a85992d4f327" data-target-for="rpip5094a3f8bc4d874d36cd"> </span><span class="mdescRight" data-target="true" id="rpip0999bfffb04bb3dd785c" data-parent-id="rpip8790da42a85992d4f327" data-target-for="rpip0999bfffb04bb3dd785c">Support for stdin/stdout over USB serial (CDC) <br id="rpip4d7891ed6f83bb1ec316"></span></p>
6998 </li>
6999 </ul>
7000 </div>
7001 <div class="sect2">
7002 <h3 id="rpipbfbe419ab3a18de01187">
7003 <a class="anchor" href="#rpipbfbe419ab3a18de01187"></a>Functions</h3>
7004 <ul class="memberdecls" id="rpip08871e0cc8e40c98b4c6" data-parent-id="rpip6c057c6b572dc8950005">
7005 <li class="memitem">
7006 <p data-target="true" data-target-for="rpip08871e0cc8e40c98b4c6"><span class="memItemLeft" data-target="true" id="rpipd2ae1cf8995bae0d665b" data-parent-id="rpip08871e0cc8e40c98b4c6" data-target-for="rpipd2ae1cf8995bae0d665b">bool </span><span class="memItemRight" data-target="true" id="rpip04f7bff495383455c31e" data-parent-id="rpip08871e0cc8e40c98b4c6" data-target-for="rpip04f7bff495383455c31e"><a class="el" href="#ga0e604311fb226dae91ff4eb17a19d67a" id="rpip10e404235aee7dbe2663" data-adjusted="true">stdio_init_all</a> (void)</span></p>
7007 </li>
7008 <li class="memdesc">
7009 <p data-target="true" data-target-for="rpip8b648f16c5bcf9100188"><span class="mdescLeft" data-target="true" id="rpip12b18a731e1b605f9f90" data-parent-id="rpip8b648f16c5bcf9100188" data-target-for="rpip12b18a731e1b605f9f90"> </span><span class="mdescRight" data-target="true" id="rpipabd1fe9bdcef16fa9aef" data-parent-id="rpip8b648f16c5bcf9100188" data-target-for="rpipabd1fe9bdcef16fa9aef">Initialize all of the present standard stdio types that are linked into the binary.  <br id="rpipef6879b46c718328313c"></span></p>
7010 </li>
7011 <li class="memitem">
7012 <p data-target="true" data-target-for="rpip2225401006fe9e61a55d"><span class="memItemLeft" data-target="true" id="rpipf287788ccbeb086898a4" data-parent-id="rpip2225401006fe9e61a55d" data-target-for="rpipf287788ccbeb086898a4"><a id="ga90927805d6b48285139ab31098623df1" name="ga90927805d6b48285139ab31098623df1"></a>
7013 void </span><span class="memItemRight" data-target="true" id="rpip816c42d76c8ff09ab00e" data-parent-id="rpip2225401006fe9e61a55d" data-target-for="rpip816c42d76c8ff09ab00e"><b id="rpipf89d310a1a50f40b70e1">stdio_flush</b> (void)</span></p>
7014 </li>
7015 <li class="memdesc">
7016 <p data-target="true" data-target-for="rpipfb49723e1120433bf1e3"><span class="mdescLeft" data-target="true" id="rpip837b291c96aa0f11473e" data-parent-id="rpipfb49723e1120433bf1e3" data-target-for="rpip837b291c96aa0f11473e"> </span><span class="mdescRight" data-target="true" id="rpip61f0db20d28f6ac8c0e4" data-parent-id="rpipfb49723e1120433bf1e3" data-target-for="rpip61f0db20d28f6ac8c0e4">Flushes any buffered output. <br id="rpipe65f82e5a37019c3b41e"></span></p>
7017 </li>
7018 <li class="memitem">
7019 <p data-target="true" data-target-for="rpipfc8dff071afac37f6518"><span class="memItemLeft" data-target="true" id="rpipf428e84f312bba129134" data-parent-id="rpipfc8dff071afac37f6518" data-target-for="rpipf428e84f312bba129134">int </span><span class="memItemRight" data-target="true" id="rpip37d154cec436164dd35d" data-parent-id="rpipfc8dff071afac37f6518" data-target-for="rpip37d154cec436164dd35d"><a class="el" href="#ga9b10b3bc1a4750fcb0e691566bc868e8" id="rpipf941d84dd1d0c184a04a" data-adjusted="true">getchar_timeout_us</a> (uint32_t timeout_us)</span></p>
7020 </li>
7021 <li class="memdesc">
7022 <p data-target="true" data-target-for="rpipd8cefc60614295e30a88"><span class="mdescLeft" data-target="true" id="rpip26d7dc220bf8000e8ecf" data-parent-id="rpipd8cefc60614295e30a88" data-target-for="rpip26d7dc220bf8000e8ecf"> </span><span class="mdescRight" data-target="true" id="rpip5fa69f222a74fe2be8fe" data-parent-id="rpipd8cefc60614295e30a88" data-target-for="rpip5fa69f222a74fe2be8fe">Return a character from stdin if there is one available within a timeout.  <br id="rpipacb2439bdd5807bf8bfa"></span></p>
7023 </li>
7024 <li class="memitem">
7025 <p data-target="true" data-target-for="rpipfc7e59caaf58fa4d34db"><span class="memItemLeft" data-target="true" id="rpip686b8d0d66ccb55ef3a2" data-parent-id="rpipfc7e59caaf58fa4d34db" data-target-for="rpip686b8d0d66ccb55ef3a2">void </span><span class="memItemRight" data-target="true" id="rpipf432cb37fbbf17bcfbda" data-parent-id="rpipfc7e59caaf58fa4d34db" data-target-for="rpipf432cb37fbbf17bcfbda"><a class="el" href="#ga826d33ec05c3e33dbddf0cb09e329562" id="rpip5aa0c96d7c4b805764fc" data-adjusted="true">stdio_set_driver_enabled</a> (<a class="el" href="structstdio__driver.html" id="rpipbc2277c472c85ab85a2c">stdio_driver_t</a> *driver, bool enabled)</span></p>
7026 </li>
7027 <li class="memdesc">
7028 <p data-target="true" data-target-for="rpip19b8f3c313f00165bee0"><span class="mdescLeft" data-target="true" id="rpipac1f777192e60de0dcd8" data-parent-id="rpip19b8f3c313f00165bee0" data-target-for="rpipac1f777192e60de0dcd8"> </span><span class="mdescRight" data-target="true" id="rpip5e17619ed39efcbe35de" data-parent-id="rpip19b8f3c313f00165bee0" data-target-for="rpip5e17619ed39efcbe35de">Adds or removes a driver from the list of active drivers used for input/output.  <br id="rpip1f5773802ce073936a46"></span></p>
7029 </li>
7030 <li class="memitem">
7031 <p data-target="true" data-target-for="rpip569e208a52a313842ac5"><span class="memItemLeft" data-target="true" id="rpip8513f40beecb10d9f157" data-parent-id="rpip569e208a52a313842ac5" data-target-for="rpip8513f40beecb10d9f157">void </span><span class="memItemRight" data-target="true" id="rpip17f2865fe5aaa082083b" data-parent-id="rpip569e208a52a313842ac5" data-target-for="rpip17f2865fe5aaa082083b"><a class="el" href="#gae3944ee24af8163a9538f01cda3e28df" id="rpip89896671b25436c865e2" data-adjusted="true">stdio_filter_driver</a> (<a class="el" href="structstdio__driver.html" id="rpip2f4b57e7b064394d19da">stdio_driver_t</a> *driver)</span></p>
7032 </li>
7033 <li class="memdesc">
7034 <p data-target="true" data-target-for="rpip684295b743f006ed9011"><span class="mdescLeft" data-target="true" id="rpip048388356f751eaaf590" data-parent-id="rpip684295b743f006ed9011" data-target-for="rpip048388356f751eaaf590"> </span><span class="mdescRight" data-target="true" id="rpip6141b56826c20911cfdb" data-parent-id="rpip684295b743f006ed9011" data-target-for="rpip6141b56826c20911cfdb">Control limiting of output to a single driver.  <br id="rpipa2d523acd6e65cf2b7e8"></span></p>
7035 </li>
7036 <li class="memitem">
7037 <p data-target="true" data-target-for="rpip21636770915b418b433a"><span class="memItemLeft" data-target="true" id="rpipb0cdbcdb4f1a959c4285" data-parent-id="rpip21636770915b418b433a" data-target-for="rpipb0cdbcdb4f1a959c4285">void </span><span class="memItemRight" data-target="true" id="rpipa71f18236fc8e1a15187" data-parent-id="rpip21636770915b418b433a" data-target-for="rpipa71f18236fc8e1a15187"><a class="el" href="#gaba86bf2cb6b86a9078cd94dcf47b1915" id="rpip8e867e325a6aedd9b9f0" data-adjusted="true">stdio_set_translate_crlf</a> (<a class="el" href="structstdio__driver.html" id="rpip848c4fa62c7bf5da33ba">stdio_driver_t</a> *driver, bool translate)</span></p>
7038 </li>
7039 <li class="memdesc">
7040 <p data-target="true" data-target-for="rpip30c0948aa6a9d44edb0a"><span class="mdescLeft" data-target="true" id="rpipd1e452dfcd541aec807c" data-parent-id="rpip30c0948aa6a9d44edb0a" data-target-for="rpipd1e452dfcd541aec807c"> </span><span class="mdescRight" data-target="true" id="rpip2800631a21802ce77c97" data-parent-id="rpip30c0948aa6a9d44edb0a" data-target-for="rpip2800631a21802ce77c97">control conversion of line feeds to carriage return on transmissions  <br id="rpipf6ca82379f504e39520c"></span></p>
7041 </li>
7042 <li class="memitem">
7043 <p data-target="true" data-target-for="rpipc968fc69684a23941361"><span class="memItemLeft" data-target="true" id="rpip3319beb161bf2558d9c3" data-parent-id="rpipc968fc69684a23941361" data-target-for="rpip3319beb161bf2558d9c3"><a id="ga919e541a385cc6ff534133b19ee5da37" name="ga919e541a385cc6ff534133b19ee5da37"></a>
7044 int </span><span class="memItemRight" data-target="true" id="rpip87dd5a392e97fc66fc1a" data-parent-id="rpipc968fc69684a23941361" data-target-for="rpip87dd5a392e97fc66fc1a"><b id="rpipbcd310759a4dd1e81a0a">putchar_raw</b> (int c)</span></p>
7045 </li>
7046 <li class="memdesc">
7047 <p data-target="true" data-target-for="rpip4bd461b2929d0bc16fb5"><span class="mdescLeft" data-target="true" id="rpip3ca9b574759c0dc353d8" data-parent-id="rpip4bd461b2929d0bc16fb5" data-target-for="rpip3ca9b574759c0dc353d8"> </span><span class="mdescRight" data-target="true" id="rpip470b952c3fe334da554a" data-parent-id="rpip4bd461b2929d0bc16fb5" data-target-for="rpip470b952c3fe334da554a">putchar variant that skips any CR/LF conversion if enabled <br id="rpip2283bb35629aef529b58"></span></p>
7048 </li>
7049 <li class="memitem">
7050 <p data-target="true" data-target-for="rpip22e5fb62bf17c5932455"><span class="memItemLeft" data-target="true" id="rpip89c765bffb740e93fb8d" data-parent-id="rpip22e5fb62bf17c5932455" data-target-for="rpip89c765bffb740e93fb8d"><a id="ga7a35b8117b27c04d898d1a36de6a7b0b" name="ga7a35b8117b27c04d898d1a36de6a7b0b"></a>
7051 int </span><span class="memItemRight" data-target="true" id="rpip74280066a24ed75b005c" data-parent-id="rpip22e5fb62bf17c5932455" data-target-for="rpip74280066a24ed75b005c"><b id="rpipa50bf3f4fc201aa8ba74">puts_raw</b> (const char *s)</span></p>
7052 </li>
7053 <li class="memdesc">
7054 <p data-target="true" data-target-for="rpip519ce13da69dd4d6f6f2"><span class="mdescLeft" data-target="true" id="rpip630983fef7b1126abaa9" data-parent-id="rpip519ce13da69dd4d6f6f2" data-target-for="rpip630983fef7b1126abaa9"> </span><span class="mdescRight" data-target="true" id="rpipede86051546a75bd570f" data-parent-id="rpip519ce13da69dd4d6f6f2" data-target-for="rpipede86051546a75bd570f">puts variant that skips any CR/LF conversion if enabled <br id="rpip1a6cabd9ebd4b87c5793"></span></p>
7055 </li>
7056 <li class="memitem">
7057 <p data-target="true" data-target-for="rpip780f92e9bac5ef621148"><span class="memItemLeft" data-target="true" id="rpipd1108319182c5d3de85d" data-parent-id="rpip780f92e9bac5ef621148" data-target-for="rpipd1108319182c5d3de85d">void </span><span class="memItemRight" data-target="true" id="rpip22686e35457f27e501d4" data-parent-id="rpip780f92e9bac5ef621148" data-target-for="rpip22686e35457f27e501d4"><a class="el" href="#ga4b010bf88f65fc5d38a29d5538fa80e1" id="rpipfe27b8410efab439399d" data-adjusted="true">stdio_set_chars_available_callback</a> (void(*fn)(void *), void *param)</span></p>
7058 </li>
7059 <li class="memdesc">
7060 <p data-target="true" data-target-for="rpip927c649a92be08c30179"><span class="mdescLeft" data-target="true" id="rpip91671cd8174d5f55ad45" data-parent-id="rpip927c649a92be08c30179" data-target-for="rpip91671cd8174d5f55ad45"> </span><span class="mdescRight" data-target="true" id="rpip40043123ee5e39781887" data-parent-id="rpip927c649a92be08c30179" data-target-for="rpip40043123ee5e39781887">get notified when there are input characters available  <br id="rpip45aef886e89286c1902d"></span></p>
7061 </li>
7062 </ul>
7063 <a name="details" id="details"></a>
7064 </div>
7065 <div class="sect2">
7066 <h3 id="rpip3eccc7d7592c0528c9ae">
7067 <a class="anchor" href="#rpip3eccc7d7592c0528c9ae"></a>Detailed Description</h3>
7068 <p id="rpip55d917e387fee3a69b51">Customized stdio support allowing for input and output from UART, USB, semi-hosting etc.</p>
7069 <p id="rpip7f0e87bd5a96ebffacae">Note the API for adding additional input output devices is not yet considered stable </p>
7070 </div>
7071 <div class="sect2">
7072 <h3 id="rpip2fc272e282686cb4da01">
7073 <a class="anchor" href="#rpip2fc272e282686cb4da01"></a>Function Documentation</h3>
7074 <a id="ga9b10b3bc1a4750fcb0e691566bc868e8" name="ga9b10b3bc1a4750fcb0e691566bc868e8"></a>
7075 <div class="sect3">
7076 <h4 id="rpip3af6c51330bd3e16a23b">
7077 <a class="anchor" href="#rpip3af6c51330bd3e16a23b"></a>◆ getchar_timeout_us()</h4>
7078 <div class="memitem" id="rpipf3530cbb5df59250d1ac">
7079 <div class="memproto" id="rpipbd09f54b962dace3a4ba">
7080       <table class="memname" id="rpip090e7668590bc7c43539">
7081         <tr id="rpip7ef504b83362e70ce88b">
7082           <td class="memname" id="rpipb304b33c7f2cf09c5810">int getchar_timeout_us </td>
7083           <td id="rpipe3d7353f51210bdd1402">(</td>
7084           <td class="paramtype" id="rpip577ba7e4af266ff19a36">uint32_t </td>
7085           <td class="paramname" id="rpip360ba3eab3141e4e64a9"><em id="rpipceafb6aee1cf036418af">timeout_us</em></td>
7086 <td id="rpip12cf2617957fecc1b451">)</td>
7087           <td id="rpip84554942fd7ba191646a"></td>
7088         </tr>
7089       </table>
7090 </div>
7091 <div class="memdoc" id="rpipc9b545eeacb2da741b20">
7092
7093 <p id="rpipa19fbdc7ebe73e25cd7a">Return a character from stdin if there is one available within a timeout. </p>
7094 <h4 id="rpip4fdc5528fb561e1ac679" data-parent-id="rpipf4181f996bf8b8535b7a" data-target-for="rpip4fdc5528fb561e1ac679">Parameters</h4>
7095 <p class="paragraph" id="rpip466546b885e823557ded" data-parent-id="rpipf4181f996bf8b8535b7a" data-target-for="rpip466546b885e823557ded">
7096   </p>
7097 <table class="params" id="rpipc64365aa2f483210b903">
7098     <tr id="rpip67ed7b241174e3c3e17a">
7099 <td class="paramname" id="rpip6ec9a0b73983767efa31">timeout_us</td>
7100 <td id="rpipe5d1d2eb0aacec9fa3cb">the timeout in microseconds, or 0 to not wait for a character if none available. </td>
7101 </tr>
7102   </table>
7103   
7104
7105
7106 <h4 class="label" id="rpip8bdf9862c525d639821e" data-parent-id="rpip0e58d287d70cfded75f6" data-target-for="rpip8bdf9862c525d639821e">Returns</h4>
7107 <p class="returns" id="rpipf9e6c9dbd1ebb934c4b0" data-parent-id="rpip0e58d287d70cfded75f6" data-target-for="rpipf9e6c9dbd1ebb934c4b0">the character from 0-255 or PICO_ERROR_TIMEOUT if timeout occurs </p>
7108
7109 </div>
7110 </div>
7111 <a id="gae3944ee24af8163a9538f01cda3e28df" name="gae3944ee24af8163a9538f01cda3e28df"></a>
7112 </div>
7113 <div class="sect3">
7114 <h4 id="rpip883078dcec8822e7352d">
7115 <a class="anchor" href="#rpip883078dcec8822e7352d"></a>◆ stdio_filter_driver()</h4>
7116 <div class="memitem" id="rpip6e4e6fa79d679f6a7008">
7117 <div class="memproto" id="rpipd72f85d91ec16c13e85a">
7118       <table class="memname" id="rpip872e68d591fc12c6c055">
7119         <tr id="rpip86bd533bd9c9d2ed602e">
7120           <td class="memname" id="rpip135046736880a0b283e6">void stdio_filter_driver </td>
7121           <td id="rpipe24e9bf00d73433f7f44">(</td>
7122           <td class="paramtype" id="rpip1f18a8ea928b925388b1">
7123 <a class="el" href="structstdio__driver.html" id="rpipbb8287c49b6ae2753c72">stdio_driver_t</a> * </td>
7124           <td class="paramname" id="rpipfa2fa2d151bd2af7043e"><em id="rpipd175eb86baaa03877004">driver</em></td>
7125 <td id="rpip13e8cbc989422fb0318c">)</td>
7126           <td id="rpipcd12caa7d504c2aef42a"></td>
7127         </tr>
7128       </table>
7129 </div>
7130 <div class="memdoc" id="rpipcec1a8db5e5f08d33b6e">
7131
7132 <p id="rpip25b6dacb8009c02f4869">Control limiting of output to a single driver. </p>
7133 <div class="admonitionblock note" id="rpip6038f79b7caefd161162" data-parent-id="rpipcec1a8db5e5f08d33b6e"><table>
7134 <tr data-target="true" data-target-for="rpip6038f79b7caefd161162">
7135 <td class="icon" id="rpip6a9b83d4bec66706ef42" data-parent-id="rpip6038f79b7caefd161162"><div class="title" data-target="true" data-target-for="rpip6a9b83d4bec66706ef42">Note</div></td>
7136 <td class="content" id="rpip04931e6e5a504f4f0743" data-parent-id="rpip6038f79b7caefd161162" data-target-for="rpip04931e6e5a504f4f0743">this method should always be called on an initialized driver</td>
7137 </tr>
7138 </table></div>
7139 <h4 id="rpip5efc1a1e96f2314ddd05" data-parent-id="rpipcfc2e870764fe73ee1f7" data-target-for="rpip5efc1a1e96f2314ddd05">Parameters</h4>
7140 <p class="paragraph" id="rpipfe4852ea93da78655752" data-parent-id="rpipcfc2e870764fe73ee1f7" data-target-for="rpipfe4852ea93da78655752">
7141   </p>
7142 <table class="params" id="rpipfefe6f186bfefd525b3c">
7143     <tr id="rpipbb645491c9c2e197898f">
7144 <td class="paramname" id="rpip890adbdc7a97103b2c4a">driver</td>
7145 <td id="rpip2c2eeb7af8f8a5095d82">if non-null then output only that driver will be used for input/output (assuming it is in the list of enabled drivers). if NULL then all enabled drivers will be used </td>
7146 </tr>
7147   </table>
7148   
7149
7150
7151
7152 </div>
7153 </div>
7154 <a id="ga0e604311fb226dae91ff4eb17a19d67a" name="ga0e604311fb226dae91ff4eb17a19d67a"></a>
7155 </div>
7156 <div class="sect3">
7157 <h4 id="rpip39f4bd175c8dc9f5259d">
7158 <a class="anchor" href="#rpip39f4bd175c8dc9f5259d"></a>◆ stdio_init_all()</h4>
7159 <div class="memitem" id="rpip8ae41899faf63a858c13">
7160 <div class="memproto" id="rpip803434821b199d4c6d68">
7161       <table class="memname" id="rpip980b0e5b18c563c83e94">
7162         <tr id="rpipfd7c53773050e4813e83">
7163           <td class="memname" id="rpip19e2527caec05f8c7ddd">bool stdio_init_all </td>
7164           <td id="rpip5301df5e3b5bc81a2b84">(</td>
7165           <td class="paramtype" id="rpipc84f6d863067da2a4229">void </td>
7166           <td class="paramname" id="rpipba01f77da0b469084fc8"></td>
7167 <td id="rpip86f878bbe2b379288e41">)</td>
7168           <td id="rpipb288ab237556103ec0fc"></td>
7169         </tr>
7170       </table>
7171 </div>
7172 <div class="memdoc" id="rpip5f66cb27614b48c9a965">
7173
7174 <p id="rpip7472a6fe29529e3e51fa">Initialize all of the present standard stdio types that are linked into the binary. </p>
7175 <p id="rpip53d095a77e4e58dd0fcb">Call this method once you have set up your clocks to enable the stdio support for UART, USB and semihosting based on the presence of the respective libraries in the binary.</p>
7176 <p id="rpipe1c62fd73e1d734a4e2a">When stdio_usb is configured, this method can be optionally made to block, waiting for a connection via the variables specified in <a class="el" href="runtime.html#pico_stdio_usb#gab87bcfa3f24e5a3fe92a944f9eecc460" id="rpip5c3a6a647d4c6ea1fdde" data-adjusted="true">stdio_usb_init</a> (i.e. PICO_STDIO_USB_CONNECT_WAIT_TIMEOUT_MS)</p>
7177 <h4 class="label" id="rpip7e493e0407963f43a170" data-parent-id="rpip1ff21e9936516d9ee510" data-target-for="rpip7e493e0407963f43a170">Returns</h4>
7178 <p class="returns" id="rpipbe040d4f4de4a86db22d" data-parent-id="rpip1ff21e9936516d9ee510" data-target-for="rpipbe040d4f4de4a86db22d">true if at least one output was successfully initialized, false otherwise. </p>
7179 <p class="see" id="rpip984111f80f9fa1547b48" data-parent-id="rpip5f66cb27614b48c9a965" data-target-for="rpip984111f80f9fa1547b48"><span class="label" id="rpip335ffeccedabbfb073ac" data-parent-id="rpip984111f80f9fa1547b48" data-target-for="rpip335ffeccedabbfb073ac">See also</span><span class="target" id="rpipe1aa93a791f3f4828976" data-parent-id="rpip984111f80f9fa1547b48" data-target-for="rpipe1aa93a791f3f4828976">stdio_uart, stdio_usb, stdio_semihosting </span></p>
7180
7181
7182
7183 </div>
7184 </div>
7185 <a id="ga4b010bf88f65fc5d38a29d5538fa80e1" name="ga4b010bf88f65fc5d38a29d5538fa80e1"></a>
7186 </div>
7187 <div class="sect3">
7188 <h4 id="rpip3379999e6eaba62d3d5e">
7189 <a class="anchor" href="#rpip3379999e6eaba62d3d5e"></a>◆ stdio_set_chars_available_callback()</h4>
7190 <div class="memitem" id="rpip5b74ade22a61d47e8b33">
7191 <div class="memproto" id="rpip33fd165519578e5936e7">
7192       <table class="memname" id="rpip836d28d1d1c81aeaf515">
7193         <tr id="rpip8c025824a7232786fece">
7194           <td class="memname" id="rpip08247a3a3c37fc236cd2">void stdio_set_chars_available_callback </td>
7195           <td id="rpip0236d763567573a52d95">(</td>
7196           <td class="paramtype" id="rpip7515ad79a02072836009">void(*)(void *) </td>
7197           <td class="paramname" id="rpipe0b176254caee8cfe4a7">
7198 <em id="rpipb1d3929c71a0cef236a8">fn</em>, </td>
7199         </tr>
7200         <tr id="rpipce77219c5779f57748a5">
7201           <td class="paramkey" id="rpip9eab50be45899b2d6bd4"></td>
7202           <td id="rpip808e06fb80ba00f09b84"></td>
7203           <td class="paramtype" id="rpipd51a69a9e8356f4cadb2">void * </td>
7204           <td class="paramname" id="rpip6f26164933c3b071c3b2">
7205 <em id="rpipa434be199b26734148b5">param</em> </td>
7206         </tr>
7207         <tr id="rpip9c07ec40b5e771ca60d5">
7208           <td id="rpip06d94f87a81477a1437c"></td>
7209           <td id="rpipa25810b276000b636063">)</td>
7210           <td id="rpipa2f9d641c25e502ee5fc"></td>
7211 <td id="rpip6319acb74c64e4264874"></td>
7212         </tr>
7213       </table>
7214 </div>
7215 <div class="memdoc" id="rpip7a7715e92789cbe12c3e">
7216
7217 <p id="rpip39436d55eb8f7fd1c4f4">get notified when there are input characters available </p>
7218 <h4 id="rpip6c9e27a2744afc1029c0" data-parent-id="rpip0c47b6130442208778f8" data-target-for="rpip6c9e27a2744afc1029c0">Parameters</h4>
7219 <p class="paragraph" id="rpipe1558f28d06c0200a36b" data-parent-id="rpip0c47b6130442208778f8" data-target-for="rpipe1558f28d06c0200a36b">
7220   </p>
7221 <table class="params" id="rpip46e7f1a781f5c49789d8">
7222     <tr id="rpipc8e4193e5e9936367dcd">
7223 <td class="paramname" id="rpipb281ae93a28732e937e9">fn</td>
7224 <td id="rpip2d27b999c4cf90dc975e">Callback function to be called when characters are available. Pass NULL to cancel any existing callback </td>
7225 </tr>
7226     <tr id="rpipfaeb53c94c9f3aafb135">
7227 <td class="paramname" id="rpip8783a1f16b16e4768042">param</td>
7228 <td id="rpip2898587439fd111a8b01">Pointer to pass to the callback </td>
7229 </tr>
7230   </table>
7231   
7232
7233
7234
7235 </div>
7236 </div>
7237 <a id="ga826d33ec05c3e33dbddf0cb09e329562" name="ga826d33ec05c3e33dbddf0cb09e329562"></a>
7238 </div>
7239 <div class="sect3">
7240 <h4 id="rpip2f99bbc31cfe0b6d6e79">
7241 <a class="anchor" href="#rpip2f99bbc31cfe0b6d6e79"></a>◆ stdio_set_driver_enabled()</h4>
7242 <div class="memitem" id="rpip86edbd67cf9befaca7ca">
7243 <div class="memproto" id="rpip9af471e39d2f84862461">
7244       <table class="memname" id="rpip91fdb9342f9723388182">
7245         <tr id="rpipc07888b6279bb15df7dc">
7246           <td class="memname" id="rpip958f8d73530eed6fd520">void stdio_set_driver_enabled </td>
7247           <td id="rpip0c302b807f5a9036aa31">(</td>
7248           <td class="paramtype" id="rpipc3eb31914c3a6feea343">
7249 <a class="el" href="structstdio__driver.html" id="rpip04cf7bb8550b5375e101">stdio_driver_t</a> * </td>
7250           <td class="paramname" id="rpip12a2bac1d3266b4b89a8">
7251 <em id="rpip0c602ad91fbdc5ce627a">driver</em>, </td>
7252         </tr>
7253         <tr id="rpip2bdc2f81600596ff5117">
7254           <td class="paramkey" id="rpip547f45e55a772b51c039"></td>
7255           <td id="rpip60009cb31c43039e6956"></td>
7256           <td class="paramtype" id="rpip9cd8a79c760b8c2563a6">bool </td>
7257           <td class="paramname" id="rpip52eba87fd431f8f0f272">
7258 <em id="rpip2edef91510bbad730102">enabled</em> </td>
7259         </tr>
7260         <tr id="rpipaf070da368a843216397">
7261           <td id="rpip63fafeb325393f18e4c5"></td>
7262           <td id="rpip0cd89133aa26f8c441b7">)</td>
7263           <td id="rpipd3b488c2733f16d4e4f7"></td>
7264 <td id="rpipf6f84e7fefa78218cc1b"></td>
7265         </tr>
7266       </table>
7267 </div>
7268 <div class="memdoc" id="rpip45757c12717b51f2af58">
7269
7270 <p id="rpipff4d5d3e8f8f4fc88f44">Adds or removes a driver from the list of active drivers used for input/output. </p>
7271 <div class="admonitionblock note" id="rpip96ca8c70ece7117d2ef7" data-parent-id="rpip45757c12717b51f2af58"><table>
7272 <tr data-target="true" data-target-for="rpip96ca8c70ece7117d2ef7">
7273 <td class="icon" id="rpipd9893feec722aa2c1284" data-parent-id="rpip96ca8c70ece7117d2ef7"><div class="title" data-target="true" data-target-for="rpipd9893feec722aa2c1284">Note</div></td>
7274 <td class="content" id="rpipcfc34a11ffe8757bb3a9" data-parent-id="rpip96ca8c70ece7117d2ef7" data-target-for="rpipcfc34a11ffe8757bb3a9">this method should always be called on an initialized driver and is not re-entrant </td>
7275 </tr>
7276 </table></div>
7277 <h4 id="rpip7ec4f322bf7568267f8b" data-parent-id="rpip6df54fa7a2b421703cbd" data-target-for="rpip7ec4f322bf7568267f8b">Parameters</h4>
7278 <p class="paragraph" id="rpip57632e0927047f83c7bf" data-parent-id="rpip6df54fa7a2b421703cbd" data-target-for="rpip57632e0927047f83c7bf">
7279   </p>
7280 <table class="params" id="rpipc2ab42ab48c62e55f05f">
7281     <tr id="rpipf0e408d119dd433a0449">
7282 <td class="paramname" id="rpipc80cb1faf584a33a5597">driver</td>
7283 <td id="rpipc5f4fd59397aa298cae3">the driver </td>
7284 </tr>
7285     <tr id="rpipc75e3c1a01fd66276772">
7286 <td class="paramname" id="rpip5e913aa2af76ab639c93">enabled</td>
7287 <td id="rpip57395325b874089eaa10">true to add, false to remove </td>
7288 </tr>
7289   </table>
7290   
7291
7292
7293
7294 </div>
7295 </div>
7296 <a id="gaba86bf2cb6b86a9078cd94dcf47b1915" name="gaba86bf2cb6b86a9078cd94dcf47b1915"></a>
7297 </div>
7298 <div class="sect3">
7299 <h4 id="rpipa254b900af1131794ef5">
7300 <a class="anchor" href="#rpipa254b900af1131794ef5"></a>◆ stdio_set_translate_crlf()</h4>
7301 <div class="memitem" id="rpip10658ac0964036bf4e19">
7302 <div class="memproto" id="rpip58fb065a8a9ca64cb90d">
7303       <table class="memname" id="rpipf4d3b2f90d0d73a186a7">
7304         <tr id="rpip0cd8f98a45d72f432160">
7305           <td class="memname" id="rpip28f9eb7ba3b6179bb4f5">void stdio_set_translate_crlf </td>
7306           <td id="rpipefab5b2bc526bf7a9494">(</td>
7307           <td class="paramtype" id="rpipcfc9dafcf5632db54cf3">
7308 <a class="el" href="structstdio__driver.html" id="rpipd0714fca878a81e90f0d">stdio_driver_t</a> * </td>
7309           <td class="paramname" id="rpip1cb011961859f06cdb11">
7310 <em id="rpip303fea9996ab78c6097e">driver</em>, </td>
7311         </tr>
7312         <tr id="rpip9c546c8f14f177cdd579">
7313           <td class="paramkey" id="rpip66846462bee8322eece7"></td>
7314           <td id="rpipf7bc28d3a71562071b3c"></td>
7315           <td class="paramtype" id="rpipeea706e32bb24a4976b0">bool </td>
7316           <td class="paramname" id="rpipedb53af660d24feba6fd">
7317 <em id="rpipd10a7503a02b021dc174">translate</em> </td>
7318         </tr>
7319         <tr id="rpip3fc5b698e43efc72d630">
7320           <td id="rpipbcee9a02b3794753f275"></td>
7321           <td id="rpipd5b156f33cb80cda4231">)</td>
7322           <td id="rpipc5ae5b2629a73d154531"></td>
7323 <td id="rpip8c9f9c42d4b045feaea1"></td>
7324         </tr>
7325       </table>
7326 </div>
7327 <div class="memdoc" id="rpipbe70a92e1a2d00ec7c37">
7328
7329 <p id="rpip4a7dc18dac285cd418a7">control conversion of line feeds to carriage return on transmissions </p>
7330 <div class="admonitionblock note" id="rpip3de11845a5f326a94ec1" data-parent-id="rpipbe70a92e1a2d00ec7c37"><table>
7331 <tr data-target="true" data-target-for="rpip3de11845a5f326a94ec1">
7332 <td class="icon" id="rpip40a734a5c85a16477c5f" data-parent-id="rpip3de11845a5f326a94ec1"><div class="title" data-target="true" data-target-for="rpip40a734a5c85a16477c5f">Note</div></td>
7333 <td class="content" id="rpipa9a671c63c3fec2f5793" data-parent-id="rpip3de11845a5f326a94ec1" data-target-for="rpipa9a671c63c3fec2f5793">this method should always be called on an initialized driver</td>
7334 </tr>
7335 </table></div>
7336 <h4 id="rpip8f1c292ba82d6754c263" data-parent-id="rpip7b6e3829f7ad3dd19e21" data-target-for="rpip8f1c292ba82d6754c263">Parameters</h4>
7337 <p class="paragraph" id="rpip6e2cb4abf92a7e0537cb" data-parent-id="rpip7b6e3829f7ad3dd19e21" data-target-for="rpip6e2cb4abf92a7e0537cb">
7338   </p>
7339 <table class="params" id="rpip20436a5ef139e5229220">
7340     <tr id="rpipf7de320e8a86543bcc94">
7341 <td class="paramname" id="rpip212e9192442e508e29e9">driver</td>
7342 <td id="rpip717e5f072f4c26dab279">the driver </td>
7343 </tr>
7344     <tr id="rpip53b0fd405ef65ea2c6f1">
7345 <td class="paramname" id="rpip31ac032d43ae82a84216">translate</td>
7346 <td id="rpip57b444a6c5cf9dc2ef0e">If true, convert line feeds to carriage return on transmissions </td>
7347 </tr>
7348   </table>
7349   
7350
7351
7352
7353 </div>
7354 </div>
7355 </div>
7356 </div>
7357 <div class="sect2">
7358 <h3 id="pico_stdio_semihosting">
7359 <a class="anchor" href="#pico_stdio_semihosting"></a>pico_stdio_semihosting</h3>
7360 <div class="ingroups" id="rpipc18045314d2f4e64d062">Part of: <a class="el" href="runtime.html" id="rpipd61551742b34be16f4ae">Runtime Infrastructure</a> Â» <a class="el" href="runtime.html#pico_stdio" id="rpip4920ae4165c1d10825e6">pico_stdio</a>
7361 </div>
7362 <p id="rpip455c4b8a4ae43d2bf0e1">Experimental support for stdout using RAM semihosting.
7363 <a href="#gadde63252061cb2d67235" id="rpipacd5b0ed2ef3007b9a57" data-adjusted="true">More...</a></p>
7364 <div class="sect3">
7365 <h4 id="rpip92dd473e6e9cf3370fec">
7366 <a class="anchor" href="#rpip92dd473e6e9cf3370fec"></a>Functions</h4>
7367 <ul class="memberdecls" id="rpip60abd1b7c5a90112df05" data-parent-id="rpip40e481472e11d655b03f">
7368 <li class="memitem">
7369 <p data-target="true" data-target-for="rpip60abd1b7c5a90112df05"><span class="memItemLeft" data-target="true" id="rpipf7574aada1fd2778ec47" data-parent-id="rpip60abd1b7c5a90112df05" data-target-for="rpipf7574aada1fd2778ec47">void </span><span class="memItemRight" data-target="true" id="rpip0b9bc9d02b41fe616215" data-parent-id="rpip60abd1b7c5a90112df05" data-target-for="rpip0b9bc9d02b41fe616215"><a class="el" href="#ga457f5c331541292ce4bf48c9341170c6" id="rpip79956c23bb66909a0a00" data-adjusted="true">stdio_semihosting_init</a> (void)</span></p>
7370 </li>
7371 <li class="memdesc">
7372 <p data-target="true" data-target-for="rpipfb5eee95f01bc74043f7"><span class="mdescLeft" data-target="true" id="rpip155da458e40bec43a292" data-parent-id="rpipfb5eee95f01bc74043f7" data-target-for="rpip155da458e40bec43a292"> </span><span class="mdescRight" data-target="true" id="rpipbef63b9184b9e12f408f" data-parent-id="rpipfb5eee95f01bc74043f7" data-target-for="rpipbef63b9184b9e12f408f">Explicitly initialize stdout over semihosting and add it to the current set of stdout targets.  <br id="rpipe3cff8cbd97d4ec9993f"></span></p>
7373 </li>
7374 </ul>
7375 <a name="details" id="gadde63252061cb2d67235"></a>
7376 </div>
7377 <div class="sect3">
7378 <h4 id="rpip39b23f4a2d5a4372794b">
7379 <a class="anchor" href="#rpip39b23f4a2d5a4372794b"></a>Detailed Description</h4>
7380 <p id="rpip063137089c0416f5a170">Experimental support for stdout using RAM semihosting. </p>
7381 <p id="rpip951cdd062897b9b840e8">Linking this library or calling <code id="rpip9879661eca9a5da2c0ca">pico_enable_stdio_semihosting(TARGET ENABLED)</code> in the CMake (which achieves the same thing) will add semihosting to the drivers used for standard output </p>
7382 </div>
7383 <div class="sect3">
7384 <h4 id="rpip8261797ace022753abfc">
7385 <a class="anchor" href="#rpip8261797ace022753abfc"></a>Function Documentation</h4>
7386 <a id="ga457f5c331541292ce4bf48c9341170c6" name="ga457f5c331541292ce4bf48c9341170c6"></a>
7387 <div class="sect4">
7388 <h5 id="rpip6e7aae8fa1ff0ede1f79">
7389 <a class="anchor" href="#rpip6e7aae8fa1ff0ede1f79"></a>◆ stdio_semihosting_init()</h5>
7390 <div class="memitem" id="rpip16925fd0aa3678b0a8e8">
7391 <div class="memproto" id="rpip3e8dd3abb1936bbad9e6">
7392       <table class="memname" id="rpipd581bdee2cc2965fa9cc">
7393         <tr id="rpip86c5827bba118d6329f7">
7394           <td class="memname" id="rpipd93d49344a28519bfa2d">void stdio_semihosting_init </td>
7395           <td id="rpipf8c64b880c973c797f9e">(</td>
7396           <td class="paramtype" id="rpip2ff38547654bbafba88a">void </td>
7397           <td class="paramname" id="rpip37c3557b6cbae6e27464"></td>
7398 <td id="rpip900b7bf1c4325058f5bf">)</td>
7399           <td id="rpipdb3aec40422b82fd9f6e"></td>
7400         </tr>
7401       </table>
7402 </div>
7403 <div class="memdoc" id="rpip006d2ea1f389d671211c">
7404
7405 <p id="rpip1ca843c6aface17dc9a6">Explicitly initialize stdout over semihosting and add it to the current set of stdout targets. </p>
7406 <div class="admonitionblock note" id="rpip5dc3ff22a18bca1a47c8" data-parent-id="rpip006d2ea1f389d671211c"><table>
7407 <tr data-target="true" data-target-for="rpip5dc3ff22a18bca1a47c8">
7408 <td class="icon" id="rpip78ffe85d5068cb075283" data-parent-id="rpip5dc3ff22a18bca1a47c8"><div class="title" data-target="true" data-target-for="rpip78ffe85d5068cb075283">Note</div></td>
7409 <td class="content" id="rpipc4db5e3853f0c02d0c76" data-parent-id="rpip5dc3ff22a18bca1a47c8" data-target-for="rpipc4db5e3853f0c02d0c76">this method is automatically called by <a class="el" href="runtime.html#pico_stdio#ga0e604311fb226dae91ff4eb17a19d67a" id="rpip06d9f48d63d822659e94" data-adjusted="true">stdio_init_all()</a> if <code id="rpipa29644ba52aa6537eb52">pico_stdio_semihosting</code> is included in the build </td>
7410 </tr>
7411
7412 </table></div>
7413
7414 </div>
7415 </div>
7416 </div>
7417 </div>
7418 </div>
7419 <div class="sect2">
7420 <h3 id="pico_stdio_uart">
7421 <a class="anchor" href="#pico_stdio_uart"></a>pico_stdio_uart</h3>
7422 <div class="ingroups" id="rpipc78abdef7dce8447b3e1">Part of: <a class="el" href="runtime.html" id="rpip03e7aa1ebedd5c718232">Runtime Infrastructure</a> Â» <a class="el" href="runtime.html#pico_stdio" id="rpip5720a6be33721dc9d8c4">pico_stdio</a>
7423 </div>
7424 <p id="rpipc8333b21b01a4f930d44">Support for stdin/stdout using UART.
7425 <a href="#ga586917b7e3b2b26bc116" id="rpip9a20e32346fe0e7c004b" data-adjusted="true">More...</a></p>
7426 <div class="sect3">
7427 <h4 id="rpipfcf1c7d82c78064c462b">
7428 <a class="anchor" href="#rpipfcf1c7d82c78064c462b"></a>Functions</h4>
7429 <ul class="memberdecls" id="rpip241eceded8ce3da54109" data-parent-id="rpip1026639d6f5151642d45">
7430 <li class="memitem">
7431 <p data-target="true" data-target-for="rpip241eceded8ce3da54109"><span class="memItemLeft" data-target="true" id="rpipe12c42c77edfc3c4c4d3" data-parent-id="rpip241eceded8ce3da54109" data-target-for="rpipe12c42c77edfc3c4c4d3">void </span><span class="memItemRight" data-target="true" id="rpip373d3fa62a08c86b5bf0" data-parent-id="rpip241eceded8ce3da54109" data-target-for="rpip373d3fa62a08c86b5bf0"><a class="el" href="#gafcc9bb58b1eb66b8571a507589f66fc2" id="rpipeb56e9c5fa5b4d9b095d" data-adjusted="true">stdio_uart_init</a> (void)</span></p>
7432 </li>
7433 <li class="memdesc">
7434 <p data-target="true" data-target-for="rpipcc461d03ec055728f189"><span class="mdescLeft" data-target="true" id="rpip8577342a5602cd05f48d" data-parent-id="rpipcc461d03ec055728f189" data-target-for="rpip8577342a5602cd05f48d"> </span><span class="mdescRight" data-target="true" id="rpip4118ded990b343cc8891" data-parent-id="rpipcc461d03ec055728f189" data-target-for="rpip4118ded990b343cc8891">Explicitly initialize stdin/stdout over UART and add it to the current set of stdin/stdout drivers.  <br id="rpipab5a9c73fc66aa288985"></span></p>
7435 </li>
7436 <li class="memitem">
7437 <p data-target="true" data-target-for="rpip31353cbfe16f2c194658"><span class="memItemLeft" data-target="true" id="rpipf8524e7285ab33030b57" data-parent-id="rpip31353cbfe16f2c194658" data-target-for="rpipf8524e7285ab33030b57">void </span><span class="memItemRight" data-target="true" id="rpip1203c8efdc7f10b2cb43" data-parent-id="rpip31353cbfe16f2c194658" data-target-for="rpip1203c8efdc7f10b2cb43"><a class="el" href="#ga265eeb67b5f1f4720dbe863e34d6acc4" id="rpipd4ad91c60c66560be5b9" data-adjusted="true">stdout_uart_init</a> (void)</span></p>
7438 </li>
7439 <li class="memdesc">
7440 <p data-target="true" data-target-for="rpipfa955d8429509ca64df9"><span class="mdescLeft" data-target="true" id="rpip27da7562cc1b2d3f3f54" data-parent-id="rpipfa955d8429509ca64df9" data-target-for="rpip27da7562cc1b2d3f3f54"> </span><span class="mdescRight" data-target="true" id="rpipfa8cd69f1dbd8b69dc6e" data-parent-id="rpipfa955d8429509ca64df9" data-target-for="rpipfa8cd69f1dbd8b69dc6e">Explicitly initialize stdout only (no stdin) over UART and add it to the current set of stdout drivers.  <br id="rpip2af2a0fdd03146c61b3a"></span></p>
7441 </li>
7442 <li class="memitem">
7443 <p data-target="true" data-target-for="rpip241b3b6cff5344924e81"><span class="memItemLeft" data-target="true" id="rpip62c8a1546d5c2e463a4d" data-parent-id="rpip241b3b6cff5344924e81" data-target-for="rpip62c8a1546d5c2e463a4d">void </span><span class="memItemRight" data-target="true" id="rpip9234963f704f7d94b633" data-parent-id="rpip241b3b6cff5344924e81" data-target-for="rpip9234963f704f7d94b633"><a class="el" href="#ga77fc28ecaf14439cdec18ac5a96d50f4" id="rpip157fb1f10bb00f943334" data-adjusted="true">stdin_uart_init</a> (void)</span></p>
7444 </li>
7445 <li class="memdesc">
7446 <p data-target="true" data-target-for="rpip1b2d7d7700af7c7aa073"><span class="mdescLeft" data-target="true" id="rpipf94515835398c2735a48" data-parent-id="rpip1b2d7d7700af7c7aa073" data-target-for="rpipf94515835398c2735a48"> </span><span class="mdescRight" data-target="true" id="rpip815e8561f8796df6a4ad" data-parent-id="rpip1b2d7d7700af7c7aa073" data-target-for="rpip815e8561f8796df6a4ad">Explicitly initialize stdin only (no stdout) over UART and add it to the current set of stdin drivers.  <br id="rpip6c2bdf79c59337e89e49"></span></p>
7447 </li>
7448 <li class="memitem">
7449 <p data-target="true" data-target-for="rpip47d3b7c7a55113b0532b"><span class="memItemLeft" data-target="true" id="rpipdb8ada4b1ae59d1de726" data-parent-id="rpip47d3b7c7a55113b0532b" data-target-for="rpipdb8ada4b1ae59d1de726">void </span><span class="memItemRight" data-target="true" id="rpipf00e10e5cfc7db19d2bc" data-parent-id="rpip47d3b7c7a55113b0532b" data-target-for="rpipf00e10e5cfc7db19d2bc"><a class="el" href="#ga2335d6c842d8363cf3df6b215f881919" id="rpipb27724bf6bf5e65de9b1" data-adjusted="true">stdio_uart_init_full</a> (uart_inst_t *uart, uint baud_rate, int tx_pin, int rx_pin)</span></p>
7450 </li>
7451 <li class="memdesc">
7452 <p data-target="true" data-target-for="rpipdc554e95c913928bd75e"><span class="mdescLeft" data-target="true" id="rpipaf6b8e70cc6aa1b14d2e" data-parent-id="rpipdc554e95c913928bd75e" data-target-for="rpipaf6b8e70cc6aa1b14d2e"> </span><span class="mdescRight" data-target="true" id="rpipbf5549b40d2513f5f0cd" data-parent-id="rpipdc554e95c913928bd75e" data-target-for="rpipbf5549b40d2513f5f0cd">Perform custom initialization initialize stdin/stdout over UART and add it to the current set of stdin/stdout drivers.  <br id="rpipe6a2d5348a094430b536"></span></p>
7453 </li>
7454 </ul>
7455 <a name="details" id="ga586917b7e3b2b26bc116"></a>
7456 </div>
7457 <div class="sect3">
7458 <h4 id="rpip9bb92256d38c5539823d">
7459 <a class="anchor" href="#rpip9bb92256d38c5539823d"></a>Detailed Description</h4>
7460 <p id="rpip160f6f47bebef8f4b821">Support for stdin/stdout using UART. </p>
7461 <p id="rpip2bdc480572a9c76b3168">Linking this library or calling <code id="rpipc4bb47b52544bea8dd79">pico_enable_stdio_uart(TARGET ENABLED)</code> in the CMake (which achieves the same thing) will add UART to the drivers used for standard input/output </p>
7462 </div>
7463 <div class="sect3">
7464 <h4 id="rpipfcdace5d9b38e8479e59">
7465 <a class="anchor" href="#rpipfcdace5d9b38e8479e59"></a>Function Documentation</h4>
7466 <a id="ga77fc28ecaf14439cdec18ac5a96d50f4" name="ga77fc28ecaf14439cdec18ac5a96d50f4"></a>
7467 <div class="sect4">
7468 <h5 id="rpip7eb9d8393b0291d1f01d">
7469 <a class="anchor" href="#rpip7eb9d8393b0291d1f01d"></a>◆ stdin_uart_init()</h5>
7470 <div class="memitem" id="rpip89b35fc7c801dbc38d8a">
7471 <div class="memproto" id="rpip7a36ffd819f2e2dcf635">
7472       <table class="memname" id="rpip460a6f75e775c043dad9">
7473         <tr id="rpip6da21cf2de08c5228306">
7474           <td class="memname" id="rpip9a4216fc774c67b86716">void stdin_uart_init </td>
7475           <td id="rpipc723259f1fdd58b65ad6">(</td>
7476           <td class="paramtype" id="rpip2a805a183431060bbdac">void </td>
7477           <td class="paramname" id="rpip5bcad3373415cfc2c5d2"></td>
7478 <td id="rpip09f16c49bf17aa04f251">)</td>
7479           <td id="rpip81ee0f48e8f8e3249d30"></td>
7480         </tr>
7481       </table>
7482 </div>
7483 <div class="memdoc" id="rpip63108f0b8071cd7b01ca">
7484
7485 <p id="rpipaa742f57a05b6ae93f1f">Explicitly initialize stdin only (no stdout) over UART and add it to the current set of stdin drivers. </p>
7486 <p id="rpip55971e475e5c057da1f5">This method sets up PICO_DEFAULT_UART_RX_PIN for UART input (if defined) , and configures the baud rate as PICO_DEFAULT_UART_BAUD_RATE </p>
7487
7488 </div>
7489 </div>
7490 <a id="gafcc9bb58b1eb66b8571a507589f66fc2" name="gafcc9bb58b1eb66b8571a507589f66fc2"></a>
7491 </div>
7492 <div class="sect4">
7493 <h5 id="rpipd77a6e036cd1828b7219">
7494 <a class="anchor" href="#rpipd77a6e036cd1828b7219"></a>◆ stdio_uart_init()</h5>
7495 <div class="memitem" id="rpip517fcd34caf867319446">
7496 <div class="memproto" id="rpipf4d7ab1484b5c5437032">
7497       <table class="memname" id="rpipc5aed22c163b6070c80f">
7498         <tr id="rpip8e17970259bcd1422933">
7499           <td class="memname" id="rpip4c4461b9c44c9f3a8d2f">void stdio_uart_init </td>
7500           <td id="rpip52b8185abbb1620d2b20">(</td>
7501           <td class="paramtype" id="rpipec1c8a7405a8334e660e">void </td>
7502           <td class="paramname" id="rpip47364d26547fa9da3ac7"></td>
7503 <td id="rpip55303f3da7db701291e5">)</td>
7504           <td id="rpipb006a64eda916d38c660"></td>
7505         </tr>
7506       </table>
7507 </div>
7508 <div class="memdoc" id="rpip9d61e83c2588abc78e91">
7509
7510 <p id="rpip4cc9c2e6065edd8e266c">Explicitly initialize stdin/stdout over UART and add it to the current set of stdin/stdout drivers. </p>
7511 <p id="rpip9d7fd9781e8ec2b26eba">This method sets up PICO_DEFAULT_UART_TX_PIN for UART output (if defined), PICO_DEFAULT_UART_RX_PIN for input (if defined) and configures the baud rate as PICO_DEFAULT_UART_BAUD_RATE.</p>
7512 <div class="admonitionblock note" id="rpip492f81b19be99db1f8e3" data-parent-id="rpip9d61e83c2588abc78e91"><table>
7513 <tr data-target="true" data-target-for="rpip492f81b19be99db1f8e3">
7514 <td class="icon" id="rpipf2c0192c4404f08159dc" data-parent-id="rpip492f81b19be99db1f8e3"><div class="title" data-target="true" data-target-for="rpipf2c0192c4404f08159dc">Note</div></td>
7515 <td class="content" id="rpip59b2211e95bbda7ccd07" data-parent-id="rpip492f81b19be99db1f8e3" data-target-for="rpip59b2211e95bbda7ccd07">this method is automatically called by <a class="el" href="runtime.html#pico_stdio#ga0e604311fb226dae91ff4eb17a19d67a" id="rpip7701b3227b0c0508efcc" data-adjusted="true">stdio_init_all()</a> if <code id="rpipd61d25a65ae9b58b8a46">pico_stdio_uart</code> is included in the build </td>
7516 </tr>
7517
7518 </table></div>
7519
7520 </div>
7521 </div>
7522 <a id="ga2335d6c842d8363cf3df6b215f881919" name="ga2335d6c842d8363cf3df6b215f881919"></a>
7523 </div>
7524 <div class="sect4">
7525 <h5 id="rpipabbdfaecd221752a19de">
7526 <a class="anchor" href="#rpipabbdfaecd221752a19de"></a>◆ stdio_uart_init_full()</h5>
7527 <div class="memitem" id="rpipf366e57853eff3eb266c">
7528 <div class="memproto" id="rpip977f491694d088db5499">
7529       <table class="memname" id="rpip87396a9d15efc12f5a8b">
7530         <tr id="rpip18966443ab1420d836e5">
7531           <td class="memname" id="rpip4713be43605ab681fe4e">void stdio_uart_init_full </td>
7532           <td id="rpipb4fd2c51f1fe266cdd33">(</td>
7533           <td class="paramtype" id="rpip819ab182a7decabbd3cf">uart_inst_t * </td>
7534           <td class="paramname" id="rpip8cd74ac00457b3c5dbb2">
7535 <em id="rpipf551faafef227dbcdf5c">uart</em>, </td>
7536         </tr>
7537         <tr id="rpip9b583514725fffbc0d9f">
7538           <td class="paramkey" id="rpipf85330f699af961f0bdb"></td>
7539           <td id="rpip9c77f7a0219023dde44e"></td>
7540           <td class="paramtype" id="rpip01d2f4e3dc37bba61bcc">uint </td>
7541           <td class="paramname" id="rpip70ed810ddc2029df8902">
7542 <em id="rpip6755807344195ce97612">baud_rate</em>, </td>
7543         </tr>
7544         <tr id="rpipff2b93b2c1dca63abfa2">
7545           <td class="paramkey" id="rpipd07caed4f04d6d8a24a8"></td>
7546           <td id="rpip3c3af5631118b56c7f10"></td>
7547           <td class="paramtype" id="rpip6bf4addc0fbcf6c1e605">int </td>
7548           <td class="paramname" id="rpip748f23955f901d61bfa9">
7549 <em id="rpipb86f5b06c98ed71c892f">tx_pin</em>, </td>
7550         </tr>
7551         <tr id="rpip873229d1b5928d79af9f">
7552           <td class="paramkey" id="rpipc7ab109c51a7f1b61fb4"></td>
7553           <td id="rpip39ffaf89eec1b0d7ca66"></td>
7554           <td class="paramtype" id="rpip7f1565c75fb4ecc679b5">int </td>
7555           <td class="paramname" id="rpip0577eb649618bd38dce5">
7556 <em id="rpip7fe5290f1950a8aa5e9f">rx_pin</em> </td>
7557         </tr>
7558         <tr id="rpipf5da14d12413b9a453c4">
7559           <td id="rpip802c450a975e0d6cd72c"></td>
7560           <td id="rpip7cd61683e483b39e47a2">)</td>
7561           <td id="rpip9c84e4902404794f5679"></td>
7562 <td id="rpip57b1200a7046abff5c12"></td>
7563         </tr>
7564       </table>
7565 </div>
7566 <div class="memdoc" id="rpip1f237c127cc5f664d686">
7567
7568 <p id="rpip3b9ff3f2854cafeeffe5">Perform custom initialization initialize stdin/stdout over UART and add it to the current set of stdin/stdout drivers. </p>
7569 <h4 id="rpip00c6ed590ff94a949450" data-parent-id="rpip0bcf874531f340881789" data-target-for="rpip00c6ed590ff94a949450">Parameters</h4>
7570 <p class="paragraph" id="rpip4c6a97d43daa065b0264" data-parent-id="rpip0bcf874531f340881789" data-target-for="rpip4c6a97d43daa065b0264">
7571   </p>
7572 <table class="params" id="rpip56c522d8c7a751cd69f3">
7573     <tr id="rpipc3fdd87b5c42a64fced3">
7574 <td class="paramname" id="rpip57fa8623d9cedda80b46">uart</td>
7575 <td id="rpip42943c111c5f6f62934d">the uart instance to use, <a class="el" href="hardware.html#ga4c45ff280c79aa60358d8241b7e5824b" id="rpip5d2adb48021ccd69395a" data-adjusted="true">uart0</a> or <a class="el" href="hardware.html#gad94ac6d5e345a1f794174d9bb7c6f69c" id="rpip5a6548f337993d99b411" data-adjusted="true">uart1</a> </td>
7576 </tr>
7577     <tr id="rpip56bb0198d275eb19e9c0">
7578 <td class="paramname" id="rpipc4dcc7829acae1bd3dee">baud_rate</td>
7579 <td id="rpip13468f6a5f67dbfaab76">the baud rate in Hz </td>
7580 </tr>
7581     <tr id="rpip7041655ba7a25f0bfe67">
7582 <td class="paramname" id="rpip31dccd834c6baf4a7d1b">tx_pin</td>
7583 <td id="rpip09a0bef90b36fc1e6dea">the UART pin to use for stdout (or -1 for no stdout) </td>
7584 </tr>
7585     <tr id="rpipa62677a0ef29331a446b">
7586 <td class="paramname" id="rpip70215fa157b5f8277416">rx_pin</td>
7587 <td id="rpip507c82a1a5fcf72d9dcb">the UART pin to use for stdin (or -1 for no stdin) </td>
7588 </tr>
7589   </table>
7590   
7591
7592
7593
7594 </div>
7595 </div>
7596 <a id="ga265eeb67b5f1f4720dbe863e34d6acc4" name="ga265eeb67b5f1f4720dbe863e34d6acc4"></a>
7597 </div>
7598 <div class="sect4">
7599 <h5 id="rpipcaab294d503c999d77cf">
7600 <a class="anchor" href="#rpipcaab294d503c999d77cf"></a>◆ stdout_uart_init()</h5>
7601 <div class="memitem" id="rpip13eb2f40ea16b96d146f">
7602 <div class="memproto" id="rpip79acb85014efe6b00a76">
7603       <table class="memname" id="rpip40e065e9f3fb19c416a0">
7604         <tr id="rpipbfd7ea923b6fc3e1a27e">
7605           <td class="memname" id="rpipa02ee0d5c3bf394f1c86">void stdout_uart_init </td>
7606           <td id="rpipd97574be421cac498dff">(</td>
7607           <td class="paramtype" id="rpipd28035d710191cf705cf">void </td>
7608           <td class="paramname" id="rpip842ebea1c910babaead4"></td>
7609 <td id="rpipbbbfd916d5db5df04850">)</td>
7610           <td id="rpipfb1b7652cd1cde71e1da"></td>
7611         </tr>
7612       </table>
7613 </div>
7614 <div class="memdoc" id="rpipdbe0c29d436a5fa792fa">
7615
7616 <p id="rpipee0bd167c13cbd744e30">Explicitly initialize stdout only (no stdin) over UART and add it to the current set of stdout drivers. </p>
7617 <p id="rpip41d891c348675cb88424">This method sets up PICO_DEFAULT_UART_TX_PIN for UART output (if defined) , and configures the baud rate as PICO_DEFAULT_UART_BAUD_RATE </p>
7618
7619 </div>
7620 </div>
7621 </div>
7622 </div>
7623 </div>
7624 <div class="sect2">
7625 <h3 id="pico_stdio_usb">
7626 <a class="anchor" href="#pico_stdio_usb"></a>pico_stdio_usb</h3>
7627 <div class="ingroups" id="rpip367165334c85cf20c508">Part of: <a class="el" href="runtime.html" id="rpip83847e3c438969e399ea">Runtime Infrastructure</a> Â» <a class="el" href="runtime.html#pico_stdio" id="rpip151e8145c0327f24c9c6">pico_stdio</a>
7628 </div>
7629 <p id="rpipa7465f3cf1e44d460c07">Support for stdin/stdout over USB serial (CDC)
7630 <a href="#ga2652d2ee6d47c681ebf6" id="rpipf2a1d2db377e9e073f31" data-adjusted="true">More...</a></p>
7631 <div class="sect3">
7632 <h4 id="rpip151eed2f513cbba5f70e">
7633 <a class="anchor" href="#rpip151eed2f513cbba5f70e"></a>Functions</h4>
7634 <ul class="memberdecls" id="rpipbb69045296a186c6a5eb" data-parent-id="rpip96288acd7a69e549dfb0">
7635 <li class="memitem">
7636 <p data-target="true" data-target-for="rpipbb69045296a186c6a5eb"><span class="memItemLeft" data-target="true" id="rpip68148091df27e68bf9af" data-parent-id="rpipbb69045296a186c6a5eb" data-target-for="rpip68148091df27e68bf9af">bool </span><span class="memItemRight" data-target="true" id="rpip8b7da2a3e581ddac5b29" data-parent-id="rpipbb69045296a186c6a5eb" data-target-for="rpip8b7da2a3e581ddac5b29"><a class="el" href="#gab87bcfa3f24e5a3fe92a944f9eecc460" id="rpipb4c4f9efb4ce3c8e2ec7" data-adjusted="true">stdio_usb_init</a> (void)</span></p>
7637 </li>
7638 <li class="memdesc">
7639 <p data-target="true" data-target-for="rpip03da1b93eb23c6d672a4"><span class="mdescLeft" data-target="true" id="rpip8cb0053f7c584d8ec2ab" data-parent-id="rpip03da1b93eb23c6d672a4" data-target-for="rpip8cb0053f7c584d8ec2ab"> </span><span class="mdescRight" data-target="true" id="rpip6b89ae8e3259871354f0" data-parent-id="rpip03da1b93eb23c6d672a4" data-target-for="rpip6b89ae8e3259871354f0">Explicitly initialize USB stdio and add it to the current set of stdin drivers.  <br id="rpip24adc03313670554f4a6"></span></p>
7640 </li>
7641 <li class="memitem">
7642 <p data-target="true" data-target-for="rpipdd9998aa870f7daf05b9"><span class="memItemLeft" data-target="true" id="rpip3b993600ba785278bd32" data-parent-id="rpipdd9998aa870f7daf05b9" data-target-for="rpip3b993600ba785278bd32">bool </span><span class="memItemRight" data-target="true" id="rpip0a70317e7da1bd46935f" data-parent-id="rpipdd9998aa870f7daf05b9" data-target-for="rpip0a70317e7da1bd46935f"><a class="el" href="#ga86edc8e3a477bb388ae73d92a3e87824" id="rpip362a0e1b689e7d42714a" data-adjusted="true">stdio_usb_connected</a> (void)</span></p>
7643 </li>
7644 <li class="memdesc">
7645 <p data-target="true" data-target-for="rpip5653da821e5291d1ff0c"><span class="mdescLeft" data-target="true" id="rpip56a4d34c168275c19455" data-parent-id="rpip5653da821e5291d1ff0c" data-target-for="rpip56a4d34c168275c19455"> </span><span class="mdescRight" data-target="true" id="rpipcdb718fc38ea885a2dde" data-parent-id="rpip5653da821e5291d1ff0c" data-target-for="rpipcdb718fc38ea885a2dde">Check if there is an active stdio CDC connection to a host.  <br id="rpipa1e179e381e5da8cdb14"></span></p>
7646 </li>
7647 </ul>
7648 <a name="details" id="ga2652d2ee6d47c681ebf6"></a>
7649 </div>
7650 <div class="sect3">
7651 <h4 id="rpipcbe7742e382922ad6c01">
7652 <a class="anchor" href="#rpipcbe7742e382922ad6c01"></a>Detailed Description</h4>
7653 <p id="rpip0d5681ab63e13f4318c5">Support for stdin/stdout over USB serial (CDC) </p>
7654 <p id="rpipde3e7bd97448a7af76ae">Linking this library or calling <code id="rpip2a2e9d5c394f0931fc54">pico_enable_stdio_usb(TARGET ENABLED)</code> in the CMake (which achieves the same thing) will add USB CDC to the drivers used for standard input/output</p>
7655 <p id="rpip031e32a69cf3bfb536cc">Note this library is a developer convenience. It is not applicable in all cases; for one it takes full control of the USB device precluding your use of the USB in device or host mode. For this reason, this library will automatically disengage if you try to using it alongside <a class="el" href="third_party.html#tinyusb_device" id="rpip483ff07b8c6d9dc3a320">tinyusb_device</a> or <a class="el" href="third_party.html#tinyusb_host" id="rpip5106a33659aeac20cda2">tinyusb_host</a>. It also takes control of a lower level IRQ and sets up a periodic background task.</p>
7656 <p id="rpip02b59a7df89c633a4f65">This library also includes (by default) functionality to enable the RP2040 to be reset over the USB interface. </p>
7657 </div>
7658 <div class="sect3">
7659 <h4 id="rpip3e668ef96619755ff234">
7660 <a class="anchor" href="#rpip3e668ef96619755ff234"></a>Function Documentation</h4>
7661 <a id="ga86edc8e3a477bb388ae73d92a3e87824" name="ga86edc8e3a477bb388ae73d92a3e87824"></a>
7662 <div class="sect4">
7663 <h5 id="rpipdf336331b1d293519257">
7664 <a class="anchor" href="#rpipdf336331b1d293519257"></a>◆ stdio_usb_connected()</h5>
7665 <div class="memitem" id="rpip445a07f6d3ff2073e0a6">
7666 <div class="memproto" id="rpip747f71175654567d9250">
7667       <table class="memname" id="rpip77ec92ae6791a27cac33">
7668         <tr id="rpipc6940a86047bb82aee05">
7669           <td class="memname" id="rpipc8a577cc998f4246c357">bool stdio_usb_connected </td>
7670           <td id="rpipce4d29d4baf1354923c1">(</td>
7671           <td class="paramtype" id="rpip58b8f81fa39bcab70cc5">void </td>
7672           <td class="paramname" id="rpipa1c417651eb21c6cdf36"></td>
7673 <td id="rpip9458dede413db314019d">)</td>
7674           <td id="rpipe1e5578614fdd7a77b50"></td>
7675         </tr>
7676       </table>
7677 </div>
7678 <div class="memdoc" id="rpipdbdc1c55d11956bfee27">
7679
7680 <p id="rpip897c543d59526b7f59bd">Check if there is an active stdio CDC connection to a host. </p>
7681 <h4 class="label" id="rpip4f152d84110f66a12653" data-parent-id="rpip28e6c450da0712e7ed88" data-target-for="rpip4f152d84110f66a12653">Returns</h4>
7682 <p class="returns" id="rpip32faf9bd33b1f127e085" data-parent-id="rpip28e6c450da0712e7ed88" data-target-for="rpip32faf9bd33b1f127e085">true if stdio is connected over CDC </p>
7683
7684 </div>
7685 </div>
7686 <a id="gab87bcfa3f24e5a3fe92a944f9eecc460" name="gab87bcfa3f24e5a3fe92a944f9eecc460"></a>
7687 </div>
7688 <div class="sect4">
7689 <h5 id="rpip52a6f207a6b8c7c764ba">
7690 <a class="anchor" href="#rpip52a6f207a6b8c7c764ba"></a>◆ stdio_usb_init()</h5>
7691 <div class="memitem" id="rpipb9f3192ce1f47f927644">
7692 <div class="memproto" id="rpip1b4a41bbad7215b35a70">
7693       <table class="memname" id="rpipb7204a5c133f3bbe40e2">
7694         <tr id="rpip15953c7665799c8760d1">
7695           <td class="memname" id="rpip88c250b9287304737d42">bool stdio_usb_init </td>
7696           <td id="rpipc7491f2879946d5af129">(</td>
7697           <td class="paramtype" id="rpip70bb8cd693d19355e88c">void </td>
7698           <td class="paramname" id="rpipe8a8cdcde8cea33bf583"></td>
7699 <td id="rpip8bdca129cd39857c4cd6">)</td>
7700           <td id="rpip61ef31c2abd59d7b071c"></td>
7701         </tr>
7702       </table>
7703 </div>
7704 <div class="memdoc" id="rpipf26d1f5241b84693150c">
7705
7706 <p id="rpip7a537b881eddbc16063e">Explicitly initialize USB stdio and add it to the current set of stdin drivers. </p>
7707 <p id="rpipa8f875cde3f84f5f97b6">PICO_STDIO_USB_CONNECT_WAIT_TIMEOUT_MS can be set to cause this method to wait for a CDC connection from the host before returning, which is useful if you don't want any initial stdout output to be discarded before the connection is established.</p>
7708 <h4 class="label" id="rpip16cd4205b89b6ba479d9" data-parent-id="rpipa5996110b3406f42ffc2" data-target-for="rpip16cd4205b89b6ba479d9">Returns</h4>
7709 <p class="returns" id="rpip8b638353bc005d567e0a" data-parent-id="rpipa5996110b3406f42ffc2" data-target-for="rpip8b638353bc005d567e0a">true if the USB CDC was initialized, false if an error occurred</p>
7710 <p id="rpipc62ed9855c37b649b175">Copyright (c) 2020 Raspberry Pi (Trading) Ltd.</p>
7711 <p id="rpip53d68374f07a83316db8">SPDX-License-Identifier: BSD-3-Clause </p>
7712
7713 </div>
7714 </div>
7715 </div>
7716 </div>
7717 </div>
7718 </div>
7719 <div class="sect1">
7720 <h2 id="pico_standard_link">
7721 <a class="anchor" href="#pico_standard_link"></a>pico_standard_link</h2>
7722 <div class="sectionbody"></div>
7723 <div class="ingroups" id="rpip7a4eeee57ec9a633aafc">Part of: <a class="el" href="runtime.html" id="rpipa93c2b9602666459eb8a">Runtime Infrastructure</a>
7724 </div>
7725 <p id="rpip0a5dd39d0d14aca84719">Standard link step providing the basics for creating a runnable binary.
7726 </p>
7727 <p id="rpipa3633cf045e0af42f63c">Standard link step providing the basics for creating a runnable binary. </p>
7728 <p id="rpipf2a183fc093f8b1dd982">This includes</p>
7729 <div class="ulist" id="rpipd6e1de44876b79632a12" data-parent-id="rpip57e6443cd5b12711414b">
7730 <ul data-target="true" data-target-for="rpipd6e1de44876b79632a12">
7731 <li id="rpipa5003f70ba8dd2b1dc8c"><p>C runtime initialization</p></li>
7732 <li id="rpip7727c6152c3be017cb6f"><p>Linker scripts for 'default', 'no_flash', 'blocked_ram' and 'copy_to_ram' binaries</p></li>
7733 <li id="rpip13db66abbc7972c29f5c"><p>'Binary Information' support</p></li>
7734 <li id="rpip63601ad8db70afc3abd0"><p>Linker option control </p></li>
7735 </ul>
7736 </div>
7737 </div>
7738 </body></html>
7739
7740       </section>
7741     </div>
7742
7743     <div class="legal">
7744   <div class="legal-inner">
7745     <p id="copyright">Raspberry Pi documentation is copyright &copy; 2012-2023 Raspberry Pi Ltd and is licensed under a <a href="https://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International</a> (CC BY-SA) licence.</p>
7746     <p id="copyright">Some content originates from the <a href="http://elinux.org/">eLinux wiki</a>, and is licensed under a <a href="http://creativecommons.org/licenses/by-sa/3.0/">Creative Commons Attribution-ShareAlike 3.0 Unported</a> licence.</p>
7747     <p id="copyright">The terms HDMI, HDMI High-Definition Multimedia Interface, HDMI trade dress and the HDMI Logos are trademarks or registered trademarks of HDMI Licensing Administrator, Inc</p>
7748   </div>
7749 </div>
7750  
7751     <style>
7752 #__rptl-footer .__rptl-footer-link, #__rptl-footer .__rptl-footer-link--with-icon, #__rptl-footer .__rptl-footer-item, #__rptl-footer .__rptl-footer-list, #__rptl-footer .__rptl-footer-heading, #__rptl-footer .__rptl-footer-column, #__rptl-footer .__rptl-footer-row, #__rptl-footer .__rptl-footer-container, #__rptl-footer {
7753   box-sizing: border-box;
7754   margin: 0;
7755   padding: 0;
7756   border: 0;
7757   font: inherit;
7758   font-size: 100%;
7759   vertical-align: baseline;
7760 }
7761
7762 #__rptl-footer {
7763   display: block;
7764   font-family: "Roboto", sans-serif;
7765   font-size: medium;
7766   font-weight: 400;
7767   line-height: 1.5;
7768   text-rendering: optimizeLegibility;
7769   -webkit-text-size-adjust: 100%;
7770      -moz-text-size-adjust: 100%;
7771           text-size-adjust: 100%;
7772   -webkit-font-smoothing: antialiased;
7773   -moz-osx-font-smoothing: grayscale;
7774   background: #f5f6f9;
7775   overflow: hidden;
7776 }
7777 #__rptl-footer .__rptl-footer-container {
7778   width: 100%;
7779   max-width: 1300px;
7780   padding-left: 16px;
7781   padding-right: 16px;
7782   margin: auto;
7783   margin-top: 32px;
7784 }
7785 @media (min-width: 800px) {
7786   #__rptl-footer .__rptl-footer-container {
7787     padding: 0 76px;
7788   }
7789 }
7790 @media (min-width: 1200px) {
7791   #__rptl-footer .__rptl-footer-container {
7792     padding: 0 84px;
7793   }
7794 }
7795 #__rptl-footer .__rptl-footer-row {
7796   display: flex;
7797   flex-wrap: wrap;
7798 }
7799 #__rptl-footer .__rptl-footer-column {
7800   flex-basis: 1;
7801   width: 100%;
7802   padding-right: 8px;
7803 }
7804 @media (min-width: 640px) {
7805   #__rptl-footer .__rptl-footer-column {
7806     width: 50%;
7807   }
7808 }
7809 @media (min-width: 1024px) {
7810   #__rptl-footer .__rptl-footer-column {
7811     width: 25%;
7812   }
7813 }
7814 #__rptl-footer .__rptl-footer-heading {
7815   font-weight: 700;
7816   color: #333333;
7817   margin-bottom: 8px;
7818 }
7819 #__rptl-footer .__rptl-footer-list {
7820   list-style: none;
7821   margin-bottom: 32px;
7822 }
7823 #__rptl-footer .__rptl-footer-item {
7824   margin-bottom: 8px;
7825 }
7826 #__rptl-footer .__rptl-footer-icon {
7827   margin-right: 0.5em;
7828   fill: #333;
7829 }
7830 #__rptl-footer .__rptl-footer-link, #__rptl-footer .__rptl-footer-link--with-icon {
7831   font-weight: 400;
7832   color: #333;
7833   text-decoration: none;
7834 }
7835 #__rptl-footer .__rptl-footer-link--with-icon {
7836   display: inline-flex;
7837   align-items: center;
7838 }
7839 #__rptl-footer .__rptl-footer-link:hover, #__rptl-footer .__rptl-footer-link--with-icon:hover {
7840   text-decoration: underline;
7841 }
7842 </style>
7843 <footer id="__rptl-footer">
7844   <div class="__rptl-footer-container">
7845     <div class="__rptl-footer-row">
7846       <div class="__rptl-footer-column">
7847         <div class="__rptl-footer-heading">Follow us</div>
7848         <ul class="__rptl-footer-list">
7849           <li class="__rptl-footer-item">
7850             <a href="/weekly/" class="__rptl-footer-link--with-icon">
7851               <svg class="__rptl-footer-icon" aria-hidden="true" focusable="false" width="1.25em" height="1.25em" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M1 6v12a2 2 0 0 0 2 2h18a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2H3a2 2 0 0 0-2 2Zm19.707 10.293a1 1 0 1 1-1.414 1.414L15 13.414l-.515.515a3.518 3.518 0 0 1-4.97 0L9 13.414l-4.293 4.293a1 1 0 0 1-1.414-1.414L7.586 12 3.293 7.707a1 1 0 0 1 1.414-1.414l5 5 1.222 1.222a1.516 1.516 0 0 0 2.142 0l1.222-1.222 5-5a1 1 0 0 1 1.414 1.414L16.414 12Z"/></svg>
7852               Sign up to newsletter
7853             </a>
7854           </li>
7855           <li class="__rptl-footer-item">
7856             <a href="https://www.threads.net/@raspberrypi" class="__rptl-footer-link--with-icon">
7857               <svg class="__rptl-footer-icon" aria-hidden="true" focusable="false" width="1.25em" height="1.25em" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 192 192"><path d="M141.537 88.988a66.667 66.667 0 0 0-2.518-1.143c-1.482-27.307-16.403-42.94-41.457-43.1h-.34c-14.986 0-27.449 6.396-35.12 18.036l13.779 9.452c5.73-8.695 14.724-10.548 21.348-10.548h.229c8.249.053 14.474 2.452 18.503 7.129 2.932 3.405 4.893 8.111 5.864 14.05-7.314-1.243-15.224-1.626-23.68-1.14-23.82 1.371-39.134 15.264-38.105 34.568.522 9.792 5.4 18.216 13.735 23.719 7.047 4.652 16.124 6.927 25.557 6.412 12.458-.683 22.231-5.436 29.049-14.127 5.178-6.6 8.453-15.153 9.899-25.93 5.937 3.583 10.337 8.298 12.767 13.966 4.132 9.635 4.373 25.468-8.546 38.376-11.319 11.308-24.925 16.2-45.488 16.351-22.809-.169-40.06-7.484-51.275-21.742C35.236 139.966 29.808 120.682 29.605 96c.203-24.682 5.63-43.966 16.133-57.317C56.954 24.425 74.204 17.11 97.013 16.94c22.975.17 40.526 7.52 52.171 21.847 5.71 7.026 10.015 15.86 12.853 26.162l16.147-4.308c-3.44-12.68-8.853-23.606-16.219-32.668C147.036 9.607 125.202.195 97.07 0h-.113C68.882.194 47.292 9.642 32.788 28.08 19.882 44.485 13.224 67.315 13.001 95.932L13 96v.067c.224 28.617 6.882 51.447 19.788 67.854C47.292 182.358 68.882 191.806 96.957 192h.113c24.96-.173 42.554-6.708 57.048-21.189 18.963-18.945 18.392-42.692 12.142-57.27-4.484-10.454-13.033-18.945-24.723-24.553ZM98.44 129.507c-10.44.588-21.286-4.098-21.82-14.135-.397-7.442 5.296-15.746 22.461-16.735 1.966-.114 3.895-.169 5.79-.169 6.235 0 12.068.606 17.371 1.765-1.978 24.702-13.58 28.713-23.802 29.274Z" /></svg>
7858               Threads
7859             </a>
7860           </li>
7861           <li class="__rptl-footer-item">
7862             <a href="https://raspberrypi.social/@Raspberry_Pi" rel="me" class="__rptl-footer-link--with-icon">
7863               <svg class="__rptl-footer-icon" aria-hidden="true" focusable="false" width="1.25em" height="1.25em" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path d="M11.19 12.195c2.016-.24 3.77-1.475 3.99-2.603.348-1.778.32-4.339.32-4.339 0-3.47-2.286-4.488-2.286-4.488C12.062.238 10.083.017 8.027 0h-.05C5.92.017 3.942.238 2.79.765c0 0-2.285 1.017-2.285 4.488l-.002.662c-.004.64-.007 1.35.011 2.091.083 3.394.626 6.74 3.78 7.57 1.454.383 2.703.463 3.709.408 1.823-.1 2.847-.647 2.847-.647l-.06-1.317s-1.303.41-2.767.36c-1.45-.05-2.98-.156-3.215-1.928a3.614 3.614 0 0 1-.033-.496s1.424.346 3.228.428c1.103.05 2.137-.064 3.188-.189zm1.613-2.47H11.13v-4.08c0-.859-.364-1.295-1.091-1.295-.804 0-1.207.517-1.207 1.541v2.233H7.168V5.89c0-1.024-.403-1.541-1.207-1.541-.727 0-1.091.436-1.091 1.296v4.079H3.197V5.522c0-.859.22-1.541.66-2.046.456-.505 1.052-.764 1.793-.764.856 0 1.504.328 1.933.983L8 4.39l.417-.695c.429-.655 1.077-.983 1.934-.983.74 0 1.336.259 1.791.764.442.505.661 1.187.661 2.046v4.203z"/></svg>
7864               Mastodon
7865             </a>
7866           </li>
7867           <li class="__rptl-footer-item">
7868             <a href="https://youtube.com/raspberrypi" class="__rptl-footer-link--with-icon">
7869               <svg class="__rptl-footer-icon" aria-hidden="true" focusable="false" width="1.25em" height="1.25em" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.751 15.27V8.73L15.498 12l-5.747 3.27Zm12.783-8.597a2.763 2.763 0 0 0-1.944-1.956C18.876 4.254 12 4.254 12 4.254s-6.876 0-8.59.463a2.763 2.763 0 0 0-1.944 1.956A28.982 28.982 0 0 0 1.006 12a28.982 28.982 0 0 0 .46 5.327 2.763 2.763 0 0 0 1.943 1.956c1.715.463 8.591.463 8.591.463s6.876 0 8.59-.463a2.763 2.763 0 0 0 1.944-1.956 28.98 28.98 0 0 0 .46-5.327 28.98 28.98 0 0 0-.46-5.327Z"/></svg>
7870               YouTube
7871             </a>
7872           </li>
7873           <li class="__rptl-footer-item">
7874             <a href="https://www.instagram.com/raspberrypi/" class="__rptl-footer-link--with-icon">
7875               <svg class="__rptl-footer-icon" aria-hidden="true" focusable="false" width="1.25em" height="1.25em" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12.25 3.667c2.67 0 2.986.01 4.04.058a5.534 5.534 0 0 1 1.858.344 3.312 3.312 0 0 1 1.898 1.898 5.534 5.534 0 0 1 .344 1.857c.048 1.054.058 1.37.058 4.04s-.01 2.987-.058 4.042a5.534 5.534 0 0 1-.344 1.857 3.312 3.312 0 0 1-1.898 1.897 5.533 5.533 0 0 1-1.857.345c-1.054.048-1.37.058-4.041.058s-2.987-.01-4.04-.058a5.533 5.533 0 0 1-1.858-.345 3.312 3.312 0 0 1-1.898-1.897 5.534 5.534 0 0 1-.344-1.857c-.048-1.055-.058-1.371-.058-4.041s.01-2.987.058-4.041a5.534 5.534 0 0 1 .344-1.857A3.312 3.312 0 0 1 6.352 4.07a5.533 5.533 0 0 1 1.857-.344c1.055-.048 1.37-.058 4.041-.058m0-1.802c-2.716 0-3.056.011-4.123.06A7.34 7.34 0 0 0 5.7 2.39a5.113 5.113 0 0 0-2.925 2.924 7.34 7.34 0 0 0-.465 2.428c-.049 1.066-.06 1.407-.06 4.123s.011 3.056.06 4.123a7.34 7.34 0 0 0 .465 2.427A5.113 5.113 0 0 0 5.7 21.34a7.34 7.34 0 0 0 2.427.465c1.067.048 1.407.06 4.123.06s3.056-.012 4.123-.06a7.34 7.34 0 0 0 2.427-.465 5.113 5.113 0 0 0 2.925-2.925 7.34 7.34 0 0 0 .465-2.427c.048-1.067.06-1.407.06-4.123s-.012-3.057-.06-4.123a7.34 7.34 0 0 0-.465-2.428A5.113 5.113 0 0 0 18.8 2.39a7.34 7.34 0 0 0-2.427-.465c-1.067-.049-1.407-.06-4.123-.06Z"/><path class="cls-1" d="M12.25 6.73a5.135 5.135 0 1 0 5.135 5.135A5.135 5.135 0 0 0 12.25 6.73Zm0 8.468a3.333 3.333 0 1 1 3.333-3.333 3.333 3.333 0 0 1-3.333 3.333Z"/><circle cx="17.588" cy="6.527" r="1.2"/></svg>
7876               Instagram
7877             </a>
7878           </li>
7879           <li class="__rptl-footer-item">
7880             <a href="https://www.linkedin.com/company/raspberrypi/" class="__rptl-footer-link--with-icon">
7881               <svg class="__rptl-footer-icon" aria-hidden="true" focusable="false" width="1.25em" height="1.25em" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20.435 2.1H3.561a1.445 1.445 0 0 0-1.462 1.426v16.946a1.446 1.446 0 0 0 1.462 1.429h16.874a1.449 1.449 0 0 0 1.466-1.429V3.526A1.448 1.448 0 0 0 20.435 2.1ZM7.972 18.972H5.035v-9.45h2.937ZM6.504 8.23a1.703 1.703 0 1 1 1.702-1.703A1.703 1.703 0 0 1 6.504 8.23Zm12.468 10.742h-2.934v-4.596c0-1.096-.02-2.505-1.527-2.505-1.528 0-1.762 1.193-1.762 2.426v4.675H9.814v-9.45h2.817v1.291h.04a3.086 3.086 0 0 1 2.778-1.526c2.974 0 3.523 1.957 3.523 4.501Z"/></svg>
7882               LinkedIn
7883             </a>
7884           </li>
7885           <li class="__rptl-footer-item">
7886             <a href="https://www.facebook.com/raspberrypi" class="__rptl-footer-link--with-icon">
7887               <svg class="__rptl-footer-icon" aria-hidden="true" focusable="false" width="1.25em" height="1.25em" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M22 12.06a10 10 0 1 0-11.563 9.88V14.95H7.899v-2.89h2.54V9.858a3.529 3.529 0 0 1 3.777-3.891 15.378 15.378 0 0 1 2.238.195v2.461h-1.26a1.445 1.445 0 0 0-1.63 1.562v1.876h2.773l-.443 2.89h-2.33v6.988A10.002 10.002 0 0 0 22 12.061Z"/></svg>
7888               Facebook
7889             </a>
7890           </li>
7891         </ul>
7892       </div>
7893       <div class="__rptl-footer-column">
7894         <div class="__rptl-footer-heading">About Raspberry Pi</div>
7895         <ul class="__rptl-footer-list">
7896           <li class="__rptl-footer-item"><a href="/news/" class="__rptl-footer-link">News</a></li>
7897           <li class="__rptl-footer-item"><a href="/contact/" class="__rptl-footer-link">Contact us</a></li>
7898           <li class="__rptl-footer-item"><a href="/trademark-rules/" class="__rptl-footer-link">Trademark</a></li>
7899           <li class="__rptl-footer-item"><a href="/about/" class="__rptl-footer-link">About us</a></li>
7900           <li class="__rptl-footer-item"><a href="/resellers/" class="__rptl-footer-link">Our Approved Resellers</a></li>
7901           <li class="__rptl-footer-item"><a href="/jobs/" class="__rptl-footer-link">Jobs</a></li>
7902           <li class="__rptl-footer-item"><a href="/accessibility/" class="__rptl-footer-link">Accessibility</a></li>
7903           <li class="__rptl-footer-item"><a href="/terms-and-conditions/" class="__rptl-footer-link">Site use terms and conditions</a></li>
7904           <li class="__rptl-footer-item"><a href="/acceptable-use/" class="__rptl-footer-link">Acceptable use</a></li>
7905           <li class="__rptl-footer-item"><a href="/cookies/" class="__rptl-footer-link">Cookies</a></li>
7906           <li class="__rptl-footer-item"><a href="/licensing/" class="__rptl-footer-link">Licensing</a></li>
7907           <li class="__rptl-footer-item"><a href="/terms-conditions-sale/" class="__rptl-footer-link">Terms and conditions of sale</a></li>
7908           <li class="__rptl-footer-item"><a href="/privacy/" class="__rptl-footer-link">Privacy</a></li>
7909           <li class="__rptl-footer-item"><a href="/contact/security/" class="__rptl-footer-link">Security</a></li>
7910           <li class="__rptl-footer-item"><a href="/verify/" class="__rptl-footer-link">Verify our bank details</a></li>
7911         </ul>
7912       </div>
7913       <div class="__rptl-footer-column">
7914         <div class="__rptl-footer-heading">For home</div>
7915         <ul class="__rptl-footer-list">
7916           <li class="__rptl-footer-item"><a href="/for-home/" class="__rptl-footer-link">Raspberry Pi for home</a></li>
7917           <li class="__rptl-footer-item"><a href="/tutorials/" class="__rptl-footer-link">Tutorials</a></li>
7918         </ul>
7919         <div class="__rptl-footer-heading">For industry</div>
7920         <ul class="__rptl-footer-list">
7921           <li class="__rptl-footer-item"><a href="/for-industry/" class="__rptl-footer-link">Raspberry Pi for industry</a></li>
7922           <li class="__rptl-footer-item"><a href="/for-industry/thin-clients/" class="__rptl-footer-link">Thin clients</a></li>
7923           <li class="__rptl-footer-item"><a href="/for-industry/space/" class="__rptl-footer-link">Raspberry Pi in space</a></li>
7924           <li class="__rptl-footer-item"><a href="/for-industry/powered-by/" class="__rptl-footer-link">Powered by Raspberry Pi</a></li>
7925           <li class="__rptl-footer-item"><a href="/for-industry/design-partners/" class="__rptl-footer-link">Design partners</a></li>
7926           <li class="__rptl-footer-item"><a href="/success-stories/" class="__rptl-footer-link">Success stories</a></li>
7927         </ul>
7928         <div class="__rptl-footer-heading">Hardware</div>
7929         <ul class="__rptl-footer-list">
7930           <li class="__rptl-footer-item"><a href="/products/#raspberry-pi-computers-and-microcontrollers" class="__rptl-footer-link">Computers and microcontrollers</a></li>
7931           <li class="__rptl-footer-item"><a href="/products/#cameras-and-displays" class="__rptl-footer-link">Cameras and displays</a></li>
7932           <li class="__rptl-footer-item"><a href="/products/#add-on-boards" class="__rptl-footer-link">Add-on boards</a></li>
7933           <li class="__rptl-footer-item"><a href="/products/#power-supplies-and-cables" class="__rptl-footer-link">Power supplies and cables</a></li>
7934           <li class="__rptl-footer-item"><a href="/products/#cases" class="__rptl-footer-link">Cases</a></li>
7935           <li class="__rptl-footer-item"><a href="/products/#peripherals" class="__rptl-footer-link">Peripherals</a></li>
7936         </ul>
7937         <div class="__rptl-footer-heading">Software</div>
7938         <ul class="__rptl-footer-list">
7939           <li class="__rptl-footer-item"><a href="/software/operating-systems/#raspberry-pi-os-32-bit" class="__rptl-footer-link">Raspberry Pi OS</a></li>
7940           <li class="__rptl-footer-item"><a href="/software/" class="__rptl-footer-link">Raspberry Pi Imager</a></li>
7941           <li class="__rptl-footer-item"><a href="/software/raspberry-pi-desktop/" class="__rptl-footer-link">Raspberry Pi Desktop</a></li>
7942         </ul>
7943       </div>
7944       <div class="__rptl-footer-column">
7945         <div class="__rptl-footer-heading">Documentation</div>
7946         <ul class="__rptl-footer-list">
7947           <li class="__rptl-footer-item"><a href="/documentation/" class="__rptl-footer-link">All categories</a></li>
7948           <li class="__rptl-footer-item"><a href="https://pip.raspberrypi.com" class="__rptl-footer-link">Product information portal</a></li>
7949           <li class="__rptl-footer-item"><a href="https://datasheets.raspberrypi.com" class="__rptl-footer-link">Datasheets</a></li>
7950         </ul>
7951         <div class="__rptl-footer-heading">Community</div>
7952         <ul class="__rptl-footer-list">
7953           <li class="__rptl-footer-item"><a href="https://forums.raspberrypi.com/" class="__rptl-footer-link">Forums</a></li>
7954           <li class="__rptl-footer-item"><a href="https://events.raspberrypi.com/" class="__rptl-footer-link">Events</a></li>
7955         </ul>
7956         <div class="__rptl-footer-heading">Raspberry Pi Store</div>
7957         <ul class="__rptl-footer-list">
7958           <li class="__rptl-footer-item"><a href="/raspberry-pi-store/" class="__rptl-footer-link">Store information</a></li>
7959         </ul>
7960         <div class="__rptl-footer-heading">Raspberry Pi Press</div>
7961         <ul class="__rptl-footer-list">
7962           <li class="__rptl-footer-item"><a href="/books-magazines/" class="__rptl-footer-link">About Raspberry Pi Press</a></li>
7963           <li class="__rptl-footer-item"><a href="https://magpi.raspberrypi.com" class="__rptl-footer-link">The MagPi</a></li>
7964           <li class="__rptl-footer-item"><a href="https://hackspace.raspberrypi.com" class="__rptl-footer-link">HackSpace</a></li>
7965         </ul>
7966       </div>
7967     </div>
7968   </div>
7969 </footer>
7970   
7971     <!-- Script for the TOC toggle -->
7972 <script src="/documentation/scripts/nav.js?ver=1703167119" type="text/javascript"></script>
7973
7974 <!-- TOCify scripts -->
7975 <script src="{{jquery}}"></script>
7976 <script src="{{jquery-ui}}"></script>
7977 <script src="{{jquery-tocify}}"></script>
7978
7979 <!-- Copy To Clipboard scripts -->
7980 <script src="/documentation/scripts/clipboard.min.js"></script>
7981 <script src="/documentation/scripts/copy-to-clipboard.js?ver=1703167119"></script>
7982
7983 <!-- Some custom handling for whitepapers -->
7984 <script src="/documentation/scripts/whitepaper.js?ver=1703167119"></script>
7985
7986 <script>
7987   function hasher(text, element) {
7988     return text.toLowerCase().replace(/ /g, "-").replace(/\./g, "-").replace(/[^-\w]/g, "").replace(/-+/g, "-");
7989   }
7990
7991   function waitForElementToDisplay(selector, checkFrequencyInMs, timeoutInMs) {
7992     try {
7993       // wait for all the content to load first...
7994       var startTimeInMs = Date.now();
7995       (function loopSearch() {
7996         //  && document.querySelector(selector).getBoundingClientRect().top > 0
7997         if (document.querySelector(selector) != null && document.querySelector(selector).getBoundingClientRect().top > 0) {
7998           scrollToElement(selector);
7999           return;
8000         }
8001         else {
8002           setTimeout(function () {
8003             if (timeoutInMs && Date.now() - startTimeInMs > timeoutInMs)
8004               return;
8005             loopSearch();
8006           }, checkFrequencyInMs);
8007         }
8008       })();
8009     } catch (e) {
8010       console.log("there was an error in scrollToElement:");
8011       console.log(e);
8012     }
8013   }
8014
8015   function scrollToElement(selector) {
8016     try {
8017       // if found, scroll to that id hash
8018       console.log("Scrolling to ", selector);
8019       var target = document.querySelector(selector);
8020       if (target) {
8021         var bbox = target.getBoundingClientRect();
8022         var myid = target.getAttribute("id");
8023         window.scrollTo({
8024           top: bbox.top,
8025           left: 0,
8026           behavior: "smooth",
8027         });
8028       } else {
8029         console.log("Target not found :(");
8030       }
8031     } catch (e) {
8032       console.log("there was an error in scrollToElement:");
8033       console.log(e);
8034     }
8035   }
8036
8037   $(function() {
8038     $("#toc").tocify({ showAndHide: false, hashGenerator: hasher, extendPage: false, ignoreSelector: ".discrete" });
8039     // special handling to scroll to tocify elements on the page
8040     if (window.location.hasOwnProperty("hash") && window.location.hash.indexOf("#") > -1) {
8041       var myhash = window.location.hash;
8042       myhash = myhash.replace("#", "");
8043       var selector = "div[data-unique="+myhash+"] + *";
8044       waitForElementToDisplay(selector, 1000, 9000);
8045     }
8046   });
8047 </script>
8048
8049 <script>
8050   var contents = document.getElementById("contents");
8051   contents.addEventListener('mouseenter', e => {
8052     contents.style.overflowY = 'auto';
8053   });
8054
8055   contents.addEventListener('mouseleave', e => {
8056     contents.style.overflowY = 'hidden';
8057   });
8058 </script>
8059
8060     <script src="https://cdn.jsdelivr.net/npm/@docsearch/js@3"></script>
8061 <script type="text/javascript">
8062   (function () {
8063     var lvl0 = document.querySelector('#tab-menu li.selected'),
8064         lvl1 = document.querySelector('#content h1'),
8065         searchParameters = { optionalFilters: [] };
8066
8067     if (lvl0) {
8068       searchParameters.optionalFilters.push("hierarchy.lvl0:" + lvl0.innerText);
8069     }
8070     if (lvl1) {
8071       searchParameters.optionalFilters.push("hierarchy.lvl1:" + lvl1.innerText + "<score=2>");
8072     }
8073
8074     docsearch({
8075       appId: 'IHWGNTJ1NP',
8076       apiKey: '94f8e1d1619229399fe8b33bcf750dfd',
8077       indexName: 'raspberrypi',
8078       container: '#docsearch',
8079       searchParameters: searchParameters
8080     });
8081   }());
8082 </script>
8083
8084
8085   </body>
8086 </html>
This page took 0.576179 seconds and 4 git commands to generate.