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}}">
25 nav#mobile-contents h3 {
26 display: none !important;
29 display: none !important;
32 display: none !important;
35 display: none !important;
38 display: none !important;
41 display: none !important;
43 #content h1,h2,h3,h4,h5,h6,p,span,li,td,th {
44 color: var(--vscode-editor-foreground) !important;
46 #content .memproto td {
47 color: initial !important;
50 color: initial !important;
53 background-color: var(--vscode-editor-background) !important;
55 nav#contents a, nav#mobile-contents a {
56 color: var(--vscode-editor-foreground) !important;
59 width: 100% !important;
60 min-width: auto !important;
61 margin-left: 0px !important;
64 margin: 50px 50px 0px 50px !important;
66 /* the links currently don't work */
68 display: none !important;
80 font-family: "Roboto", sans-serif;
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;
92 #__rptl-header .__rptl-header-wrapper {
96 box-sizing: border-box;
102 #__rptl-header .__rptl-header-navbar {
106 box-sizing: border-box;
109 background-color: #fff;
110 border-bottom: 1px solid #dedede;
114 @media (min-width: 800px) {
115 #__rptl-header .__rptl-header-navbar {
119 @media (min-width: 1200px) {
120 #__rptl-header .__rptl-header-navbar {
122 border-bottom-style: none;
125 #__rptl-header .__rptl-header-brand {
129 text-decoration: none;
130 box-sizing: border-box;
131 display: inline-block;
132 vertical-align: middle;
134 #__rptl-header .__rptl-header-logo {
138 box-sizing: border-box;
140 vertical-align: middle;
142 #__rptl-header .__rptl-header-burger {
146 box-sizing: border-box;
149 transform: rotate(0deg);
158 @media (min-width: 1200px) {
159 #__rptl-header .__rptl-header-burger {
163 @media (prefers-reduced-motion: no-preference) {
164 #__rptl-header .__rptl-header-burger {
165 transition: 0.5s ease-in-out;
168 #__rptl-header .__rptl-header-burger-stroke {
172 box-sizing: border-box;
179 transform: rotate(0deg);
181 #__rptl-header .__rptl-header-burger-stroke:nth-child(1) {
183 transform-origin: left center;
185 #__rptl-header .__rptl-header-burger-stroke:nth-child(2) {
187 transform-origin: left center;
189 #__rptl-header .__rptl-header-burger-stroke:nth-child(3) {
191 transform-origin: left center;
193 @media (prefers-reduced-motion: no-preference) {
194 #__rptl-header .__rptl-header-burger-stroke {
195 transition: 0.25s ease-in-out;
198 #__rptl-header .__rptl-header-burger-state {
201 #__rptl-header .__rptl-header-burger-state:checked + .__rptl-header-navbar .__rptl-header-burger-stroke:nth-child(1) {
202 transform: rotate(45deg);
206 #__rptl-header .__rptl-header-burger-state:checked + .__rptl-header-navbar .__rptl-header-burger-stroke:nth-child(2) {
210 #__rptl-header .__rptl-header-burger-state:checked + .__rptl-header-navbar .__rptl-header-burger-stroke:nth-child(3) {
211 transform: rotate(-45deg);
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;
220 #__rptl-header .__rptl-header-nav {
227 box-sizing: border-box;
230 background-color: #fff;
232 border-bottom: 1px solid #dedede;
234 #__rptl-header .__rptl-header-nav:focus-within {
235 transform: translateY(100%);
237 @media (min-width: 1200px) {
238 #__rptl-header .__rptl-header-nav {
241 background-color: #f7f8fa;
242 transform: none !important;
243 transition: none !important;
246 @media (prefers-reduced-motion: no-preference) {
247 #__rptl-header .__rptl-header-nav {
248 transition: transform 0.25s ease-in;
251 #__rptl-header .__rptl-header-nav-inner {
258 box-sizing: border-box;
260 @media (min-width: 1200px) {
261 #__rptl-header .__rptl-header-nav-inner {
263 justify-content: space-between;
267 #__rptl-header .__rptl-header-nav-list {
275 box-sizing: border-box;
277 #__rptl-header .__rptl-header-nav-list:first-child .__rptl-header-nav-list-item:first-child {
280 #__rptl-header .__rptl-header-nav-list-item {
287 box-sizing: border-box;
288 border-top: 1px solid #dedede;
290 @media (min-width: 1200px) {
291 #__rptl-header .__rptl-header-nav-list-item {
292 display: inline-block;
296 #__rptl-header .__rptl-header-nav-link {
302 text-decoration: none;
303 box-sizing: border-box;
308 #__rptl-header .__rptl-header-nav-link:hover {
310 background-color: #333;
312 #__rptl-header .__rptl-header-nav-link--for-home {
316 #__rptl-header .__rptl-header-nav-link--for-home:hover {
317 background-color: #cd2355;
319 #__rptl-header .__rptl-header-nav-link--for-industry {
322 @media (min-width: 800px) {
323 #__rptl-header .__rptl-header-nav-link {
327 @media (min-width: 1200px) {
328 #__rptl-header .__rptl-header-nav-link {
334 <header id="__rptl-header">
335 <input type="checkbox" class="__rptl-header-burger-state" id="__rptl-header-burger-state" />
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>
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>
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>
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>
372 var header = document.getElementById("__rptl-header"),
373 burgerState = document.getElementById("__rptl-header-burger-state");
375 document.addEventListener("click", function (e) {
376 if (!header.contains(e.target)) {
377 burgerState.checked = false;
383 <div class="toptitle">
384 <h1><a href="/documentation/"><strong>Raspberry Pi</strong> Documentation</a></h1>
385 <div id="docsearch"></div>
390 <ul id="tab-container">
395 <a href="/documentation/computers/">Computers</a>
401 <a href="/documentation/accessories/">Accessories</a>
407 <a href="/documentation/microcontrollers/">Microcontrollers</a>
413 <a href="/documentation/services/">Services</a>
417 <li class="selected">
419 <a href="/documentation/pico-sdk/">Pico C SDK</a>
426 <p id="release">Release 1.5.1</p>
431 <nav id="mobile-contents">
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>
449 <div class="contents-inner hidden">
451 <h3 class="contentshead">Introduction</h3>
453 <div class="itemcontents">
454 <ul class="sectlevel1">
457 <a href="/documentation/pico-sdk/index_doxygen.html#index">Raspberry Pi Pico SDK</a>
462 <a href="/documentation/pico-sdk/index_doxygen.html#autotoc_md3">SDK Design</a>
466 <a href="/documentation/pico-sdk/index_doxygen.html#autotoc_md4">The Build System</a>
470 <a href="/documentation/pico-sdk/index_doxygen.html#autotoc_md5">Examples</a>
481 <h3 class="contentshead">Hardware APIs</h3>
483 <div class="itemcontents">
484 <ul class="sectlevel1">
487 <a href="/documentation/pico-sdk/hardware.html#hardware_adc">hardware_adc</a>
492 <a href="/documentation/pico-sdk/hardware.html#rpipfbfe5b0fe8af96a15d1f">Functions</a>
496 <a href="/documentation/pico-sdk/hardware.html#rpipe94a81e06ca005c7f718">Detailed Description</a>
500 <a href="/documentation/pico-sdk/hardware.html#adc_example">Example</a>
504 <a href="/documentation/pico-sdk/hardware.html#rpipb170229eb32af8fbb25b">Function Documentation</a>
512 <a href="/documentation/pico-sdk/hardware.html#hardware_base">hardware_base</a>
517 <a href="/documentation/pico-sdk/hardware.html#rpip3926938a4b94e0a060f0">Functions</a>
521 <a href="/documentation/pico-sdk/hardware.html#rpipf51cc1db3990ae8e6192">Detailed Description</a>
525 <a href="/documentation/pico-sdk/hardware.html#rpip2bab066fe2ddd52f73df">Function Documentation</a>
533 <a href="/documentation/pico-sdk/hardware.html#hardware_claim">hardware_claim</a>
538 <a href="/documentation/pico-sdk/hardware.html#rpipdfa7d254a5da841f0df2">Functions</a>
542 <a href="/documentation/pico-sdk/hardware.html#rpipa788812432c842a919d0">Detailed Description</a>
546 <a href="/documentation/pico-sdk/hardware.html#rpipe9940b67cdc9d015deee">Function Documentation</a>
554 <a href="/documentation/pico-sdk/hardware.html#hardware_clocks">hardware_clocks</a>
559 <a href="/documentation/pico-sdk/hardware.html#rpip89c91da66ffde1cc30ac">Typedefs</a>
563 <a href="/documentation/pico-sdk/hardware.html#rpip170d92c7209e76514d2b">Enumerations</a>
567 <a href="/documentation/pico-sdk/hardware.html#rpipa56ad66478ae79ffb588">Functions</a>
571 <a href="/documentation/pico-sdk/hardware.html#rpipe93dd39da7bd5b73a2e7">Detailed Description</a>
575 <a href="/documentation/pico-sdk/hardware.html#clock_example">Example</a>
579 <a href="/documentation/pico-sdk/hardware.html#rpip058d1a37d53125f96927">Typedef Documentation</a>
583 <a href="/documentation/pico-sdk/hardware.html#rpipd0eaba69a740cd911694">Enumeration Type Documentation</a>
587 <a href="/documentation/pico-sdk/hardware.html#rpip6e4e7e64e61a4b43601f">Function Documentation</a>
595 <a href="/documentation/pico-sdk/hardware.html#hardware_divider">hardware_divider</a>
600 <a href="/documentation/pico-sdk/hardware.html#rpip7b4dfc6580b2c53a2f61">Functions</a>
604 <a href="/documentation/pico-sdk/hardware.html#rpip115225b5493e8a07fe97">Detailed Description</a>
608 <a href="/documentation/pico-sdk/hardware.html#divider_example">Example</a>
612 <a href="/documentation/pico-sdk/hardware.html#rpip1078d95ce91b99434197">Function Documentation</a>
620 <a href="/documentation/pico-sdk/hardware.html#hardware_dma">hardware_dma</a>
625 <a href="/documentation/pico-sdk/hardware.html#rpip5fc5374acc78a0097d96">Modules</a>
629 <a href="/documentation/pico-sdk/hardware.html#rpip6d5488060fa28b69a5de">Enumerations</a>
633 <a href="/documentation/pico-sdk/hardware.html#rpipa0fe778975f52970ba61">Functions</a>
637 <a href="/documentation/pico-sdk/hardware.html#rpip7aba53e0335ad830a5b3">Detailed Description</a>
641 <a href="/documentation/pico-sdk/hardware.html#rpipd4ba338c9c4b932eb68f">Enumeration Type Documentation</a>
645 <a href="/documentation/pico-sdk/hardware.html#rpipe2cf7ead0796181b91e4">Function Documentation</a>
649 <a href="/documentation/pico-sdk/hardware.html#channel_config">channel_config</a>
657 <a href="/documentation/pico-sdk/hardware.html#hardware_exception">hardware_exception</a>
662 <a href="/documentation/pico-sdk/hardware.html#rpip18a3627e557367243979">Typedefs</a>
666 <a href="/documentation/pico-sdk/hardware.html#rpip2093d294cba2d1648b91">Enumerations</a>
670 <a href="/documentation/pico-sdk/hardware.html#rpip440d48a43ef52888c7f8">Functions</a>
674 <a href="/documentation/pico-sdk/hardware.html#rpipc1138e9ba5ae1417bab7">Detailed Description</a>
678 <a href="/documentation/pico-sdk/hardware.html#rpipa203a413b041690f5b3a">Typedef Documentation</a>
682 <a href="/documentation/pico-sdk/hardware.html#rpip4b1393aca63cad7ac071">Enumeration Type Documentation</a>
686 <a href="/documentation/pico-sdk/hardware.html#rpip59bacb8331c7305bf23f">Function Documentation</a>
694 <a href="/documentation/pico-sdk/hardware.html#hardware_flash">hardware_flash</a>
699 <a href="/documentation/pico-sdk/hardware.html#rpip9bebeb9fda46d7931f29">Functions</a>
703 <a href="/documentation/pico-sdk/hardware.html#rpip701484253c037df3b8c3">Detailed Description</a>
707 <a href="/documentation/pico-sdk/hardware.html#flash_example">Example</a>
711 <a href="/documentation/pico-sdk/hardware.html#rpip181aaf572db7d81ec48c">Function Documentation</a>
719 <a href="/documentation/pico-sdk/hardware.html#hardware_gpio">hardware_gpio</a>
724 <a href="/documentation/pico-sdk/hardware.html#rpipfad69ce2636c0406f313">Typedefs</a>
728 <a href="/documentation/pico-sdk/hardware.html#rpip3dc9f91b4873d19dd61e">Enumerations</a>
732 <a href="/documentation/pico-sdk/hardware.html#rpipde51588ce1f57a29806f">Functions</a>
736 <a href="/documentation/pico-sdk/hardware.html#rpip2fb6e3f0d25f72b5b750">Detailed Description</a>
740 <a href="/documentation/pico-sdk/hardware.html#rpipa09cc3430089dfa6d35f">Typedef Documentation</a>
744 <a href="/documentation/pico-sdk/hardware.html#rpipc1a3203083c98a8386db">Enumeration Type Documentation</a>
748 <a href="/documentation/pico-sdk/hardware.html#rpip20bab61362be18e88989">Function Documentation</a>
756 <a href="/documentation/pico-sdk/hardware.html#hardware_i2c">hardware_i2c</a>
761 <a href="/documentation/pico-sdk/hardware.html#rpipeb9b68cb7743d9da904d">Functions</a>
765 <a href="/documentation/pico-sdk/hardware.html#rpip1c8da576903f52eac8f5">Detailed Description</a>
769 <a href="/documentation/pico-sdk/hardware.html#i2c_example">Example</a>
773 <a href="/documentation/pico-sdk/hardware.html#rpipe8156bbf78085b8efa90">Function Documentation</a>
777 <a href="/documentation/pico-sdk/hardware.html#rpip762f57c89c87a7230e8a">Variable Documentation</a>
785 <a href="/documentation/pico-sdk/hardware.html#hardware_interp">hardware_interp</a>
790 <a href="/documentation/pico-sdk/hardware.html#rpipc1cdb32b7c7ebdbf8c6d">Modules</a>
794 <a href="/documentation/pico-sdk/hardware.html#rpip5af7eb7aca9e02ea40e0">Functions</a>
798 <a href="/documentation/pico-sdk/hardware.html#rpipecac7251f20e18f482f0">Detailed Description</a>
802 <a href="/documentation/pico-sdk/hardware.html#rpip7f589c9bda3f5c04eaf7">Function Documentation</a>
806 <a href="/documentation/pico-sdk/hardware.html#interp_config">interp_config</a>
814 <a href="/documentation/pico-sdk/hardware.html#hardware_irq">hardware_irq</a>
819 <a href="/documentation/pico-sdk/hardware.html#rpip7d7ce744d18b50aa39e0">Typedefs</a>
823 <a href="/documentation/pico-sdk/hardware.html#rpipabf9dab89d154231fc7c">Functions</a>
827 <a href="/documentation/pico-sdk/hardware.html#rpip8e9db58b4e37e3c6e6f7">Detailed Description</a>
831 <a href="/documentation/pico-sdk/hardware.html#interrupt_nums">Interrupt Numbers</a>
835 <a href="/documentation/pico-sdk/hardware.html#rpip3156275fc0925d498be5">Typedef Documentation</a>
839 <a href="/documentation/pico-sdk/hardware.html#rpip809a516c3fb120805834">Function Documentation</a>
847 <a href="/documentation/pico-sdk/hardware.html#hardware_pio">hardware_pio</a>
852 <a href="/documentation/pico-sdk/hardware.html#rpip6649e09e7b4258dca43b">Modules</a>
856 <a href="/documentation/pico-sdk/hardware.html#rpipef554ed6ff6e2801159c">Macros</a>
860 <a href="/documentation/pico-sdk/hardware.html#rpip09d45f9779a66eef27b9">Enumerations</a>
864 <a href="/documentation/pico-sdk/hardware.html#rpipe4f94cdaa1864d487415">Functions</a>
868 <a href="/documentation/pico-sdk/hardware.html#rpip08092671c649e5a7ed33">Detailed Description</a>
872 <a href="/documentation/pico-sdk/hardware.html#rpip2c90e53db9e0b0eadaf0">Macro Definition Documentation</a>
876 <a href="/documentation/pico-sdk/hardware.html#rpip993ff9b164db3c600f6c">Function Documentation</a>
880 <a href="/documentation/pico-sdk/hardware.html#sm_config">sm_config</a>
884 <a href="/documentation/pico-sdk/hardware.html#pio_instructions">pio_instructions</a>
892 <a href="/documentation/pico-sdk/hardware.html#hardware_pll">hardware_pll</a>
897 <a href="/documentation/pico-sdk/hardware.html#rpip04a79fbadb11764c1347">Functions</a>
901 <a href="/documentation/pico-sdk/hardware.html#rpip60321a9e3dea4db61ac5">Detailed Description</a>
905 <a href="/documentation/pico-sdk/hardware.html#rpip3b39ffd09f4368ca9083">Function Documentation</a>
913 <a href="/documentation/pico-sdk/hardware.html#hardware_pwm">hardware_pwm</a>
918 <a href="/documentation/pico-sdk/hardware.html#rpipb46b1035246cbafd4775">Enumerations</a>
922 <a href="/documentation/pico-sdk/hardware.html#rpip539e288314d1cb6222a6">Functions</a>
926 <a href="/documentation/pico-sdk/hardware.html#rpipa8b59f289fb1cca8b30f">Detailed Description</a>
930 <a href="/documentation/pico-sdk/hardware.html#pwm_example">Example</a>
934 <a href="/documentation/pico-sdk/hardware.html#rpip00ae929b6ad09e4f9f31">Enumeration Type Documentation</a>
938 <a href="/documentation/pico-sdk/hardware.html#rpip596da54088102c730a85">Function Documentation</a>
946 <a href="/documentation/pico-sdk/hardware.html#hardware_resets">hardware_resets</a>
951 <a href="/documentation/pico-sdk/hardware.html#rpip01db3f21293c4654deff">Functions</a>
955 <a href="/documentation/pico-sdk/hardware.html#rpip670536031ba50ccc6589">Detailed Description</a>
959 <a href="/documentation/pico-sdk/hardware.html#reset_example">Example</a>
963 <a href="/documentation/pico-sdk/hardware.html#rpip696191bc283a6c8da6aa">Function Documentation</a>
971 <a href="/documentation/pico-sdk/hardware.html#hardware_rtc">hardware_rtc</a>
976 <a href="/documentation/pico-sdk/hardware.html#rpip517ae21bc4c79589cb63">Typedefs</a>
980 <a href="/documentation/pico-sdk/hardware.html#rpipfc133cc664b9e7da82a0">Functions</a>
984 <a href="/documentation/pico-sdk/hardware.html#rpipfac24067380ecd0bc739">Detailed Description</a>
988 <a href="/documentation/pico-sdk/hardware.html#rtc_example">Example</a>
992 <a href="/documentation/pico-sdk/hardware.html#rpipf2ca5910c33c1f910921">Typedef Documentation</a>
996 <a href="/documentation/pico-sdk/hardware.html#rpip1e2ec04f610bc6e2792d">Function Documentation</a>
1004 <a href="/documentation/pico-sdk/hardware.html#hardware_spi">hardware_spi</a>
1009 <a href="/documentation/pico-sdk/hardware.html#rpip3f5aca6fc7b2f7e386a6">Macros</a>
1013 <a href="/documentation/pico-sdk/hardware.html#rpip9ec490b208c8a7d66ea5">Enumerations</a>
1017 <a href="/documentation/pico-sdk/hardware.html#rpip0e32134afff49352abbf">Functions</a>
1021 <a href="/documentation/pico-sdk/hardware.html#rpip53fbef906bbbb4c86c1b">Detailed Description</a>
1025 <a href="/documentation/pico-sdk/hardware.html#rpipfdd2ef7004f65b7695c8">Macro Definition Documentation</a>
1029 <a href="/documentation/pico-sdk/hardware.html#rpip8eaa5c705b10721fc604">Function Documentation</a>
1037 <a href="/documentation/pico-sdk/hardware.html#hardware_sync">hardware_sync</a>
1042 <a href="/documentation/pico-sdk/hardware.html#rpipaf2c26a82e2081c77391">Typedefs</a>
1046 <a href="/documentation/pico-sdk/hardware.html#rpip75ebd45136c83ea77417">Functions</a>
1050 <a href="/documentation/pico-sdk/hardware.html#rpipffceb67fd927abf19a64">Detailed Description</a>
1054 <a href="/documentation/pico-sdk/hardware.html#autotoc_md1">Spin Locks</a>
1058 <a href="/documentation/pico-sdk/hardware.html#rpipa9c3278cd7f23be6930f">Function Documentation</a>
1066 <a href="/documentation/pico-sdk/hardware.html#hardware_timer">hardware_timer</a>
1071 <a href="/documentation/pico-sdk/hardware.html#rpip54d900e51ca5d5f92dc1">Typedefs</a>
1075 <a href="/documentation/pico-sdk/hardware.html#rpipb47e300854299e8a2d40">Functions</a>
1079 <a href="/documentation/pico-sdk/hardware.html#rpip7ce2cdc1662dce59296b">Detailed Description</a>
1083 <a href="/documentation/pico-sdk/hardware.html#timer_example">Example</a>
1087 <a href="/documentation/pico-sdk/hardware.html#rpip8149d3296f588e1af4fb">Typedef Documentation</a>
1091 <a href="/documentation/pico-sdk/hardware.html#rpipdea6c4945bdc6f6374d4">Function Documentation</a>
1099 <a href="/documentation/pico-sdk/hardware.html#hardware_uart">hardware_uart</a>
1104 <a href="/documentation/pico-sdk/hardware.html#rpipa1024710aeeb196b78bd">Enumerations</a>
1108 <a href="/documentation/pico-sdk/hardware.html#rpipf53ff9493512b6885dbc">Functions</a>
1112 <a href="/documentation/pico-sdk/hardware.html#rpip4d3a4f9268d2ebb2f18f">Detailed Description</a>
1116 <a href="/documentation/pico-sdk/hardware.html#uart_example">Example</a>
1120 <a href="/documentation/pico-sdk/hardware.html#rpipe5889bce3760d2f2abc3">Macro Definition Documentation</a>
1124 <a href="/documentation/pico-sdk/hardware.html#rpip8a3222d9bd4f1a88f966">Function Documentation</a>
1132 <a href="/documentation/pico-sdk/hardware.html#hardware_vreg">hardware_vreg</a>
1137 <a href="/documentation/pico-sdk/hardware.html#rpip2e95f90d0e541df0fbd5">Functions</a>
1141 <a href="/documentation/pico-sdk/hardware.html#rpipff9b545b8ac19c31cf84">Detailed Description</a>
1145 <a href="/documentation/pico-sdk/hardware.html#rpip374b3f7b14694be44510">Function Documentation</a>
1153 <a href="/documentation/pico-sdk/hardware.html#hardware_watchdog">hardware_watchdog</a>
1158 <a href="/documentation/pico-sdk/hardware.html#rpip3e4251ba95a5958301b7">Functions</a>
1162 <a href="/documentation/pico-sdk/hardware.html#rpip0cf7dd571b6eaaeaf8c1">Detailed Description</a>
1166 <a href="/documentation/pico-sdk/hardware.html#watchdog_example">Example</a>
1170 <a href="/documentation/pico-sdk/hardware.html#rpipa364c96388e31cb15832">Function Documentation</a>
1178 <a href="/documentation/pico-sdk/hardware.html#hardware_xosc">hardware_xosc</a>
1183 <a href="/documentation/pico-sdk/hardware.html#rpipb7b0130814aa84716e89">Functions</a>
1187 <a href="/documentation/pico-sdk/hardware.html#rpip6d0698b303647774cdff">Detailed Description</a>
1191 <a href="/documentation/pico-sdk/hardware.html#rpip8c9cf630da61511f7468">Function Documentation</a>
1202 <h3 class="contentshead">High Level APIs</h3>
1204 <div class="itemcontents">
1205 <ul class="sectlevel1">
1208 <a href="/documentation/pico-sdk/high_level.html#pico_async_context">pico_async_context</a>
1213 <a href="/documentation/pico-sdk/high_level.html#rpip334b1daca4d436cd2653">Modules</a>
1217 <a href="/documentation/pico-sdk/high_level.html#rpip34a43d49030e182275e8">Data Structures</a>
1221 <a href="/documentation/pico-sdk/high_level.html#rpip73422519f861a01369c4">Typedefs</a>
1225 <a href="/documentation/pico-sdk/high_level.html#rpipc33092ce8251b4b8dbf1">Functions</a>
1229 <a href="/documentation/pico-sdk/high_level.html#rpip79be1e27fbc098900953">Detailed Description</a>
1233 <a href="/documentation/pico-sdk/high_level.html#rpipe4818f2317923f615384">Typedef Documentation</a>
1237 <a href="/documentation/pico-sdk/high_level.html#rpip8be6ff2503083d1e44cb">Function Documentation</a>
1241 <a href="/documentation/pico-sdk/high_level.html#async_context_freertos">async_context_freertos</a>
1245 <a href="/documentation/pico-sdk/high_level.html#async_context_poll">async_context_poll</a>
1249 <a href="/documentation/pico-sdk/high_level.html#async_context_threadsafe_background">async_context_threadsafe_background</a>
1257 <a href="/documentation/pico-sdk/high_level.html#pico_flash">pico_flash</a>
1262 <a href="/documentation/pico-sdk/high_level.html#rpipcb13fd2e8f843c73e3be">Functions</a>
1266 <a href="/documentation/pico-sdk/high_level.html#rpip757f4a42c3de3c0b5283">Detailed Description</a>
1270 <a href="/documentation/pico-sdk/high_level.html#rpip984b61938ec2fe82b216">Function Documentation</a>
1278 <a href="/documentation/pico-sdk/high_level.html#pico_i2c_slave">pico_i2c_slave</a>
1283 <a href="/documentation/pico-sdk/high_level.html#rpipff46d0780fe042bf707c">Typedefs</a>
1287 <a href="/documentation/pico-sdk/high_level.html#rpip44c693c1c2d88aff02f4">Enumerations</a>
1291 <a href="/documentation/pico-sdk/high_level.html#rpip7d4e1982831b9d4bc1be">Functions</a>
1295 <a href="/documentation/pico-sdk/high_level.html#rpip9e01d206b833ed2d2422">Detailed Description</a>
1299 <a href="/documentation/pico-sdk/high_level.html#rpip64a0102e835d7a4aae09">Typedef Documentation</a>
1303 <a href="/documentation/pico-sdk/high_level.html#rpipafb978c9dd3ec6082f80">Enumeration Type Documentation</a>
1307 <a href="/documentation/pico-sdk/high_level.html#rpipbf5b82a0dc8d3d4bb2bf">Function Documentation</a>
1315 <a href="/documentation/pico-sdk/high_level.html#pico_multicore">pico_multicore</a>
1320 <a href="/documentation/pico-sdk/high_level.html#rpip7baf405557a57f41b9de">Modules</a>
1324 <a href="/documentation/pico-sdk/high_level.html#rpipf840d967c7b8d6fef316">Functions</a>
1328 <a href="/documentation/pico-sdk/high_level.html#rpipc30c9f02735cb3003f42">Detailed Description</a>
1332 <a href="/documentation/pico-sdk/high_level.html#multicore_example">Example</a>
1336 <a href="/documentation/pico-sdk/high_level.html#rpipe803fe9ffd182f2af357">Function Documentation</a>
1340 <a href="/documentation/pico-sdk/high_level.html#multicore_fifo">fifo</a>
1344 <a href="/documentation/pico-sdk/high_level.html#multicore_lockout">lockout</a>
1352 <a href="/documentation/pico-sdk/high_level.html#pico_rand">pico_rand</a>
1357 <a href="/documentation/pico-sdk/high_level.html#rpip2ac37766eddd02aaed07">Functions</a>
1361 <a href="/documentation/pico-sdk/high_level.html#rpipd9cd1e107a6238a969b8">Detailed Description</a>
1365 <a href="/documentation/pico-sdk/high_level.html#rpipaca07ee034d314acc4bf">Function Documentation</a>
1373 <a href="/documentation/pico-sdk/high_level.html#pico_stdlib">pico_stdlib</a>
1378 <a href="/documentation/pico-sdk/high_level.html#rpip04d09fa6ec88d8737403">Functions</a>
1382 <a href="/documentation/pico-sdk/high_level.html#rpip67e7d087a6d9d4177c9c">Detailed Description</a>
1386 <a href="/documentation/pico-sdk/high_level.html#rpip9d8a4958ff265de7762d">Function Documentation</a>
1394 <a href="/documentation/pico-sdk/high_level.html#pico_sync">pico_sync</a>
1399 <a href="/documentation/pico-sdk/high_level.html#rpip42988faa0a4de968a0fe">Modules</a>
1403 <a href="/documentation/pico-sdk/high_level.html#rpip0a443d120465214bff04">Detailed Description</a>
1407 <a href="/documentation/pico-sdk/high_level.html#critical_section">critical_section</a>
1411 <a href="/documentation/pico-sdk/high_level.html#lock_core">lock_core</a>
1415 <a href="/documentation/pico-sdk/high_level.html#mutex">mutex</a>
1419 <a href="/documentation/pico-sdk/high_level.html#sem">sem</a>
1427 <a href="/documentation/pico-sdk/high_level.html#pico_time">pico_time</a>
1432 <a href="/documentation/pico-sdk/high_level.html#rpip75fc0e1fb693907ffae4">Modules</a>
1436 <a href="/documentation/pico-sdk/high_level.html#rpip587c32f8059c662009b6">Detailed Description</a>
1440 <a href="/documentation/pico-sdk/high_level.html#timestamp">timestamp</a>
1444 <a href="/documentation/pico-sdk/high_level.html#sleep">sleep</a>
1448 <a href="/documentation/pico-sdk/high_level.html#alarm">alarm</a>
1452 <a href="/documentation/pico-sdk/high_level.html#repeating_timer">repeating_timer</a>
1460 <a href="/documentation/pico-sdk/high_level.html#pico_unique_id">pico_unique_id</a>
1465 <a href="/documentation/pico-sdk/high_level.html#rpip7981e60e740d763c8048">Data Structures</a>
1469 <a href="/documentation/pico-sdk/high_level.html#rpip04f6f057a3030914c7d2">Functions</a>
1473 <a href="/documentation/pico-sdk/high_level.html#rpip2a7175316ee370f706a8">Detailed Description</a>
1477 <a href="/documentation/pico-sdk/high_level.html#rpipec641d378cce59faa918">Function Documentation</a>
1485 <a href="/documentation/pico-sdk/high_level.html#pico_util">pico_util</a>
1490 <a href="/documentation/pico-sdk/high_level.html#rpip158b48d2746d665569ba">Modules</a>
1494 <a href="/documentation/pico-sdk/high_level.html#rpip8dab79e9dfcc333468bf">Detailed Description</a>
1498 <a href="/documentation/pico-sdk/high_level.html#util_datetime">datetime</a>
1502 <a href="/documentation/pico-sdk/high_level.html#util_pheap">pheap</a>
1506 <a href="/documentation/pico-sdk/high_level.html#queue">queue</a>
1517 <h3 class="contentshead">Third-party Libraries</h3>
1519 <div class="itemcontents">
1520 <ul class="sectlevel1">
1523 <a href="/documentation/pico-sdk/third_party.html#tinyusb_device">tinyusb_device</a>
1528 <a href="/documentation/pico-sdk/third_party.html#tinyusb_host">tinyusb_host</a>
1536 <h3 class="contentshead">Networking Libraries</h3>
1538 <div class="itemcontents">
1539 <ul class="sectlevel1">
1542 <a href="/documentation/pico-sdk/networking.html#pico_btstack">pico_btstack</a>
1547 <a href="/documentation/pico-sdk/networking.html#rpipabe482207518b13daea8">Functions</a>
1551 <a href="/documentation/pico-sdk/networking.html#rpip28aa570f7304feb24dd8">Detailed Description</a>
1555 <a href="/documentation/pico-sdk/networking.html#rpip81e86eeedf11e3669c51">Function Documentation</a>
1563 <a href="/documentation/pico-sdk/networking.html#pico_lwip">pico_lwip</a>
1568 <a href="/documentation/pico-sdk/networking.html#rpip192837c4e57e2f47dbf6">Modules</a>
1572 <a href="/documentation/pico-sdk/networking.html#rpip98f8ef4b7c7e1e6ce281">Detailed Description</a>
1576 <a href="/documentation/pico-sdk/networking.html#pico_lwip_arch">pico_lwip_arch</a>
1580 <a href="/documentation/pico-sdk/networking.html#pico_lwip_freertos">pico_lwip_freertos</a>
1584 <a href="/documentation/pico-sdk/networking.html#pico_lwip_nosys">pico_lwip_nosys</a>
1592 <a href="/documentation/pico-sdk/networking.html#pico_cyw43_driver">pico_cyw43_driver</a>
1597 <a href="/documentation/pico-sdk/networking.html#rpip0627746aa35c1c42f44c">Modules</a>
1601 <a href="/documentation/pico-sdk/networking.html#rpipae8b34f7bf0aa371c600">Files</a>
1605 <a href="/documentation/pico-sdk/networking.html#rpipd512513ec719cf7ab197">Functions</a>
1609 <a href="/documentation/pico-sdk/networking.html#rpipebe2d33331cf989e1d29">Detailed Description</a>
1613 <a href="/documentation/pico-sdk/networking.html#rpip7ddeab266708e76683af">Function Documentation</a>
1617 <a href="/documentation/pico-sdk/networking.html#pico_btstack_cyw43">pico_btstack_cyw43</a>
1625 <a href="/documentation/pico-sdk/networking.html#pico_cyw43_arch">pico_cyw43_arch</a>
1630 <a href="/documentation/pico-sdk/networking.html#rpip55bbe3b3adaa09c91f12">Modules</a>
1634 <a href="/documentation/pico-sdk/networking.html#rpipbd659dd2af29c569d582">Macros</a>
1638 <a href="/documentation/pico-sdk/networking.html#rpip2dbacd10d4e207dae370">Functions</a>
1642 <a href="/documentation/pico-sdk/networking.html#rpip2786c74350b1e1c2247c">Detailed Description</a>
1646 <a href="/documentation/pico-sdk/networking.html#rpip7e5d89be1cf9268f36c9">Macro Definition Documentation</a>
1650 <a href="/documentation/pico-sdk/networking.html#rpip2890f60e0c83d227f2ec">Function Documentation</a>
1654 <a href="/documentation/pico-sdk/networking.html#cyw43_driver">cyw43_driver</a>
1665 <h3 class="contentshead">Runtime Infrastructure</h3>
1667 <div class="itemcontents">
1668 <ul class="sectlevel1">
1671 <a href="/documentation/pico-sdk/runtime.html#boot_stage2">boot_stage2</a>
1676 <a href="/documentation/pico-sdk/runtime.html#pico_base">pico_base</a>
1681 <a href="/documentation/pico-sdk/runtime.html#rpip45542cfabd24f25c2b10">Enumerations</a>
1685 <a href="/documentation/pico-sdk/runtime.html#rpipb665655c66e63f4a0c4a">Detailed Description</a>
1693 <a href="/documentation/pico-sdk/runtime.html#pico_binary_info">pico_binary_info</a>
1698 <a href="/documentation/pico-sdk/runtime.html#rpip7989f07e71fba07188be">Macros</a>
1702 <a href="/documentation/pico-sdk/runtime.html#rpipc27123c22ad347cefc87">Detailed Description</a>
1706 <a href="/documentation/pico-sdk/runtime.html#rpipa2ff445fb2a0a57f9dde">Macro Definition Documentation</a>
1714 <a href="/documentation/pico-sdk/runtime.html#pico_bit_ops">pico_bit_ops</a>
1719 <a href="/documentation/pico-sdk/runtime.html#rpipf1806233ab08edf2d1a4">Functions</a>
1723 <a href="/documentation/pico-sdk/runtime.html#rpip63c260c668f0f7e929e9">Detailed Description</a>
1727 <a href="/documentation/pico-sdk/runtime.html#rpip2b305c870314270af1e5">Function Documentation</a>
1735 <a href="/documentation/pico-sdk/runtime.html#pico_bootrom">pico_bootrom</a>
1740 <a href="/documentation/pico-sdk/runtime.html#rpipcf60d5fd56095181a98e">Macros</a>
1744 <a href="/documentation/pico-sdk/runtime.html#rpip05bb858150fa37b3e132">Functions</a>
1748 <a href="/documentation/pico-sdk/runtime.html#rpip005c32aa3418cd5dc77d">Detailed Description</a>
1752 <a href="/documentation/pico-sdk/runtime.html#rpipf9cc87ae1233fe613239">Macro Definition Documentation</a>
1756 <a href="/documentation/pico-sdk/runtime.html#rpipab643919091a482a2c7d">Function Documentation</a>
1764 <a href="/documentation/pico-sdk/runtime.html#pico_bootsel_via_double_reset">pico_bootsel_via_double_reset</a>
1769 <a href="/documentation/pico-sdk/runtime.html#pico_cxx_options">pico_cxx_options</a>
1774 <a href="/documentation/pico-sdk/runtime.html#pico_divider">pico_divider</a>
1779 <a href="/documentation/pico-sdk/runtime.html#rpipfb1beee11febefbf90cc">Files</a>
1783 <a href="/documentation/pico-sdk/runtime.html#rpipa79e631886e62fcd1cd0">Functions</a>
1787 <a href="/documentation/pico-sdk/runtime.html#rpip108233463d1122628ba9">Detailed Description</a>
1791 <a href="/documentation/pico-sdk/runtime.html#rpip0d33c4d7c6e0d08667ce">Function Documentation</a>
1799 <a href="/documentation/pico-sdk/runtime.html#pico_double">pico_double</a>
1804 <a href="/documentation/pico-sdk/runtime.html#pico_float">pico_float</a>
1809 <a href="/documentation/pico-sdk/runtime.html#pico_int64_ops">pico_int64_ops</a>
1814 <a href="/documentation/pico-sdk/runtime.html#pico_malloc">pico_malloc</a>
1819 <a href="/documentation/pico-sdk/runtime.html#pico_mem_ops">pico_mem_ops</a>
1824 <a href="/documentation/pico-sdk/runtime.html#pico_platform">pico_platform</a>
1829 <a href="/documentation/pico-sdk/runtime.html#rpipb6ca92b8ab23006742ba">Macros</a>
1833 <a href="/documentation/pico-sdk/runtime.html#rpip96324626dec724f7403d">Functions</a>
1837 <a href="/documentation/pico-sdk/runtime.html#rpip092e8191441c92cf5ccf">Detailed Description</a>
1841 <a href="/documentation/pico-sdk/runtime.html#rpip464a3792c78a5a9ffa73">Macro Definition Documentation</a>
1845 <a href="/documentation/pico-sdk/runtime.html#rpip14e9a416348dd6951167">Function Documentation</a>
1853 <a href="/documentation/pico-sdk/runtime.html#pico_printf">pico_printf</a>
1858 <a href="/documentation/pico-sdk/runtime.html#pico_runtime">pico_runtime</a>
1863 <a href="/documentation/pico-sdk/runtime.html#pico_stdio">pico_stdio</a>
1868 <a href="/documentation/pico-sdk/runtime.html#rpip66600d8c06f1ab929c23">Modules</a>
1872 <a href="/documentation/pico-sdk/runtime.html#rpipbfbe419ab3a18de01187">Functions</a>
1876 <a href="/documentation/pico-sdk/runtime.html#rpip3eccc7d7592c0528c9ae">Detailed Description</a>
1880 <a href="/documentation/pico-sdk/runtime.html#rpip2fc272e282686cb4da01">Function Documentation</a>
1884 <a href="/documentation/pico-sdk/runtime.html#pico_stdio_semihosting">pico_stdio_semihosting</a>
1888 <a href="/documentation/pico-sdk/runtime.html#pico_stdio_uart">pico_stdio_uart</a>
1892 <a href="/documentation/pico-sdk/runtime.html#pico_stdio_usb">pico_stdio_usb</a>
1900 <a href="/documentation/pico-sdk/runtime.html#pico_standard_link">pico_standard_link</a>
1908 <h3 class="contentshead">External API Headers</h3>
1910 <div class="itemcontents">
1911 <ul class="sectlevel1">
1914 <a href="/documentation/pico-sdk/misc.html#boot_picoboot">boot_picoboot</a>
1919 <a href="/documentation/pico-sdk/misc.html#boot_uf2">boot_uf2</a>
1946 <h2><a href="/documentation/pico-sdk/">Pico C SDK</a></h2>
1948 <h3 class="contentshead" onclick="expandAndCollapse(this)">Introduction</h3>
1951 <div class="itemcontents">
1952 <ul class="sectlevel1">
1955 <a href="/documentation/pico-sdk/index_doxygen.html#index">Raspberry Pi Pico SDK</a>
1960 <a href="/documentation/pico-sdk/index_doxygen.html#autotoc_md3">SDK Design</a>
1964 <a href="/documentation/pico-sdk/index_doxygen.html#autotoc_md4">The Build System</a>
1968 <a href="/documentation/pico-sdk/index_doxygen.html#autotoc_md5">Examples</a>
1980 <h3 class="contentshead" onclick="expandAndCollapse(this)">Hardware APIs</h3>
1983 <div class="itemcontents">
1984 <ul class="sectlevel1">
1987 <a href="/documentation/pico-sdk/hardware.html#hardware_adc">hardware_adc</a>
1992 <a href="/documentation/pico-sdk/hardware.html#rpipfbfe5b0fe8af96a15d1f">Functions</a>
1996 <a href="/documentation/pico-sdk/hardware.html#rpipe94a81e06ca005c7f718">Detailed Description</a>
2000 <a href="/documentation/pico-sdk/hardware.html#adc_example">Example</a>
2004 <a href="/documentation/pico-sdk/hardware.html#rpipb170229eb32af8fbb25b">Function Documentation</a>
2012 <a href="/documentation/pico-sdk/hardware.html#hardware_base">hardware_base</a>
2017 <a href="/documentation/pico-sdk/hardware.html#rpip3926938a4b94e0a060f0">Functions</a>
2021 <a href="/documentation/pico-sdk/hardware.html#rpipf51cc1db3990ae8e6192">Detailed Description</a>
2025 <a href="/documentation/pico-sdk/hardware.html#rpip2bab066fe2ddd52f73df">Function Documentation</a>
2033 <a href="/documentation/pico-sdk/hardware.html#hardware_claim">hardware_claim</a>
2038 <a href="/documentation/pico-sdk/hardware.html#rpipdfa7d254a5da841f0df2">Functions</a>
2042 <a href="/documentation/pico-sdk/hardware.html#rpipa788812432c842a919d0">Detailed Description</a>
2046 <a href="/documentation/pico-sdk/hardware.html#rpipe9940b67cdc9d015deee">Function Documentation</a>
2054 <a href="/documentation/pico-sdk/hardware.html#hardware_clocks">hardware_clocks</a>
2059 <a href="/documentation/pico-sdk/hardware.html#rpip89c91da66ffde1cc30ac">Typedefs</a>
2063 <a href="/documentation/pico-sdk/hardware.html#rpip170d92c7209e76514d2b">Enumerations</a>
2067 <a href="/documentation/pico-sdk/hardware.html#rpipa56ad66478ae79ffb588">Functions</a>
2071 <a href="/documentation/pico-sdk/hardware.html#rpipe93dd39da7bd5b73a2e7">Detailed Description</a>
2075 <a href="/documentation/pico-sdk/hardware.html#clock_example">Example</a>
2079 <a href="/documentation/pico-sdk/hardware.html#rpip058d1a37d53125f96927">Typedef Documentation</a>
2083 <a href="/documentation/pico-sdk/hardware.html#rpipd0eaba69a740cd911694">Enumeration Type Documentation</a>
2087 <a href="/documentation/pico-sdk/hardware.html#rpip6e4e7e64e61a4b43601f">Function Documentation</a>
2095 <a href="/documentation/pico-sdk/hardware.html#hardware_divider">hardware_divider</a>
2100 <a href="/documentation/pico-sdk/hardware.html#rpip7b4dfc6580b2c53a2f61">Functions</a>
2104 <a href="/documentation/pico-sdk/hardware.html#rpip115225b5493e8a07fe97">Detailed Description</a>
2108 <a href="/documentation/pico-sdk/hardware.html#divider_example">Example</a>
2112 <a href="/documentation/pico-sdk/hardware.html#rpip1078d95ce91b99434197">Function Documentation</a>
2120 <a href="/documentation/pico-sdk/hardware.html#hardware_dma">hardware_dma</a>
2125 <a href="/documentation/pico-sdk/hardware.html#rpip5fc5374acc78a0097d96">Modules</a>
2129 <a href="/documentation/pico-sdk/hardware.html#rpip6d5488060fa28b69a5de">Enumerations</a>
2133 <a href="/documentation/pico-sdk/hardware.html#rpipa0fe778975f52970ba61">Functions</a>
2137 <a href="/documentation/pico-sdk/hardware.html#rpip7aba53e0335ad830a5b3">Detailed Description</a>
2141 <a href="/documentation/pico-sdk/hardware.html#rpipd4ba338c9c4b932eb68f">Enumeration Type Documentation</a>
2145 <a href="/documentation/pico-sdk/hardware.html#rpipe2cf7ead0796181b91e4">Function Documentation</a>
2149 <a href="/documentation/pico-sdk/hardware.html#channel_config">channel_config</a>
2157 <a href="/documentation/pico-sdk/hardware.html#hardware_exception">hardware_exception</a>
2162 <a href="/documentation/pico-sdk/hardware.html#rpip18a3627e557367243979">Typedefs</a>
2166 <a href="/documentation/pico-sdk/hardware.html#rpip2093d294cba2d1648b91">Enumerations</a>
2170 <a href="/documentation/pico-sdk/hardware.html#rpip440d48a43ef52888c7f8">Functions</a>
2174 <a href="/documentation/pico-sdk/hardware.html#rpipc1138e9ba5ae1417bab7">Detailed Description</a>
2178 <a href="/documentation/pico-sdk/hardware.html#rpipa203a413b041690f5b3a">Typedef Documentation</a>
2182 <a href="/documentation/pico-sdk/hardware.html#rpip4b1393aca63cad7ac071">Enumeration Type Documentation</a>
2186 <a href="/documentation/pico-sdk/hardware.html#rpip59bacb8331c7305bf23f">Function Documentation</a>
2194 <a href="/documentation/pico-sdk/hardware.html#hardware_flash">hardware_flash</a>
2199 <a href="/documentation/pico-sdk/hardware.html#rpip9bebeb9fda46d7931f29">Functions</a>
2203 <a href="/documentation/pico-sdk/hardware.html#rpip701484253c037df3b8c3">Detailed Description</a>
2207 <a href="/documentation/pico-sdk/hardware.html#flash_example">Example</a>
2211 <a href="/documentation/pico-sdk/hardware.html#rpip181aaf572db7d81ec48c">Function Documentation</a>
2219 <a href="/documentation/pico-sdk/hardware.html#hardware_gpio">hardware_gpio</a>
2224 <a href="/documentation/pico-sdk/hardware.html#rpipfad69ce2636c0406f313">Typedefs</a>
2228 <a href="/documentation/pico-sdk/hardware.html#rpip3dc9f91b4873d19dd61e">Enumerations</a>
2232 <a href="/documentation/pico-sdk/hardware.html#rpipde51588ce1f57a29806f">Functions</a>
2236 <a href="/documentation/pico-sdk/hardware.html#rpip2fb6e3f0d25f72b5b750">Detailed Description</a>
2240 <a href="/documentation/pico-sdk/hardware.html#rpipa09cc3430089dfa6d35f">Typedef Documentation</a>
2244 <a href="/documentation/pico-sdk/hardware.html#rpipc1a3203083c98a8386db">Enumeration Type Documentation</a>
2248 <a href="/documentation/pico-sdk/hardware.html#rpip20bab61362be18e88989">Function Documentation</a>
2256 <a href="/documentation/pico-sdk/hardware.html#hardware_i2c">hardware_i2c</a>
2261 <a href="/documentation/pico-sdk/hardware.html#rpipeb9b68cb7743d9da904d">Functions</a>
2265 <a href="/documentation/pico-sdk/hardware.html#rpip1c8da576903f52eac8f5">Detailed Description</a>
2269 <a href="/documentation/pico-sdk/hardware.html#i2c_example">Example</a>
2273 <a href="/documentation/pico-sdk/hardware.html#rpipe8156bbf78085b8efa90">Function Documentation</a>
2277 <a href="/documentation/pico-sdk/hardware.html#rpip762f57c89c87a7230e8a">Variable Documentation</a>
2285 <a href="/documentation/pico-sdk/hardware.html#hardware_interp">hardware_interp</a>
2290 <a href="/documentation/pico-sdk/hardware.html#rpipc1cdb32b7c7ebdbf8c6d">Modules</a>
2294 <a href="/documentation/pico-sdk/hardware.html#rpip5af7eb7aca9e02ea40e0">Functions</a>
2298 <a href="/documentation/pico-sdk/hardware.html#rpipecac7251f20e18f482f0">Detailed Description</a>
2302 <a href="/documentation/pico-sdk/hardware.html#rpip7f589c9bda3f5c04eaf7">Function Documentation</a>
2306 <a href="/documentation/pico-sdk/hardware.html#interp_config">interp_config</a>
2314 <a href="/documentation/pico-sdk/hardware.html#hardware_irq">hardware_irq</a>
2319 <a href="/documentation/pico-sdk/hardware.html#rpip7d7ce744d18b50aa39e0">Typedefs</a>
2323 <a href="/documentation/pico-sdk/hardware.html#rpipabf9dab89d154231fc7c">Functions</a>
2327 <a href="/documentation/pico-sdk/hardware.html#rpip8e9db58b4e37e3c6e6f7">Detailed Description</a>
2331 <a href="/documentation/pico-sdk/hardware.html#interrupt_nums">Interrupt Numbers</a>
2335 <a href="/documentation/pico-sdk/hardware.html#rpip3156275fc0925d498be5">Typedef Documentation</a>
2339 <a href="/documentation/pico-sdk/hardware.html#rpip809a516c3fb120805834">Function Documentation</a>
2347 <a href="/documentation/pico-sdk/hardware.html#hardware_pio">hardware_pio</a>
2352 <a href="/documentation/pico-sdk/hardware.html#rpip6649e09e7b4258dca43b">Modules</a>
2356 <a href="/documentation/pico-sdk/hardware.html#rpipef554ed6ff6e2801159c">Macros</a>
2360 <a href="/documentation/pico-sdk/hardware.html#rpip09d45f9779a66eef27b9">Enumerations</a>
2364 <a href="/documentation/pico-sdk/hardware.html#rpipe4f94cdaa1864d487415">Functions</a>
2368 <a href="/documentation/pico-sdk/hardware.html#rpip08092671c649e5a7ed33">Detailed Description</a>
2372 <a href="/documentation/pico-sdk/hardware.html#rpip2c90e53db9e0b0eadaf0">Macro Definition Documentation</a>
2376 <a href="/documentation/pico-sdk/hardware.html#rpip993ff9b164db3c600f6c">Function Documentation</a>
2380 <a href="/documentation/pico-sdk/hardware.html#sm_config">sm_config</a>
2384 <a href="/documentation/pico-sdk/hardware.html#pio_instructions">pio_instructions</a>
2392 <a href="/documentation/pico-sdk/hardware.html#hardware_pll">hardware_pll</a>
2397 <a href="/documentation/pico-sdk/hardware.html#rpip04a79fbadb11764c1347">Functions</a>
2401 <a href="/documentation/pico-sdk/hardware.html#rpip60321a9e3dea4db61ac5">Detailed Description</a>
2405 <a href="/documentation/pico-sdk/hardware.html#rpip3b39ffd09f4368ca9083">Function Documentation</a>
2413 <a href="/documentation/pico-sdk/hardware.html#hardware_pwm">hardware_pwm</a>
2418 <a href="/documentation/pico-sdk/hardware.html#rpipb46b1035246cbafd4775">Enumerations</a>
2422 <a href="/documentation/pico-sdk/hardware.html#rpip539e288314d1cb6222a6">Functions</a>
2426 <a href="/documentation/pico-sdk/hardware.html#rpipa8b59f289fb1cca8b30f">Detailed Description</a>
2430 <a href="/documentation/pico-sdk/hardware.html#pwm_example">Example</a>
2434 <a href="/documentation/pico-sdk/hardware.html#rpip00ae929b6ad09e4f9f31">Enumeration Type Documentation</a>
2438 <a href="/documentation/pico-sdk/hardware.html#rpip596da54088102c730a85">Function Documentation</a>
2446 <a href="/documentation/pico-sdk/hardware.html#hardware_resets">hardware_resets</a>
2451 <a href="/documentation/pico-sdk/hardware.html#rpip01db3f21293c4654deff">Functions</a>
2455 <a href="/documentation/pico-sdk/hardware.html#rpip670536031ba50ccc6589">Detailed Description</a>
2459 <a href="/documentation/pico-sdk/hardware.html#reset_example">Example</a>
2463 <a href="/documentation/pico-sdk/hardware.html#rpip696191bc283a6c8da6aa">Function Documentation</a>
2471 <a href="/documentation/pico-sdk/hardware.html#hardware_rtc">hardware_rtc</a>
2476 <a href="/documentation/pico-sdk/hardware.html#rpip517ae21bc4c79589cb63">Typedefs</a>
2480 <a href="/documentation/pico-sdk/hardware.html#rpipfc133cc664b9e7da82a0">Functions</a>
2484 <a href="/documentation/pico-sdk/hardware.html#rpipfac24067380ecd0bc739">Detailed Description</a>
2488 <a href="/documentation/pico-sdk/hardware.html#rtc_example">Example</a>
2492 <a href="/documentation/pico-sdk/hardware.html#rpipf2ca5910c33c1f910921">Typedef Documentation</a>
2496 <a href="/documentation/pico-sdk/hardware.html#rpip1e2ec04f610bc6e2792d">Function Documentation</a>
2504 <a href="/documentation/pico-sdk/hardware.html#hardware_spi">hardware_spi</a>
2509 <a href="/documentation/pico-sdk/hardware.html#rpip3f5aca6fc7b2f7e386a6">Macros</a>
2513 <a href="/documentation/pico-sdk/hardware.html#rpip9ec490b208c8a7d66ea5">Enumerations</a>
2517 <a href="/documentation/pico-sdk/hardware.html#rpip0e32134afff49352abbf">Functions</a>
2521 <a href="/documentation/pico-sdk/hardware.html#rpip53fbef906bbbb4c86c1b">Detailed Description</a>
2525 <a href="/documentation/pico-sdk/hardware.html#rpipfdd2ef7004f65b7695c8">Macro Definition Documentation</a>
2529 <a href="/documentation/pico-sdk/hardware.html#rpip8eaa5c705b10721fc604">Function Documentation</a>
2537 <a href="/documentation/pico-sdk/hardware.html#hardware_sync">hardware_sync</a>
2542 <a href="/documentation/pico-sdk/hardware.html#rpipaf2c26a82e2081c77391">Typedefs</a>
2546 <a href="/documentation/pico-sdk/hardware.html#rpip75ebd45136c83ea77417">Functions</a>
2550 <a href="/documentation/pico-sdk/hardware.html#rpipffceb67fd927abf19a64">Detailed Description</a>
2554 <a href="/documentation/pico-sdk/hardware.html#autotoc_md1">Spin Locks</a>
2558 <a href="/documentation/pico-sdk/hardware.html#rpipa9c3278cd7f23be6930f">Function Documentation</a>
2566 <a href="/documentation/pico-sdk/hardware.html#hardware_timer">hardware_timer</a>
2571 <a href="/documentation/pico-sdk/hardware.html#rpip54d900e51ca5d5f92dc1">Typedefs</a>
2575 <a href="/documentation/pico-sdk/hardware.html#rpipb47e300854299e8a2d40">Functions</a>
2579 <a href="/documentation/pico-sdk/hardware.html#rpip7ce2cdc1662dce59296b">Detailed Description</a>
2583 <a href="/documentation/pico-sdk/hardware.html#timer_example">Example</a>
2587 <a href="/documentation/pico-sdk/hardware.html#rpip8149d3296f588e1af4fb">Typedef Documentation</a>
2591 <a href="/documentation/pico-sdk/hardware.html#rpipdea6c4945bdc6f6374d4">Function Documentation</a>
2599 <a href="/documentation/pico-sdk/hardware.html#hardware_uart">hardware_uart</a>
2604 <a href="/documentation/pico-sdk/hardware.html#rpipa1024710aeeb196b78bd">Enumerations</a>
2608 <a href="/documentation/pico-sdk/hardware.html#rpipf53ff9493512b6885dbc">Functions</a>
2612 <a href="/documentation/pico-sdk/hardware.html#rpip4d3a4f9268d2ebb2f18f">Detailed Description</a>
2616 <a href="/documentation/pico-sdk/hardware.html#uart_example">Example</a>
2620 <a href="/documentation/pico-sdk/hardware.html#rpipe5889bce3760d2f2abc3">Macro Definition Documentation</a>
2624 <a href="/documentation/pico-sdk/hardware.html#rpip8a3222d9bd4f1a88f966">Function Documentation</a>
2632 <a href="/documentation/pico-sdk/hardware.html#hardware_vreg">hardware_vreg</a>
2637 <a href="/documentation/pico-sdk/hardware.html#rpip2e95f90d0e541df0fbd5">Functions</a>
2641 <a href="/documentation/pico-sdk/hardware.html#rpipff9b545b8ac19c31cf84">Detailed Description</a>
2645 <a href="/documentation/pico-sdk/hardware.html#rpip374b3f7b14694be44510">Function Documentation</a>
2653 <a href="/documentation/pico-sdk/hardware.html#hardware_watchdog">hardware_watchdog</a>
2658 <a href="/documentation/pico-sdk/hardware.html#rpip3e4251ba95a5958301b7">Functions</a>
2662 <a href="/documentation/pico-sdk/hardware.html#rpip0cf7dd571b6eaaeaf8c1">Detailed Description</a>
2666 <a href="/documentation/pico-sdk/hardware.html#watchdog_example">Example</a>
2670 <a href="/documentation/pico-sdk/hardware.html#rpipa364c96388e31cb15832">Function Documentation</a>
2678 <a href="/documentation/pico-sdk/hardware.html#hardware_xosc">hardware_xosc</a>
2683 <a href="/documentation/pico-sdk/hardware.html#rpipb7b0130814aa84716e89">Functions</a>
2687 <a href="/documentation/pico-sdk/hardware.html#rpip6d0698b303647774cdff">Detailed Description</a>
2691 <a href="/documentation/pico-sdk/hardware.html#rpip8c9cf630da61511f7468">Function Documentation</a>
2703 <h3 class="contentshead" onclick="expandAndCollapse(this)">High Level APIs</h3>
2706 <div class="itemcontents">
2707 <ul class="sectlevel1">
2710 <a href="/documentation/pico-sdk/high_level.html#pico_async_context">pico_async_context</a>
2715 <a href="/documentation/pico-sdk/high_level.html#rpip334b1daca4d436cd2653">Modules</a>
2719 <a href="/documentation/pico-sdk/high_level.html#rpip34a43d49030e182275e8">Data Structures</a>
2723 <a href="/documentation/pico-sdk/high_level.html#rpip73422519f861a01369c4">Typedefs</a>
2727 <a href="/documentation/pico-sdk/high_level.html#rpipc33092ce8251b4b8dbf1">Functions</a>
2731 <a href="/documentation/pico-sdk/high_level.html#rpip79be1e27fbc098900953">Detailed Description</a>
2735 <a href="/documentation/pico-sdk/high_level.html#rpipe4818f2317923f615384">Typedef Documentation</a>
2739 <a href="/documentation/pico-sdk/high_level.html#rpip8be6ff2503083d1e44cb">Function Documentation</a>
2743 <a href="/documentation/pico-sdk/high_level.html#async_context_freertos">async_context_freertos</a>
2747 <a href="/documentation/pico-sdk/high_level.html#async_context_poll">async_context_poll</a>
2751 <a href="/documentation/pico-sdk/high_level.html#async_context_threadsafe_background">async_context_threadsafe_background</a>
2759 <a href="/documentation/pico-sdk/high_level.html#pico_flash">pico_flash</a>
2764 <a href="/documentation/pico-sdk/high_level.html#rpipcb13fd2e8f843c73e3be">Functions</a>
2768 <a href="/documentation/pico-sdk/high_level.html#rpip757f4a42c3de3c0b5283">Detailed Description</a>
2772 <a href="/documentation/pico-sdk/high_level.html#rpip984b61938ec2fe82b216">Function Documentation</a>
2780 <a href="/documentation/pico-sdk/high_level.html#pico_i2c_slave">pico_i2c_slave</a>
2785 <a href="/documentation/pico-sdk/high_level.html#rpipff46d0780fe042bf707c">Typedefs</a>
2789 <a href="/documentation/pico-sdk/high_level.html#rpip44c693c1c2d88aff02f4">Enumerations</a>
2793 <a href="/documentation/pico-sdk/high_level.html#rpip7d4e1982831b9d4bc1be">Functions</a>
2797 <a href="/documentation/pico-sdk/high_level.html#rpip9e01d206b833ed2d2422">Detailed Description</a>
2801 <a href="/documentation/pico-sdk/high_level.html#rpip64a0102e835d7a4aae09">Typedef Documentation</a>
2805 <a href="/documentation/pico-sdk/high_level.html#rpipafb978c9dd3ec6082f80">Enumeration Type Documentation</a>
2809 <a href="/documentation/pico-sdk/high_level.html#rpipbf5b82a0dc8d3d4bb2bf">Function Documentation</a>
2817 <a href="/documentation/pico-sdk/high_level.html#pico_multicore">pico_multicore</a>
2822 <a href="/documentation/pico-sdk/high_level.html#rpip7baf405557a57f41b9de">Modules</a>
2826 <a href="/documentation/pico-sdk/high_level.html#rpipf840d967c7b8d6fef316">Functions</a>
2830 <a href="/documentation/pico-sdk/high_level.html#rpipc30c9f02735cb3003f42">Detailed Description</a>
2834 <a href="/documentation/pico-sdk/high_level.html#multicore_example">Example</a>
2838 <a href="/documentation/pico-sdk/high_level.html#rpipe803fe9ffd182f2af357">Function Documentation</a>
2842 <a href="/documentation/pico-sdk/high_level.html#multicore_fifo">fifo</a>
2846 <a href="/documentation/pico-sdk/high_level.html#multicore_lockout">lockout</a>
2854 <a href="/documentation/pico-sdk/high_level.html#pico_rand">pico_rand</a>
2859 <a href="/documentation/pico-sdk/high_level.html#rpip2ac37766eddd02aaed07">Functions</a>
2863 <a href="/documentation/pico-sdk/high_level.html#rpipd9cd1e107a6238a969b8">Detailed Description</a>
2867 <a href="/documentation/pico-sdk/high_level.html#rpipaca07ee034d314acc4bf">Function Documentation</a>
2875 <a href="/documentation/pico-sdk/high_level.html#pico_stdlib">pico_stdlib</a>
2880 <a href="/documentation/pico-sdk/high_level.html#rpip04d09fa6ec88d8737403">Functions</a>
2884 <a href="/documentation/pico-sdk/high_level.html#rpip67e7d087a6d9d4177c9c">Detailed Description</a>
2888 <a href="/documentation/pico-sdk/high_level.html#rpip9d8a4958ff265de7762d">Function Documentation</a>
2896 <a href="/documentation/pico-sdk/high_level.html#pico_sync">pico_sync</a>
2901 <a href="/documentation/pico-sdk/high_level.html#rpip42988faa0a4de968a0fe">Modules</a>
2905 <a href="/documentation/pico-sdk/high_level.html#rpip0a443d120465214bff04">Detailed Description</a>
2909 <a href="/documentation/pico-sdk/high_level.html#critical_section">critical_section</a>
2913 <a href="/documentation/pico-sdk/high_level.html#lock_core">lock_core</a>
2917 <a href="/documentation/pico-sdk/high_level.html#mutex">mutex</a>
2921 <a href="/documentation/pico-sdk/high_level.html#sem">sem</a>
2929 <a href="/documentation/pico-sdk/high_level.html#pico_time">pico_time</a>
2934 <a href="/documentation/pico-sdk/high_level.html#rpip75fc0e1fb693907ffae4">Modules</a>
2938 <a href="/documentation/pico-sdk/high_level.html#rpip587c32f8059c662009b6">Detailed Description</a>
2942 <a href="/documentation/pico-sdk/high_level.html#timestamp">timestamp</a>
2946 <a href="/documentation/pico-sdk/high_level.html#sleep">sleep</a>
2950 <a href="/documentation/pico-sdk/high_level.html#alarm">alarm</a>
2954 <a href="/documentation/pico-sdk/high_level.html#repeating_timer">repeating_timer</a>
2962 <a href="/documentation/pico-sdk/high_level.html#pico_unique_id">pico_unique_id</a>
2967 <a href="/documentation/pico-sdk/high_level.html#rpip7981e60e740d763c8048">Data Structures</a>
2971 <a href="/documentation/pico-sdk/high_level.html#rpip04f6f057a3030914c7d2">Functions</a>
2975 <a href="/documentation/pico-sdk/high_level.html#rpip2a7175316ee370f706a8">Detailed Description</a>
2979 <a href="/documentation/pico-sdk/high_level.html#rpipec641d378cce59faa918">Function Documentation</a>
2987 <a href="/documentation/pico-sdk/high_level.html#pico_util">pico_util</a>
2992 <a href="/documentation/pico-sdk/high_level.html#rpip158b48d2746d665569ba">Modules</a>
2996 <a href="/documentation/pico-sdk/high_level.html#rpip8dab79e9dfcc333468bf">Detailed Description</a>
3000 <a href="/documentation/pico-sdk/high_level.html#util_datetime">datetime</a>
3004 <a href="/documentation/pico-sdk/high_level.html#util_pheap">pheap</a>
3008 <a href="/documentation/pico-sdk/high_level.html#queue">queue</a>
3020 <h3 class="contentshead" onclick="expandAndCollapse(this)">Third-party Libraries</h3>
3023 <div class="itemcontents">
3024 <ul class="sectlevel1">
3027 <a href="/documentation/pico-sdk/third_party.html#tinyusb_device">tinyusb_device</a>
3032 <a href="/documentation/pico-sdk/third_party.html#tinyusb_host">tinyusb_host</a>
3041 <h3 class="contentshead" onclick="expandAndCollapse(this)">Networking Libraries</h3>
3044 <div class="itemcontents">
3045 <ul class="sectlevel1">
3048 <a href="/documentation/pico-sdk/networking.html#pico_btstack">pico_btstack</a>
3053 <a href="/documentation/pico-sdk/networking.html#rpipabe482207518b13daea8">Functions</a>
3057 <a href="/documentation/pico-sdk/networking.html#rpip28aa570f7304feb24dd8">Detailed Description</a>
3061 <a href="/documentation/pico-sdk/networking.html#rpip81e86eeedf11e3669c51">Function Documentation</a>
3069 <a href="/documentation/pico-sdk/networking.html#pico_lwip">pico_lwip</a>
3074 <a href="/documentation/pico-sdk/networking.html#rpip192837c4e57e2f47dbf6">Modules</a>
3078 <a href="/documentation/pico-sdk/networking.html#rpip98f8ef4b7c7e1e6ce281">Detailed Description</a>
3082 <a href="/documentation/pico-sdk/networking.html#pico_lwip_arch">pico_lwip_arch</a>
3086 <a href="/documentation/pico-sdk/networking.html#pico_lwip_freertos">pico_lwip_freertos</a>
3090 <a href="/documentation/pico-sdk/networking.html#pico_lwip_nosys">pico_lwip_nosys</a>
3098 <a href="/documentation/pico-sdk/networking.html#pico_cyw43_driver">pico_cyw43_driver</a>
3103 <a href="/documentation/pico-sdk/networking.html#rpip0627746aa35c1c42f44c">Modules</a>
3107 <a href="/documentation/pico-sdk/networking.html#rpipae8b34f7bf0aa371c600">Files</a>
3111 <a href="/documentation/pico-sdk/networking.html#rpipd512513ec719cf7ab197">Functions</a>
3115 <a href="/documentation/pico-sdk/networking.html#rpipebe2d33331cf989e1d29">Detailed Description</a>
3119 <a href="/documentation/pico-sdk/networking.html#rpip7ddeab266708e76683af">Function Documentation</a>
3123 <a href="/documentation/pico-sdk/networking.html#pico_btstack_cyw43">pico_btstack_cyw43</a>
3131 <a href="/documentation/pico-sdk/networking.html#pico_cyw43_arch">pico_cyw43_arch</a>
3136 <a href="/documentation/pico-sdk/networking.html#rpip55bbe3b3adaa09c91f12">Modules</a>
3140 <a href="/documentation/pico-sdk/networking.html#rpipbd659dd2af29c569d582">Macros</a>
3144 <a href="/documentation/pico-sdk/networking.html#rpip2dbacd10d4e207dae370">Functions</a>
3148 <a href="/documentation/pico-sdk/networking.html#rpip2786c74350b1e1c2247c">Detailed Description</a>
3152 <a href="/documentation/pico-sdk/networking.html#rpip7e5d89be1cf9268f36c9">Macro Definition Documentation</a>
3156 <a href="/documentation/pico-sdk/networking.html#rpip2890f60e0c83d227f2ec">Function Documentation</a>
3160 <a href="/documentation/pico-sdk/networking.html#cyw43_driver">cyw43_driver</a>
3172 <h3 class="contentshead" onclick="expandAndCollapse(this)">Runtime Infrastructure</h3>
3175 <div class="itemcontents" id="toc"></div>
3176 <div class="itemcontents noJS">
3177 <ul class="sectlevel1">
3180 <a href="/documentation/pico-sdk/runtime.html#boot_stage2">boot_stage2</a>
3185 <a href="/documentation/pico-sdk/runtime.html#pico_base">pico_base</a>
3190 <a href="/documentation/pico-sdk/runtime.html#rpip45542cfabd24f25c2b10">Enumerations</a>
3194 <a href="/documentation/pico-sdk/runtime.html#rpipb665655c66e63f4a0c4a">Detailed Description</a>
3202 <a href="/documentation/pico-sdk/runtime.html#pico_binary_info">pico_binary_info</a>
3207 <a href="/documentation/pico-sdk/runtime.html#rpip7989f07e71fba07188be">Macros</a>
3211 <a href="/documentation/pico-sdk/runtime.html#rpipc27123c22ad347cefc87">Detailed Description</a>
3215 <a href="/documentation/pico-sdk/runtime.html#rpipa2ff445fb2a0a57f9dde">Macro Definition Documentation</a>
3223 <a href="/documentation/pico-sdk/runtime.html#pico_bit_ops">pico_bit_ops</a>
3228 <a href="/documentation/pico-sdk/runtime.html#rpipf1806233ab08edf2d1a4">Functions</a>
3232 <a href="/documentation/pico-sdk/runtime.html#rpip63c260c668f0f7e929e9">Detailed Description</a>
3236 <a href="/documentation/pico-sdk/runtime.html#rpip2b305c870314270af1e5">Function Documentation</a>
3244 <a href="/documentation/pico-sdk/runtime.html#pico_bootrom">pico_bootrom</a>
3249 <a href="/documentation/pico-sdk/runtime.html#rpipcf60d5fd56095181a98e">Macros</a>
3253 <a href="/documentation/pico-sdk/runtime.html#rpip05bb858150fa37b3e132">Functions</a>
3257 <a href="/documentation/pico-sdk/runtime.html#rpip005c32aa3418cd5dc77d">Detailed Description</a>
3261 <a href="/documentation/pico-sdk/runtime.html#rpipf9cc87ae1233fe613239">Macro Definition Documentation</a>
3265 <a href="/documentation/pico-sdk/runtime.html#rpipab643919091a482a2c7d">Function Documentation</a>
3273 <a href="/documentation/pico-sdk/runtime.html#pico_bootsel_via_double_reset">pico_bootsel_via_double_reset</a>
3278 <a href="/documentation/pico-sdk/runtime.html#pico_cxx_options">pico_cxx_options</a>
3283 <a href="/documentation/pico-sdk/runtime.html#pico_divider">pico_divider</a>
3288 <a href="/documentation/pico-sdk/runtime.html#rpipfb1beee11febefbf90cc">Files</a>
3292 <a href="/documentation/pico-sdk/runtime.html#rpipa79e631886e62fcd1cd0">Functions</a>
3296 <a href="/documentation/pico-sdk/runtime.html#rpip108233463d1122628ba9">Detailed Description</a>
3300 <a href="/documentation/pico-sdk/runtime.html#rpip0d33c4d7c6e0d08667ce">Function Documentation</a>
3308 <a href="/documentation/pico-sdk/runtime.html#pico_double">pico_double</a>
3313 <a href="/documentation/pico-sdk/runtime.html#pico_float">pico_float</a>
3318 <a href="/documentation/pico-sdk/runtime.html#pico_int64_ops">pico_int64_ops</a>
3323 <a href="/documentation/pico-sdk/runtime.html#pico_malloc">pico_malloc</a>
3328 <a href="/documentation/pico-sdk/runtime.html#pico_mem_ops">pico_mem_ops</a>
3333 <a href="/documentation/pico-sdk/runtime.html#pico_platform">pico_platform</a>
3338 <a href="/documentation/pico-sdk/runtime.html#rpipb6ca92b8ab23006742ba">Macros</a>
3342 <a href="/documentation/pico-sdk/runtime.html#rpip96324626dec724f7403d">Functions</a>
3346 <a href="/documentation/pico-sdk/runtime.html#rpip092e8191441c92cf5ccf">Detailed Description</a>
3350 <a href="/documentation/pico-sdk/runtime.html#rpip464a3792c78a5a9ffa73">Macro Definition Documentation</a>
3354 <a href="/documentation/pico-sdk/runtime.html#rpip14e9a416348dd6951167">Function Documentation</a>
3362 <a href="/documentation/pico-sdk/runtime.html#pico_printf">pico_printf</a>
3367 <a href="/documentation/pico-sdk/runtime.html#pico_runtime">pico_runtime</a>
3372 <a href="/documentation/pico-sdk/runtime.html#pico_stdio">pico_stdio</a>
3377 <a href="/documentation/pico-sdk/runtime.html#rpip66600d8c06f1ab929c23">Modules</a>
3381 <a href="/documentation/pico-sdk/runtime.html#rpipbfbe419ab3a18de01187">Functions</a>
3385 <a href="/documentation/pico-sdk/runtime.html#rpip3eccc7d7592c0528c9ae">Detailed Description</a>
3389 <a href="/documentation/pico-sdk/runtime.html#rpip2fc272e282686cb4da01">Function Documentation</a>
3393 <a href="/documentation/pico-sdk/runtime.html#pico_stdio_semihosting">pico_stdio_semihosting</a>
3397 <a href="/documentation/pico-sdk/runtime.html#pico_stdio_uart">pico_stdio_uart</a>
3401 <a href="/documentation/pico-sdk/runtime.html#pico_stdio_usb">pico_stdio_usb</a>
3409 <a href="/documentation/pico-sdk/runtime.html#pico_standard_link">pico_standard_link</a>
3418 <h3 class="contentshead" onclick="expandAndCollapse(this)">External API Headers</h3>
3421 <div class="itemcontents">
3422 <ul class="sectlevel1">
3425 <a href="/documentation/pico-sdk/misc.html#boot_picoboot">boot_picoboot</a>
3430 <a href="/documentation/pico-sdk/misc.html#boot_uf2">boot_uf2</a>
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">
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>
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>
3463 <p id="rpip5759fd0587f6f7ce1bbf">Second stage boot loaders responsible for setting up external flash.
3465 <p id="rpip4cc226bf7e5923b35a6f">Second stage boot loaders responsible for setting up external flash. </p>
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>
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">
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>
3499 <a name="details" id="details"></a>
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>
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>
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, &__bi_lineno_var_name.core, ".binary_info.keep.", __used);</span></p>
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, &__bi_lineno_var_name.core, ".binary_info.", ); *(const volatile uint8_t *)&__bi_ptr_lineno_var_name;});</span></p>
3525 <a name="details" id="details"></a>
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>
3542 <h3 id="rpipa2ff445fb2a0a57f9dde">
3543 <a class="anchor" href="#rpipa2ff445fb2a0a57f9dde"></a>Macro Definition Documentation</h3>
3544 <a id="ga758f119659f2491c89e8e2955d647e9a" name="ga758f119659f2491c89e8e2955d647e9a"></a>
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, &__bi_lineno_var_name.core, ".binary_info.keep.", __used);</td>
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>
3566 <a id="ga448b6eaeefd68be7031086e7dfcaf96e" name="ga448b6eaeefd68be7031086e7dfcaf96e"></a>
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, &__bi_lineno_var_name.core, ".binary_info.", ); *(const volatile uint8_t *)&__bi_ptr_lineno_var_name;});</td>
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>
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>
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>
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>
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>
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>
3615 <a name="details" id="details"></a>
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>
3623 <h3 id="rpip2b305c870314270af1e5">
3624 <a class="anchor" href="#rpip2b305c870314270af1e5"></a>Function Documentation</h3>
3625 <a id="ga57349f36f6d8838074f3e6bc80e1fb51" name="ga57349f36f6d8838074f3e6bc80e1fb51"></a>
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>
3642 <div class="memdoc" id="rpip46c0c2de47b9769334a1">
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">
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>
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>
3662 <a id="gac1a8a9f33a121962e66afe23952efd82" name="gac1a8a9f33a121962e66afe23952efd82"></a>
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>
3680 <div class="memdoc" id="rpipae464bda6e5f24778467">
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">
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>
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>
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>
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) << 8))</span></p>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
3762 <a name="details" id="details"></a>
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>
3771 <h3 id="rpipf9cc87ae1233fe613239">
3772 <a class="anchor" href="#rpipf9cc87ae1233fe613239"></a>Macro Definition Documentation</h3>
3773 <a id="ga5b3c93cbab0054e9938f2aca7261a73e" name="ga5b3c93cbab0054e9938f2aca7261a73e"></a>
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>
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>
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) << 8))</td>
3800 <div class="memdoc" id="rpip7e52ce2474becdde7f28">
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">
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>
3812 <tr id="rpip1b26f448a693f99968b6">
3813 <td class="paramname" id="rpip1cbe9076d4e87de89370">c2</td>
3814 <td id="rpipcac13bdb089fb63dcb82">the second character </td>
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>
3828 <h3 id="rpipab643919091a482a2c7d">
3829 <a class="anchor" href="#rpipab643919091a482a2c7d"></a>Function Documentation</h3>
3830 <a id="ga5d51b6163ec30a147d3445cec8f33c7c" name="ga5d51b6163ec30a147d3445cec8f33c7c"></a>
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>
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>
3854 <tr id="rpipf23c467231e40d010225">
3855 <td id="rpip07d7197873a016f31f20"></td>
3856 <td id="rpip3a7ec20ca8f2f5a99753">)</td>
3857 <td id="rpipb1bc42e7ac956a1b9a08"></td>
3858 <td id="rpipf2211ceb8b3905bbe604"></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>
3867 <div class="memdoc" id="rpip60e21eae9a5a231996e6">
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").
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">
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>
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>
3899 <a id="gad3e66e7bcbf0448a0a63cf37dfb4b53c" name="gad3e66e7bcbf0448a0a63cf37dfb4b53c"></a>
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>
3917 <div class="memdoc" id="rpip6af945acc4d62a07d1be">
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">
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>
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>
3937 <a id="gaaaf61234f389da6444b6479f29616d7d" name="gaaaf61234f389da6444b6479f29616d7d"></a>
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>
3955 <div class="memdoc" id="rpip2336dad1c232c2f7c942">
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">
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>
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>
3975 <a id="ga8f4e326502015aa4f4624251df366268" name="ga8f4e326502015aa4f4624251df366268"></a>
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>
3996 <td class="mlabels-right" id="rpip01bf082e6bfd8034715c">
3997 <span class="mlabels" id="rpipac3304a56bf71e51b734"><span class="mlabel" id="rpipe6d7939438ca6b3b4019">static</span></span> </td>
4001 <div class="memdoc" id="rpip007ae9438c0e409df1b8">
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">
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>
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>
4021 <a id="ga31965209f0ddaeaecaeb3c516abda04d" name="ga31965209f0ddaeaecaeb3c516abda04d"></a>
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>
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>
4043 <tr id="rpipfa00ef34a4acd93189bd">
4044 <td id="rpip4ff998b272e22a1bc726"></td>
4045 <td id="rpip5a746a9176bc998dc168">)</td>
4046 <td id="rpip1f271962cdf3116b08df"></td>
4047 <td id="rpipbd635af47f621801ba58"></td>
4051 <div class="memdoc" id="rpip06f307cb8f70c5d7c6db">
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">
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>
4063 <tr id="rpipaa4677d648ec0909da03">
4064 <td class="paramname" id="rpipd81240a7addb783f686b">count</td>
4065 <td id="rpip0746fb22fd1898e4a0c9">the number of elements in the table </td>
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>
4076 <a id="ga2b6dcf9d9c60d54a222f7c259c76b4b4" name="ga2b6dcf9d9c60d54a222f7c259c76b4b4"></a>
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>
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>
4101 <tr id="rpip0c630fe92ae35c789551">
4102 <td id="rpipd200597e07d4972dba34"></td>
4103 <td id="rpip65befc5d9ea9c2f36abb">)</td>
4104 <td id="rpip3e56e90bd8ab1906d890"></td>
4105 <td id="rpip7a1998ad1b2c3bd39ae4"></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>
4114 <div class="memdoc" id="rpip27353c48f1e34c4f9f08">
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">
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>
4126 <tr id="rpipdc37f3c79cc6bb39085e">
4127 <td class="paramname" id="rpip4b1403b3bcff12828dee">c2</td>
4128 <td id="rpipfe23b683f5819dfa8583">the second character </td>
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>
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>
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>
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>
4156 <p id="rpipa09667821615544d2604">non-code library controlling C++ related compile options
4158 <p id="rpiped86bb64716bc65496cc">non-code library controlling C++ related compile options </p>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
4327 <a name="details" id="details"></a>
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>
4335 <h3 id="rpip0d33c4d7c6e0d08667ce">
4336 <a class="anchor" href="#rpip0d33c4d7c6e0d08667ce"></a>Function Documentation</h3>
4337 <a id="ga60b86237e096a13f871015a28dceb88a" name="ga60b86237e096a13f871015a28dceb88a"></a>
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>
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>
4358 <tr id="rpipa80722d4029a2477a211">
4359 <td id="rpip35108f567c73f68b7b8c"></td>
4360 <td id="rpipb610fdd56cc6b3fa26d4">)</td>
4361 <td id="rpip3f22a2cb9d80d38d40da"></td>
4362 <td id="rpipe2be8d1c930e3e842af2"></td>
4366 <div class="memdoc" id="rpip952b41fb5070bbb0bd82">
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">
4372 <table class="params" id="rpip1dba4b750372e36c15f7">
4373 <tr id="rpip0009cb3d9e3a78d30d87">
4374 <td class="paramname" id="rpipe475f1e48be5a8e84fb0">a</td>
4375 <td id="rpip4f6745408fa7a6718611">Dividend </td>
4377 <tr id="rpip8e0da879090726ba69d2">
4378 <td class="paramname" id="rpip0806eb94fd95b1405d50">b</td>
4379 <td id="rpipf18b47a0f6438b736468">Divisor </td>
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>
4390 <a id="ga87e79e05c5490fcef2efb156a721fd6f" name="ga87e79e05c5490fcef2efb156a721fd6f"></a>
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>
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>
4412 <tr id="rpip15bd4c2140bc0e73413a">
4413 <td id="rpip15396a60abef58c4d123"></td>
4414 <td id="rpip8e610ae52cf48190a8d3">)</td>
4415 <td id="rpip14fa0d21d5dbef30c847"></td>
4416 <td id="rpip3530ab148c510da98a6c"></td>
4420 <div class="memdoc" id="rpiped8d8d56628c4adf18c4">
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">
4426 <table class="params" id="rpip6ca15d29a9059afd6c24">
4427 <tr id="rpipcf01467973adb9a59146">
4428 <td class="paramname" id="rpip5fe4096f84847b5258e9">a</td>
4429 <td id="rpip381000eb2412dcf2842d">Dividend </td>
4431 <tr id="rpipbd1be9a7bb1d126aaafb">
4432 <td class="paramname" id="rpip79041b5ca25b3794fa56">b</td>
4433 <td id="rpip078f931161059f876fbc">Divisor </td>
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>
4445 <a id="ga053ab24ac7d6145b0229a6c111cb9d1b" name="ga053ab24ac7d6145b0229a6c111cb9d1b"></a>
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>
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>
4467 <tr id="rpip3815a7aa52b88bfba85a">
4468 <td id="rpipc2dd8f198f843ef4b374"></td>
4469 <td id="rpip13ab1e6657c197885a42">)</td>
4470 <td id="rpip611cd7c8d744cdd82d71"></td>
4471 <td id="rpip03cbf02f3534b33bdd61"></td>
4475 <div class="memdoc" id="rpip1a27fe7bcb8859b8cad0">
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">
4481 <table class="params" id="rpip418a8eda7dc09e7cdc10">
4482 <tr id="rpipa72354bc47190adaf14b">
4483 <td class="paramname" id="rpipa6344f6801923b2486fb">a</td>
4484 <td id="rpip51e480ab1773462d2cac">Dividend </td>
4486 <tr id="rpipd246679ab28fb7635085">
4487 <td class="paramname" id="rpip66888e29d345eaf9ec6a">b</td>
4488 <td id="rpipf9affd2584996fd408ef">Divisor </td>
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>
4499 <a id="gaf7847d0648463a6235c9e7844025d0fb" name="gaf7847d0648463a6235c9e7844025d0fb"></a>
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>
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>
4521 <tr id="rpip20ef014b6f2b2e3e1a1e">
4522 <td id="rpipfbd3719da9c1be4709e6"></td>
4523 <td id="rpipc22927dc6cfe679cb1fd">)</td>
4524 <td id="rpipa4355ab71c90ee3ba73b"></td>
4525 <td id="rpip0de9cd9d86052cbde290"></td>
4529 <div class="memdoc" id="rpip5221335d46ef75fd36bd">
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">
4535 <table class="params" id="rpipb74ca37381b210016176">
4536 <tr id="rpip7955e6ab3b938d4fdebc">
4537 <td class="paramname" id="rpip33b4180d7ba9bdac34dd">a</td>
4538 <td id="rpip57bab414e60e5b62cbca">Dividend </td>
4540 <tr id="rpipabcbf3041e3a4e8cbba4">
4541 <td class="paramname" id="rpipbc511c04d1872fbb7438">b</td>
4542 <td id="rpipeb1a9bc4a3fd5b109f95">Divisor </td>
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>
4554 <a id="ga9f9526e8653805bf2fe737afd4e490da" name="ga9f9526e8653805bf2fe737afd4e490da"></a>
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>
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>
4576 <tr id="rpip911ccd1a3a9bd5f6e998">
4577 <td id="rpipb1e33e0973cd00d9d353"></td>
4578 <td id="rpip8463057f332c7076bdaf">)</td>
4579 <td id="rpip3f8d6167dd43fbfe85ff"></td>
4580 <td id="rpip608dfd0160faa8576295"></td>
4584 <div class="memdoc" id="rpip83a6e048b6c601c16cae">
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">
4590 <table class="params" id="rpipbb4c77911c0b69e79879">
4591 <tr id="rpip5df79b4b13e84bb44788">
4592 <td class="paramname" id="rpip2ec188f561935fd5d698">a</td>
4593 <td id="rpipc59ef76560fc6c344ed4">Dividend </td>
4595 <tr id="rpip92df5dc4c18d59098482">
4596 <td class="paramname" id="rpip78cc3f5deb48aa11db9a">b</td>
4597 <td id="rpip77b5f91a801e07349dca">Divisor </td>
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>
4608 <a id="gaf3c85d6165a3c2a16b7ecad9cf077a58" name="gaf3c85d6165a3c2a16b7ecad9cf077a58"></a>
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>
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>
4630 <tr id="rpipb89045582c83e6ab00ac">
4631 <td id="rpip9e8f34e2c96fe1f5e04f"></td>
4632 <td id="rpipf0413e68384105b9101a">)</td>
4633 <td id="rpip084781bb792be2d7a86c"></td>
4634 <td id="rpipa6f15adc3981f4a6d75c"></td>
4638 <div class="memdoc" id="rpipaadbd7066b57722ca410">
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">
4644 <table class="params" id="rpip723a6886ec45c49181c1">
4645 <tr id="rpipd9f547b0c0a885ab19cd">
4646 <td class="paramname" id="rpipe16def6a5d2bd77e5152">a</td>
4647 <td id="rpip30903a66026fd450e5ae">Dividend </td>
4649 <tr id="rpip6fe6b6073dab54e1743e">
4650 <td class="paramname" id="rpipb0b81d6fbf10aaf1c801">b</td>
4651 <td id="rpip669626edc32378382577">Divisor </td>
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>
4663 <a id="ga3004f0218e26a762031ec7ed3c369ad1" name="ga3004f0218e26a762031ec7ed3c369ad1"></a>
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>
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>
4685 <tr id="rpip0b9e6ee9dc12068a243c">
4686 <td id="rpip6cd63fb2d383273fe10b"></td>
4687 <td id="rpipa01a1a5cc1de519c3b16">)</td>
4688 <td id="rpip9e1642fb88116131e1ee"></td>
4689 <td id="rpip54821dcf5fc5d03f0219"></td>
4693 <div class="memdoc" id="rpipa32e7c73a260c1d82e9d">
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">
4699 <table class="params" id="rpip93bc2d63ba2b45053c0c">
4700 <tr id="rpip296564384142a86d5de2">
4701 <td class="paramname" id="rpip90f48824d9d0d63b7c06">a</td>
4702 <td id="rpip4e9dc2f614b0a88ed2e3">Dividend </td>
4704 <tr id="rpip6d8c0655367d6b32f66b">
4705 <td class="paramname" id="rpipb35ce3343a85333bf9c4">b</td>
4706 <td id="rpip9bbf608dca9e765ab345">Divisor </td>
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>
4717 <a id="ga5ef2b5c7b1e6f12573ec35cbc822ab5a" name="ga5ef2b5c7b1e6f12573ec35cbc822ab5a"></a>
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>
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>
4739 <tr id="rpipc5c42912162a30919b57">
4740 <td id="rpip7749e41e0b46713b7899"></td>
4741 <td id="rpip4f8ef68eeaaa911f5f6f">)</td>
4742 <td id="rpipd741cb74ed1eeffee3ae"></td>
4743 <td id="rpip8478c365676bb973e09a"></td>
4747 <div class="memdoc" id="rpip7c3f34743a04a5c88121">
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">
4753 <table class="params" id="rpip4c2d43c3e7ec7671f688">
4754 <tr id="rpip276ef6708ff5230565c5">
4755 <td class="paramname" id="rpipbfb61808311a62087ffa">a</td>
4756 <td id="rpip7a32e34d63b6267e10be">Dividend </td>
4758 <tr id="rpipc3adf8ae8a3cc36754e4">
4759 <td class="paramname" id="rpip940e45854b63121ee9d1">b</td>
4760 <td id="rpipf202de0572863fc2793c">Divisor </td>
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>
4772 <a id="gace9d9d5ff4290c52bc4d5e07f6f7e15a" name="gace9d9d5ff4290c52bc4d5e07f6f7e15a"></a>
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>
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>
4794 <tr id="rpip73bc7b4ab5e3c39571af">
4795 <td id="rpip9d42a0fb6599ba1c1ad9"></td>
4796 <td id="rpip248ec6d99d4bedc134ab">)</td>
4797 <td id="rpipc5f7862c5cbc3a5cee9c"></td>
4798 <td id="rpip80c9763eced9852bd393"></td>
4802 <div class="memdoc" id="rpip4990a9fcb8633a9aaa4d">
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">
4808 <table class="params" id="rpipe49aa114bc8cd88c6f38">
4809 <tr id="rpip93c335c18671a0074bae">
4810 <td class="paramname" id="rpipe10e827a5ed8d95ef235">a</td>
4811 <td id="rpipc28b02e85a97667a6316">Dividend </td>
4813 <tr id="rpipcc2cb15e48bbddb18e34">
4814 <td class="paramname" id="rpip14015a8245f902715bb6">b</td>
4815 <td id="rpipcb5960430e10554f8318">Divisor </td>
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>
4826 <a id="gaae6ff276cc2275c0734600b981a5d677" name="gaae6ff276cc2275c0734600b981a5d677"></a>
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>
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>
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>
4858 <tr id="rpip8af1c7cd34b8822ed0dd">
4859 <td id="rpip04c4dc6d4e07f8181432"></td>
4860 <td id="rpip81ecb4b7e9e9488dd055">)</td>
4861 <td id="rpipc7542cc250e7a105f887"></td>
4862 <td id="rpip913192bdbd15b370f67e"></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>
4871 <div class="memdoc" id="rpip9dc507a45dbead316108">
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">
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>
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>
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>
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>
4902 <a id="ga18a5bbbeb6c84d0357d803b2c5b25039" name="ga18a5bbbeb6c84d0357d803b2c5b25039"></a>
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>
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>
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>
4931 <tr id="rpip282d12761322ec5b7ea2">
4932 <td id="rpipcfb999169002ffb7717c"></td>
4933 <td id="rpip29de82d2e4f184626c77">)</td>
4934 <td id="rpip9f83818555d4e09fbb5c"></td>
4935 <td id="rpip2f6c4d0feebcdec62548"></td>
4939 <div class="memdoc" id="rpip8b60edb925c74cf4ce52">
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">
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>
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>
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>
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>
4971 <a id="ga832132d1124737c9316dac6c7fe5c752" name="ga832132d1124737c9316dac6c7fe5c752"></a>
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>
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>
4993 <tr id="rpipdbec8636a91cb1551113">
4994 <td id="rpipb2bdaf397aa7bceb0c0f"></td>
4995 <td id="rpip99baaf862a4d27957889">)</td>
4996 <td id="rpip22976447fc8a7f389718"></td>
4997 <td id="rpip35fc451999f26cedf95e"></td>
5001 <div class="memdoc" id="rpip646de744824762a75dac">
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">
5007 <table class="params" id="rpipee2b1493e5e8469a1a7d">
5008 <tr id="rpipaad2bd4d23c8bae91930">
5009 <td class="paramname" id="rpipbeaa732c5625d397263c">a</td>
5010 <td id="rpipb132f201e2f33612d107">Dividend </td>
5012 <tr id="rpip9e499e5154b4995440d4">
5013 <td class="paramname" id="rpip4badbea02a84dac85ba0">b</td>
5014 <td id="rpip1739916e29b59b21bdc6">Divisor </td>
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>
5026 <a id="ga936872c9df9360e2b32b5d8b2c345913" name="ga936872c9df9360e2b32b5d8b2c345913"></a>
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>
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>
5048 <tr id="rpip55b78720819141402c2d">
5049 <td id="rpip7080045470813f2c5750"></td>
5050 <td id="rpipaa1c775c246f20dbffb5">)</td>
5051 <td id="rpip11849fb56bf986a1cece"></td>
5052 <td id="rpip399a408f5ccfb759ac31"></td>
5056 <div class="memdoc" id="rpipd65ac2c58c105926e148">
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">
5062 <table class="params" id="rpip1fba43162aacebfe98ef">
5063 <tr id="rpipde07ce08e71c98a3a0aa">
5064 <td class="paramname" id="rpip763c4950b21ea3a33218">a</td>
5065 <td id="rpip939f392a7ac95a30d025">Dividend </td>
5067 <tr id="rpip34fc939727cf294a99b7">
5068 <td class="paramname" id="rpip6e6f403c12c3ca94e33b">b</td>
5069 <td id="rpip08f6a76bb881b0c9b61f">Divisor </td>
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>
5080 <a id="ga7f6ec69ce8ef4406923d56a0a6e1d409" name="ga7f6ec69ce8ef4406923d56a0a6e1d409"></a>
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>
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>
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>
5109 <tr id="rpipb62c3744a7fcaa1cb639">
5110 <td id="rpip89f9628c2261d9eb17b1"></td>
5111 <td id="rpipd19d0e5be2c56383a88f">)</td>
5112 <td id="rpip79c3b8909e94ec2a3d8b"></td>
5113 <td id="rpipcd0354f6b1bc0a5b4068"></td>
5117 <div class="memdoc" id="rpip75cd6738a414c7c9435a">
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">
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>
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>
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>
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>
5148 <a id="gacfbc03721cfa18f7f1865d0cb17a62f9" name="gacfbc03721cfa18f7f1865d0cb17a62f9"></a>
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>
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>
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>
5177 <tr id="rpipa28503c53e51ebc608ff">
5178 <td id="rpip2d7be479d5fcfc2cf574"></td>
5179 <td id="rpip0f8d00eddf2cd810d425">)</td>
5180 <td id="rpip4df4bb83456df3dfd3ea"></td>
5181 <td id="rpipbeb87792713c939bf4ca"></td>
5185 <div class="memdoc" id="rpipe0438155124f4ef3d44f">
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">
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>
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>
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>
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>
5217 <a id="ga47233b8d21888b733c5f271fdf290a33" name="ga47233b8d21888b733c5f271fdf290a33"></a>
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>
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>
5239 <tr id="rpip0df16c388d5c8239df50">
5240 <td id="rpipa99085384f63dbf406b4"></td>
5241 <td id="rpip456182c4fd4d97f5e4d1">)</td>
5242 <td id="rpipd255b5a13b9c7ff62c52"></td>
5243 <td id="rpip5e8d4c21923d1794dabd"></td>
5247 <div class="memdoc" id="rpipda080d01e7a27430abb9">
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">
5253 <table class="params" id="rpipaa61c2cde45b70866950">
5254 <tr id="rpip2ab7baeef6b4a8ccd9ef">
5255 <td class="paramname" id="rpip4ca1a7280728b134a0f6">a</td>
5256 <td id="rpip64cb42ba7fb344b324ab">Dividend </td>
5258 <tr id="rpip77e53197718c7c4fbdac">
5259 <td class="paramname" id="rpip5f5a134ad33cfae6ec4f">b</td>
5260 <td id="rpipb1a4a4d008c3f858f26e">Divisor </td>
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>
5272 <a id="ga71d8e53c72b078f1334061ff0aebe8d8" name="ga71d8e53c72b078f1334061ff0aebe8d8"></a>
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>
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>
5294 <tr id="rpip1fa7c6cdd5abf8100e4c">
5295 <td id="rpipf39456e5245e099bd42c"></td>
5296 <td id="rpip9d91ad45b77b8638a852">)</td>
5297 <td id="rpip2ef14ce3382fe5932b6f"></td>
5298 <td id="rpipab55b65c34ea76a6c196"></td>
5302 <div class="memdoc" id="rpipeabc8a6f05b01b48bec2">
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">
5308 <table class="params" id="rpip41b45dc37022974e85dd">
5309 <tr id="rpip952b39d8ec4dbe55442c">
5310 <td class="paramname" id="rpipf857b637a8a32416a759">a</td>
5311 <td id="rpip41d525116dbbf4ed7722">Dividend </td>
5313 <tr id="rpipd4b1197b4254124253b9">
5314 <td class="paramname" id="rpip511f1e5ed1b5addca37c">b</td>
5315 <td id="rpip8d50d8e73f29f1db5bba">Divisor </td>
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>
5326 <a id="ga02bac0aea2fa383a28bd05bcd682a07a" name="ga02bac0aea2fa383a28bd05bcd682a07a"></a>
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>
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>
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>
5358 <tr id="rpipf3083871114507ee5832">
5359 <td id="rpip4716fc25054d6c0fb33a"></td>
5360 <td id="rpip2678224ca05e0f282da2">)</td>
5361 <td id="rpip1f8819b5fbe2b8f51320"></td>
5362 <td id="rpipd2fe3d53d17ae4c0d6ca"></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>
5371 <div class="memdoc" id="rpip0e5fa8a2ac5aafaa3f5b">
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">
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>
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>
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>
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>
5402 <a id="ga110fad3fe5af8415e2c4bc4272c38591" name="ga110fad3fe5af8415e2c4bc4272c38591"></a>
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>
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>
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>
5431 <tr id="rpip9e85698fd4c729083d33">
5432 <td id="rpipd3c98d5a2ea7a23b60c4"></td>
5433 <td id="rpip2f6293681b5d8e199d98">)</td>
5434 <td id="rpipb2366293dd744c11710c"></td>
5435 <td id="rpip10d1865b0c1e336de93b"></td>
5439 <div class="memdoc" id="rpipd984449c33a2affae042">
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">
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>
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>
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>
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>
5471 <a id="gaca386ee7c507716df3a0b6c1d5ad6502" name="gaca386ee7c507716df3a0b6c1d5ad6502"></a>
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>
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>
5493 <tr id="rpipceddaff34fd6f36121d0">
5494 <td id="rpipc82b30389c5cce1a9256"></td>
5495 <td id="rpipa90b88bf822b816794e7">)</td>
5496 <td id="rpip11f8c640c921e9f3c5f1"></td>
5497 <td id="rpip4c2ac215094575a051b0"></td>
5501 <div class="memdoc" id="rpip600a446eb85c061ea9c2">
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">
5507 <table class="params" id="rpipab778bb7d30e2de22baa">
5508 <tr id="rpip7908fe2d3b96dc9b6e87">
5509 <td class="paramname" id="rpipdcba50452cf3e0660c6c">a</td>
5510 <td id="rpip54e146d8ff8ccce6867a">Dividend </td>
5512 <tr id="rpipc34c8834e460b2d88c9a">
5513 <td class="paramname" id="rpipa9599e73abfeeb73cce7">b</td>
5514 <td id="rpip8c06d6f2e0ceb29eb5cb">Divisor </td>
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>
5526 <a id="ga523fd2399753e2e1c9ebeb3bbc3ad175" name="ga523fd2399753e2e1c9ebeb3bbc3ad175"></a>
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>
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>
5548 <tr id="rpip4fbd00ce8737fb145900">
5549 <td id="rpip6ea35dc62a20ae0c437d"></td>
5550 <td id="rpipae32b8821dd80ac40605">)</td>
5551 <td id="rpipb6a0f612f5a63889795b"></td>
5552 <td id="rpip258942d0d0876ebf3cb7"></td>
5556 <div class="memdoc" id="rpip19db281e618763f0a9ec">
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">
5562 <table class="params" id="rpip9a64179ac816ae7a292e">
5563 <tr id="rpipbfd8832fcb7cc7d42e78">
5564 <td class="paramname" id="rpip63926e2e36e9b9e6442b">a</td>
5565 <td id="rpip6fa191053861dacb9067">Dividend </td>
5567 <tr id="rpipafa50d3d61f727e8d337">
5568 <td class="paramname" id="rpip8e9a101418cd9bacc180">b</td>
5569 <td id="rpipdebc47a2f7a37dfec791">Divisor </td>
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>
5580 <a id="gad4a811e1113b670a7b67df9d7e8c17f8" name="gad4a811e1113b670a7b67df9d7e8c17f8"></a>
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>
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>
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>
5609 <tr id="rpip4941944f781d5665a9d9">
5610 <td id="rpip785f8d5486eabb84a85e"></td>
5611 <td id="rpipba6a6f16a7f85fac235a">)</td>
5612 <td id="rpip6b81591674d4d5e20eda"></td>
5613 <td id="rpipdb0ba6d01827e42d273b"></td>
5617 <div class="memdoc" id="rpip0176bbd0c393124bb8a6">
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">
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>
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>
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>
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>
5648 <a id="ga9f37bfee18ba829fe4249b309dcb4fad" name="ga9f37bfee18ba829fe4249b309dcb4fad"></a>
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>
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>
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>
5677 <tr id="rpip0be8b81658f8103fbffe">
5678 <td id="rpip13ede011019c2efb3aa8"></td>
5679 <td id="rpipbe0e78521f2cac2285ed">)</td>
5680 <td id="rpip546482003616c4d93348"></td>
5681 <td id="rpip8e2f5dd5fcbf58975178"></td>
5685 <div class="memdoc" id="rpipf30a648c6b0e32add815">
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">
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>
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>
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>
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>
5717 <a id="ga18f537358cd342a32fa6781e7ca4b475" name="ga18f537358cd342a32fa6781e7ca4b475"></a>
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>
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>
5739 <tr id="rpip29eb015e19953e4b6da1">
5740 <td id="rpipf00d52dd1c05f11bf0e4"></td>
5741 <td id="rpipd5b2283b125ca77bc653">)</td>
5742 <td id="rpipa3a99e998c1651044ff2"></td>
5743 <td id="rpip1b17b17f1d615a6c9668"></td>
5747 <div class="memdoc" id="rpip3c631956a611723ca180">
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">
5753 <table class="params" id="rpip1c1d00f7ceedfb10d89f">
5754 <tr id="rpipe89fbc9e734c4ccb31ba">
5755 <td class="paramname" id="rpip1676472ddbec77be3d81">a</td>
5756 <td id="rpip4ae2f96e4b556f566832">Dividend </td>
5758 <tr id="rpipb17350a87eb563674280">
5759 <td class="paramname" id="rpipce0cb0b1d0acf3a4247d">b</td>
5760 <td id="rpip92dc377ab65344ad217c">Divisor </td>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
5850 <p id="rpip9e8945fb2ed8a4dc0bf7">This library does not provide any additional functions </p>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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)>(b)?(a):(b))</span></p>
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>
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)>(a)?(a):(b))</span></p>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
6041 <a name="details" id="details"></a>
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>
6050 <h3 id="rpip464a3792c78a5a9ffa73">
6051 <a class="anchor" href="#rpip464a3792c78a5a9ffa73"></a>Macro Definition Documentation</h3>
6052 <a id="ga88c6891ab226690c883f3396611d8dc9" name="ga88c6891ab226690c883f3396611d8dc9"></a>
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>
6069 <div class="memdoc" id="rpipc817e297efc1c7af5a54">
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];
6075 <p id="rpipbcb7a4a8b4003d193331"> The section attribute is <code id="rpipf679855e81d7d4c69fdb">.after_data.<group></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">
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>
6091 <a id="ga2d0b8227d9981a22692d5ef6aa1a386f" name="ga2d0b8227d9981a22692d5ef6aa1a386f"></a>
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>
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>
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>
6119 <div class="memdoc" id="rpip7efb40a804422e25ee56">
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>
6126 <a id="ga1f7eafa00361375ec15412f634ad67b7" name="ga1f7eafa00361375ec15412f634ad67b7"></a>
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>
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>
6146 <tr id="rpip9b35be891afb0870bbfc">
6147 <td id="rpip877d1d5dc5e2302f4e38"></td>
6148 <td id="rpip27196446185404268295">)</td>
6149 <td id="rpipb705bc308b535556b3ba"></td>
6150 <td id="rpip00741954db23be4dbdc8"></td>
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) && !__builtin_constant_p(a), \</div>
6160 <div class="line" id="rpipe3f74e2379de07dc344d">(__builtin_popcount(b) >= 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>
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">
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>
6183 <tr id="rpipb27e2c9141b6bb5fff74">
6184 <td class="paramname" id="rpip18a6177d63bf21b234cc">b</td>
6185 <td id="rpipe98d5961f6bf7b4b8086">the second operand </td>
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>
6196 <a id="ga23eadd8d1642fb8fe4600708c36e116a" name="ga23eadd8d1642fb8fe4600708c36e116a"></a>
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>
6209 <div class="memdoc" id="rpip8b7b45c3973b6a151140">
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) {
6217 <a id="ga0f27b5a18b17ef82ff103825a3b7322d" name="ga0f27b5a18b17ef82ff103825a3b7322d"></a>
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>
6235 <div class="memdoc" id="rpip32d6f7539c586f1dc6ce">
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;
6241 <p id="rpipcb6ab5f9e5a550bed289"> The section attribute is <code id="rpip3ed547a113f79561c749">.flashdata.<group></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">
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>
6257 <a id="ga7a3538bc029b0e60c2f308008fc095c6" name="ga7a3538bc029b0e60c2f308008fc095c6"></a>
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>
6270 <div class="memdoc" id="rpip644c8c006df05419bef1">
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) {
6278 <a id="gad9ab05c9a8f0ab455a5e11773d610787" name="gad9ab05c9a8f0ab455a5e11773d610787"></a>
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>
6296 <div class="memdoc" id="rpip56e57c76a5b14c61baac">
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) {
6303 <p id="rpip60df18480976e4809906"> The function is placed in the <code id="rpip79e81d7dac17f5e890a5">.time_critical.<func_name></code> linker section </p>
6307 <a id="ga98947648f4fd8b22f9cccc4c2f0d64fd" name="ga98947648f4fd8b22f9cccc4c2f0d64fd"></a>
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>
6325 <div class="memdoc" id="rpip1ae2816c8bc574446915">
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];
6331 <p id="rpip6be3300124901f0f5e96"> The section attribute is <code id="rpipf13c7173c363e45d84b7">.time_critical.<group></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">
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>
6347 <a id="ga7ea262771f71b22e4e720bc2ca31d936" name="ga7ea262771f71b22e4e720bc2ca31d936"></a>
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>
6365 <div class="memdoc" id="rpip0be6a74ac24d8c22f036">
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) {
6372 <p id="rpip8cdefeef5eae6c72c52a"> The function is placed in the <code id="rpip10f8c9993a909ea05631">.time_critical.<func_name></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>
6379 <a id="gad8b78e068558946081789ce1935528bf" name="gad8b78e068558946081789ce1935528bf"></a>
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>
6397 <div class="memdoc" id="rpipb7ccca93d97ac533c40e">
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;
6404 <p id="rpip3c6676ec3bce1609f6e7"> The section attribute is <code id="rpip7f86d3fa407d089aa563">.scratch_x.<group></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">
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>
6420 <a id="ga699cabffc3896ece6ec696e841146b3c" name="ga699cabffc3896ece6ec696e841146b3c"></a>
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>
6438 <div class="memdoc" id="rpip6c3526cddc079dde5d63">
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;
6445 <p id="rpip53de9e5a606500e9c636"> The section attribute is <code id="rpip12901f3c5d6a03e1cfec">.scratch_y.<group></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">
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>
6461 <a id="ga27ef91000958320e25ff481d16786ebf" name="ga27ef91000958320e25ff481d16786ebf"></a>
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>
6479 <div class="memdoc" id="rpipfff93365b208768479ab">
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) {
6486 <p id="rpip3a475db7e2d33729c2cb"> The function is placed in the <code id="rpip7100dcb7d1c801b6a335">.time_critical.<func_name></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>
6493 <a id="ga118d39a4ebb425b8bef29e7a1f8731c2" name="ga118d39a4ebb425b8bef29e7a1f8731c2"></a>
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>
6511 <div class="memdoc" id="rpipc0c456357bfefca82e1c">
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);
6518 <p id="rpipe3c76ce6b71768a3a5d1"> The section attribute is <code id="rpip06fb5a8456ef4aea4c90">.uninitialized_data.<group></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">
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>
6534 <a id="ga8b4ea86124befde17d69926b4f938c07" name="ga8b4ea86124befde17d69926b4f938c07"></a>
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>
6552 <div class="memdoc" id="rpip8f2090b64d3efbdda002">
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>
6562 <h3 id="rpip14e9a416348dd6951167">
6563 <a class="anchor" href="#rpip14e9a416348dd6951167"></a>Function Documentation</h3>
6564 <a id="gac01ec0ae597f7572f8e298fa4f48c8e6" name="gac01ec0ae597f7572f8e298fa4f48c8e6"></a>
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>
6584 <td class="mlabels-right" id="rpip6ae901ff4fca54736ea8">
6585 <span class="mlabels" id="rpip544236f89b2833eebc7c"><span class="mlabel" id="rpip23328acb0dfa449c3313">static</span></span> </td>
6589 <div class="memdoc" id="rpip8b96992f0ca86d73a97b">
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
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>
6601 <a id="ga8a35e9582b94259dc1c36938949f7ca4" name="ga8a35e9582b94259dc1c36938949f7ca4"></a>
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>
6622 <td class="mlabels-right" id="rpip84b58d649de79488b997">
6623 <span class="mlabels" id="rpip21aeb928f05a24e62192"><span class="mlabel" id="rpip6b56e9b89dff250c67d4">static</span></span> </td>
6627 <div class="memdoc" id="rpip861b89123550a17429d6">
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>
6635 <a id="ga63f9737a1242323cc33b89d06ee8d935" name="ga63f9737a1242323cc33b89d06ee8d935"></a>
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>
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>
6660 <tr id="rpip0c52bf6ac6395e952364">
6661 <td id="rpipe04064c12ed6544a8941"></td>
6662 <td id="rpip7c607c989bbc254a4f2a">)</td>
6663 <td id="rpip843949c1d65d5ac7c237"></td>
6664 <td id="rpipbd55670ff57de8d097f2"></td>
6668 <td class="mlabels-right" id="rpip7e3965315efe470fb72e">
6669 <span class="mlabels" id="rpipc11e9d39654295507c54"><span class="mlabel" id="rpip439c6bc4f1b075e34999">static</span></span> </td>
6673 <div class="memdoc" id="rpip741fbbd9fc4cd0666fc2">
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">
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>
6685 <tr id="rpip01c527d6990487b90bb0">
6686 <td class="paramname" id="rpip440a021d21b813e3ce95">b</td>
6687 <td id="rpip3b76b2811636fa9bab14">the second operand </td>
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>
6698 <a id="ga49c4fc3b5d3fbe9f2f6f7bc500b9db4f" name="ga49c4fc3b5d3fbe9f2f6f7bc500b9db4f"></a>
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>
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>
6724 <div class="memdoc" id="rpip831f02e46a8297bfc854">
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">
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>
6745 <a id="ga974b4945ae0ac8892717cb5f05e83c53" name="ga974b4945ae0ac8892717cb5f05e83c53"></a>
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>
6766 <td class="mlabels-right" id="rpipeca3b62e6143c4f213a3">
6767 <span class="mlabels" id="rpipf281d7f5a80bd5f0b02d"><span class="mlabel" id="rpip4a91d2a9524831b65f3a">static</span></span> </td>
6771 <div class="memdoc" id="rpip10ad49049b865f5aed25">
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>
6779 <a id="gad1f1a1dc0581a11b597453f148106393" name="gad1f1a1dc0581a11b597453f148106393"></a>
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>
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>
6801 <tr id="rpip51de9dfbaad625b77449">
6802 <td id="rpip8410ff7df8b2d294842a"></td>
6803 <td id="rpip1fb5225a8bbc19748364">)</td>
6804 <td id="rpipb0410a23a33b958bb91b"></td>
6805 <td id="rpipe08a4515373ff6c48e90"></td>
6809 <div class="memdoc" id="rpipee9799fcc32955df11c1">
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">
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>
6821 <tr id="rpip5c85c4d138a1d26c5385">
6822 <td class="paramname" id="rpipbafbf88b5348b868320c">...</td>
6823 <td id="rpip0d11ce6735bffdfd94c5">printf-like arguments </td>
6832 <a id="ga29ba8f40ca0c961e04c7380a3665e612" name="ga29ba8f40ca0c961e04c7380a3665e612"></a>
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>
6850 <div class="memdoc" id="rpipc0ff16c31f9947cb8274">
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>
6859 <a id="ga2f16fe03135e5a5cb9f098a538a8671a" name="ga2f16fe03135e5a5cb9f098a538a8671a"></a>
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>
6877 <div class="memdoc" id="rpipa566c52da636a4c12ed4">
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>
6885 <a id="gadcb55b507bb15fbe5a71bcb2f222b6e2" name="gadcb55b507bb15fbe5a71bcb2f222b6e2"></a>
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>
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>
6911 <div class="memdoc" id="rpip09edba2fbeda3183e5a3">
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>
6919 <a id="gaf04e1c7eb32935a422d975abdec4f4b0" name="gaf04e1c7eb32935a422d975abdec4f4b0"></a>
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>
6940 <td class="mlabels-right" id="rpip15a7b7f485c2d341554c">
6941 <span class="mlabels" id="rpipd8d7be8653b0dd90efe2"><span class="mlabel" id="rpip84255a4245d87cffb077">static</span></span> </td>
6945 <div class="memdoc" id="rpipd4fe6faee3928fd60e97">
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
7063 <a name="details" id="details"></a>
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>
7072 <h3 id="rpip2fc272e282686cb4da01">
7073 <a class="anchor" href="#rpip2fc272e282686cb4da01"></a>Function Documentation</h3>
7074 <a id="ga9b10b3bc1a4750fcb0e691566bc868e8" name="ga9b10b3bc1a4750fcb0e691566bc868e8"></a>
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>
7091 <div class="memdoc" id="rpipc9b545eeacb2da741b20">
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">
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>
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>
7111 <a id="gae3944ee24af8163a9538f01cda3e28df" name="gae3944ee24af8163a9538f01cda3e28df"></a>
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>
7130 <div class="memdoc" id="rpipcec1a8db5e5f08d33b6e">
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>
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">
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>
7154 <a id="ga0e604311fb226dae91ff4eb17a19d67a" name="ga0e604311fb226dae91ff4eb17a19d67a"></a>
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>
7172 <div class="memdoc" id="rpip5f66cb27614b48c9a965">
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>
7185 <a id="ga4b010bf88f65fc5d38a29d5538fa80e1" name="ga4b010bf88f65fc5d38a29d5538fa80e1"></a>
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>
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>
7207 <tr id="rpip9c07ec40b5e771ca60d5">
7208 <td id="rpip06d94f87a81477a1437c"></td>
7209 <td id="rpipa25810b276000b636063">)</td>
7210 <td id="rpipa2f9d641c25e502ee5fc"></td>
7211 <td id="rpip6319acb74c64e4264874"></td>
7215 <div class="memdoc" id="rpip7a7715e92789cbe12c3e">
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">
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>
7226 <tr id="rpipfaeb53c94c9f3aafb135">
7227 <td class="paramname" id="rpip8783a1f16b16e4768042">param</td>
7228 <td id="rpip2898587439fd111a8b01">Pointer to pass to the callback </td>
7237 <a id="ga826d33ec05c3e33dbddf0cb09e329562" name="ga826d33ec05c3e33dbddf0cb09e329562"></a>
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>
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>
7260 <tr id="rpipaf070da368a843216397">
7261 <td id="rpip63fafeb325393f18e4c5"></td>
7262 <td id="rpip0cd89133aa26f8c441b7">)</td>
7263 <td id="rpipd3b488c2733f16d4e4f7"></td>
7264 <td id="rpipf6f84e7fefa78218cc1b"></td>
7268 <div class="memdoc" id="rpip45757c12717b51f2af58">
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>
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">
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>
7285 <tr id="rpipc75e3c1a01fd66276772">
7286 <td class="paramname" id="rpip5e913aa2af76ab639c93">enabled</td>
7287 <td id="rpip57395325b874089eaa10">true to add, false to remove </td>
7296 <a id="gaba86bf2cb6b86a9078cd94dcf47b1915" name="gaba86bf2cb6b86a9078cd94dcf47b1915"></a>
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>
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>
7319 <tr id="rpip3fc5b698e43efc72d630">
7320 <td id="rpipbcee9a02b3794753f275"></td>
7321 <td id="rpipd5b156f33cb80cda4231">)</td>
7322 <td id="rpipc5ae5b2629a73d154531"></td>
7323 <td id="rpip8c9f9c42d4b045feaea1"></td>
7327 <div class="memdoc" id="rpipbe70a92e1a2d00ec7c37">
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>
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">
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>
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>
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>
7362 <p id="rpip455c4b8a4ae43d2bf0e1">Experimental support for stdout using RAM semihosting.
7363 <a href="#gadde63252061cb2d67235" id="rpipacd5b0ed2ef3007b9a57" data-adjusted="true">More...</a></p>
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>
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>
7375 <a name="details" id="gadde63252061cb2d67235"></a>
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>
7384 <h4 id="rpip8261797ace022753abfc">
7385 <a class="anchor" href="#rpip8261797ace022753abfc"></a>Function Documentation</h4>
7386 <a id="ga457f5c331541292ce4bf48c9341170c6" name="ga457f5c331541292ce4bf48c9341170c6"></a>
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>
7403 <div class="memdoc" id="rpip006d2ea1f389d671211c">
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>
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>
7424 <p id="rpipc8333b21b01a4f930d44">Support for stdin/stdout using UART.
7425 <a href="#ga586917b7e3b2b26bc116" id="rpip9a20e32346fe0e7c004b" data-adjusted="true">More...</a></p>
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>
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>
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>
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>
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>
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>
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>
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>
7455 <a name="details" id="ga586917b7e3b2b26bc116"></a>
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>
7464 <h4 id="rpipfcdace5d9b38e8479e59">
7465 <a class="anchor" href="#rpipfcdace5d9b38e8479e59"></a>Function Documentation</h4>
7466 <a id="ga77fc28ecaf14439cdec18ac5a96d50f4" name="ga77fc28ecaf14439cdec18ac5a96d50f4"></a>
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>
7483 <div class="memdoc" id="rpip63108f0b8071cd7b01ca">
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>
7490 <a id="gafcc9bb58b1eb66b8571a507589f66fc2" name="gafcc9bb58b1eb66b8571a507589f66fc2"></a>
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>
7508 <div class="memdoc" id="rpip9d61e83c2588abc78e91">
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>
7522 <a id="ga2335d6c842d8363cf3df6b215f881919" name="ga2335d6c842d8363cf3df6b215f881919"></a>
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>
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>
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>
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>
7558 <tr id="rpipf5da14d12413b9a453c4">
7559 <td id="rpip802c450a975e0d6cd72c"></td>
7560 <td id="rpip7cd61683e483b39e47a2">)</td>
7561 <td id="rpip9c84e4902404794f5679"></td>
7562 <td id="rpip57b1200a7046abff5c12"></td>
7566 <div class="memdoc" id="rpip1f237c127cc5f664d686">
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">
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>
7577 <tr id="rpip56bb0198d275eb19e9c0">
7578 <td class="paramname" id="rpipc4dcc7829acae1bd3dee">baud_rate</td>
7579 <td id="rpip13468f6a5f67dbfaab76">the baud rate in Hz </td>
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>
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>
7596 <a id="ga265eeb67b5f1f4720dbe863e34d6acc4" name="ga265eeb67b5f1f4720dbe863e34d6acc4"></a>
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>
7614 <div class="memdoc" id="rpipdbe0c29d436a5fa792fa">
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>
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>
7629 <p id="rpipa7465f3cf1e44d460c07">Support for stdin/stdout over USB serial (CDC)
7630 <a href="#ga2652d2ee6d47c681ebf6" id="rpipf2a1d2db377e9e073f31" data-adjusted="true">More...</a></p>
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>
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>
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>
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>
7648 <a name="details" id="ga2652d2ee6d47c681ebf6"></a>
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>
7659 <h4 id="rpip3e668ef96619755ff234">
7660 <a class="anchor" href="#rpip3e668ef96619755ff234"></a>Function Documentation</h4>
7661 <a id="ga86edc8e3a477bb388ae73d92a3e87824" name="ga86edc8e3a477bb388ae73d92a3e87824"></a>
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>
7678 <div class="memdoc" id="rpipdbdc1c55d11956bfee27">
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>
7686 <a id="gab87bcfa3f24e5a3fe92a944f9eecc460" name="gab87bcfa3f24e5a3fe92a944f9eecc460"></a>
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>
7704 <div class="memdoc" id="rpipf26d1f5241b84693150c">
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>
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>
7725 <p id="rpip0a5dd39d0d14aca84719">Standard link step providing the basics for creating a runnable binary.
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>
7744 <div class="legal-inner">
7745 <p id="copyright">Raspberry Pi documentation is copyright © 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>
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;
7759 vertical-align: baseline;
7764 font-family: "Roboto", sans-serif;
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;
7777 #__rptl-footer .__rptl-footer-container {
7781 padding-right: 16px;
7785 @media (min-width: 800px) {
7786 #__rptl-footer .__rptl-footer-container {
7790 @media (min-width: 1200px) {
7791 #__rptl-footer .__rptl-footer-container {
7795 #__rptl-footer .__rptl-footer-row {
7799 #__rptl-footer .__rptl-footer-column {
7804 @media (min-width: 640px) {
7805 #__rptl-footer .__rptl-footer-column {
7809 @media (min-width: 1024px) {
7810 #__rptl-footer .__rptl-footer-column {
7814 #__rptl-footer .__rptl-footer-heading {
7819 #__rptl-footer .__rptl-footer-list {
7821 margin-bottom: 32px;
7823 #__rptl-footer .__rptl-footer-item {
7826 #__rptl-footer .__rptl-footer-icon {
7827 margin-right: 0.5em;
7830 #__rptl-footer .__rptl-footer-link, #__rptl-footer .__rptl-footer-link--with-icon {
7833 text-decoration: none;
7835 #__rptl-footer .__rptl-footer-link--with-icon {
7836 display: inline-flex;
7837 align-items: center;
7839 #__rptl-footer .__rptl-footer-link:hover, #__rptl-footer .__rptl-footer-link--with-icon:hover {
7840 text-decoration: underline;
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
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
7971 <!-- Script for the TOC toggle -->
7972 <script src="/documentation/scripts/nav.js?ver=1703167119" type="text/javascript"></script>
7974 <!-- TOCify scripts -->
7975 <script src="{{jquery}}"></script>
7976 <script src="{{jquery-ui}}"></script>
7977 <script src="{{jquery-tocify}}"></script>
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>
7983 <!-- Some custom handling for whitepapers -->
7984 <script src="/documentation/scripts/whitepaper.js?ver=1703167119"></script>
7987 function hasher(text, element) {
7988 return text.toLowerCase().replace(/ /g, "-").replace(/\./g, "-").replace(/[^-\w]/g, "").replace(/-+/g, "-");
7991 function waitForElementToDisplay(selector, checkFrequencyInMs, timeoutInMs) {
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);
8002 setTimeout(function () {
8003 if (timeoutInMs && Date.now() - startTimeInMs > timeoutInMs)
8006 }, checkFrequencyInMs);
8010 console.log("there was an error in scrollToElement:");
8015 function scrollToElement(selector) {
8017 // if found, scroll to that id hash
8018 console.log("Scrolling to ", selector);
8019 var target = document.querySelector(selector);
8021 var bbox = target.getBoundingClientRect();
8022 var myid = target.getAttribute("id");
8029 console.log("Target not found :(");
8032 console.log("there was an error in scrollToElement:");
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);
8050 var contents = document.getElementById("contents");
8051 contents.addEventListener('mouseenter', e => {
8052 contents.style.overflowY = 'auto';
8055 contents.addEventListener('mouseleave', e => {
8056 contents.style.overflowY = 'hidden';
8060 <script src="https://cdn.jsdelivr.net/npm/@docsearch/js@3"></script>
8061 <script type="text/javascript">
8063 var lvl0 = document.querySelector('#tab-menu li.selected'),
8064 lvl1 = document.querySelector('#content h1'),
8065 searchParameters = { optionalFilters: [] };
8068 searchParameters.optionalFilters.push("hierarchy.lvl0:" + lvl0.innerText);
8071 searchParameters.optionalFilters.push("hierarchy.lvl1:" + lvl1.innerText + "<score=2>");
8075 appId: 'IHWGNTJ1NP',
8076 apiKey: '94f8e1d1619229399fe8b33bcf750dfd',
8077 indexName: 'raspberrypi',
8078 container: '#docsearch',
8079 searchParameters: searchParameters