waveshare_rp2040_zero/lib.rs
1#![no_std]
2
3pub extern crate rp2040_hal as hal;
4
5#[cfg(feature = "rt")]
6extern crate cortex_m_rt;
7#[cfg(feature = "rt")]
8pub use hal::entry;
9
10/// The linker will place this boot block at the start of our program image. We
11/// need this to help the ROM bootloader get our code up and running.
12#[cfg(feature = "boot2")]
13#[link_section = ".boot2"]
14#[no_mangle]
15#[used]
16pub static BOOT2_FIRMWARE: [u8; 256] = rp2040_boot2::BOOT_LOADER_W25Q080;
17
18pub use hal::pac;
19
20hal::bsp_pins!(
21 /// GPIO 0 supports following functions:
22 ///
23 /// | Function | Alias with applied function |
24 /// |--------------|-----------------------------|
25 /// | `SPI0 RX` | [crate::Gp0Spi0Rx] |
26 /// | `UART0 TX` | [crate::Gp0Uart0Tx] |
27 /// | `I2C0 SDA` | [crate::Gp0I2C0Sda] |
28 /// | `PWM0 A` | [crate::Gp0Pwm0A] |
29 /// | `PIO0` | [crate::Gp0Pio0] |
30 /// | `PIO1` | [crate::Gp0Pio1] |
31 Gpio0 {
32 name: gp0,
33 aliases: {
34 /// UART Function alias for pin [crate::Pins::gpio0].
35 FunctionUart, PullNone: Gp0Uart0Tx,
36 /// SPI Function alias for pin [crate::Pins::gpio0].
37 FunctionSpi, PullNone: Gp0Spi0Rx,
38 /// I2C Function alias for pin [crate::Pins::gpio0].
39 FunctionI2C, PullUp: Gp0I2C0Sda,
40 /// PWM Function alias for pin [crate::Pins::gpio0].
41 FunctionPwm, PullNone: Gp0Pwm0A,
42 /// PIO0 Function alias for pin [crate::Pins::gpio0].
43 FunctionPio0, PullNone: Gp0Pio0,
44 /// PIO1 Function alias for pin [crate::Pins::gpio0].
45 FunctionPio1, PullNone: Gp0Pio1
46 }
47 },
48
49 /// GPIO 1 supports following functions:
50 ///
51 /// | Function | Alias with applied function |
52 /// |--------------|-----------------------------|
53 /// | `SPI0 CSn` | [crate::Gp1Spi0Csn] |
54 /// | `UART0 RX` | [crate::Gp1Uart0Rx] |
55 /// | `I2C0 SCL` | [crate::Gp1I2C0Scl] |
56 /// | `PWM0 B` | [crate::Gp1Pwm0B] |
57 /// | `PIO0` | [crate::Gp1Pio0] |
58 /// | `PIO1` | [crate::Gp1Pio1] |
59 Gpio1 {
60 name: gp1,
61 aliases: {
62 /// UART Function alias for pin [crate::Pins::gpio1].
63 FunctionUart, PullNone: Gp1Uart0Rx,
64 /// SPI Function alias for pin [crate::Pins::gpio1].
65 FunctionSpi, PullNone: Gp1Spi0Csn,
66 /// I2C Function alias for pin [crate::Pins::gpio1].
67 FunctionI2C, PullUp: Gp1I2C0Scl,
68 /// PWM Function alias for pin [crate::Pins::gpio1].
69 FunctionPwm, PullNone: Gp1Pwm0B,
70 /// PIO0 Function alias for pin [crate::Pins::gpio1].
71 FunctionPio0, PullNone: Gp1Pio0,
72 /// PIO1 Function alias for pin [crate::Pins::gpio1].
73 FunctionPio1, PullNone: Gp1Pio1
74 }
75 },
76
77 /// GPIO 2 supports following functions:
78 ///
79 /// | Function | Alias with applied function |
80 /// |--------------|-----------------------------|
81 /// | `SPI0 SCK` | [crate::Gp2Spi0Sck] |
82 /// | `UART0 CTS` | [crate::Gp2Uart0Cts] |
83 /// | `I2C1 SDA` | [crate::Gp2I2C1Sda] |
84 /// | `PWM1 A` | [crate::Gp2Pwm1A] |
85 /// | `PIO0` | [crate::Gp2Pio0] |
86 /// | `PIO1` | [crate::Gp2Pio1] |
87 Gpio2 {
88 name: gp2,
89 aliases: {
90 /// UART Function alias for pin [crate::Pins::gpio2].
91 FunctionUart, PullNone: Gp2Uart0Cts,
92 /// SPI Function alias for pin [crate::Pins::gpio2].
93 FunctionSpi, PullNone: Gp2Spi0Sck,
94 /// I2C Function alias for pin [crate::Pins::gpio2].
95 FunctionI2C, PullUp: Gp2I2C1Sda,
96 /// PWM Function alias for pin [crate::Pins::gpio2].
97 FunctionPwm, PullNone: Gp2Pwm1A,
98 /// PIO0 Function alias for pin [crate::Pins::gpio2].
99 FunctionPio0, PullNone: Gp2Pio0,
100 /// PIO1 Function alias for pin [crate::Pins::gpio2].
101 FunctionPio1, PullNone: Gp2Pio1
102 }
103 },
104
105 /// GPIO 3 supports following functions:
106 ///
107 /// | Function | Alias with applied function |
108 /// |--------------|-----------------------------|
109 /// | `SPI0 TX` | [crate::Gp3Spi0Tx] |
110 /// | `UART0 RTS` | [crate::Gp3Uart0Rts] |
111 /// | `I2C1 SCL` | [crate::Gp3I2C1Scl] |
112 /// | `PWM1 B` | [crate::Gp3Pwm1B] |
113 /// | `PIO0` | [crate::Gp3Pio0] |
114 /// | `PIO1` | [crate::Gp3Pio1] |
115 Gpio3 {
116 name: gp3,
117 aliases: {
118 /// UART Function alias for pin [crate::Pins::gpio3].
119 FunctionUart, PullNone: Gp3Uart0Rts,
120 /// SPI Function alias for pin [crate::Pins::gpio3].
121 FunctionSpi, PullNone: Gp3Spi0Tx,
122 /// I2C Function alias for pin [crate::Pins::gpio3].
123 FunctionI2C, PullUp: Gp3I2C1Scl,
124 /// PWM Function alias for pin [crate::Pins::gpio3].
125 FunctionPwm, PullNone: Gp3Pwm1B,
126 /// PIO0 Function alias for pin [crate::Pins::gpio3].
127 FunctionPio0, PullNone: Gp3Pio0,
128 /// PIO1 Function alias for pin [crate::Pins::gpio3].
129 FunctionPio1, PullNone: Gp3Pio1
130 }
131 },
132
133 /// GPIO 4 supports following functions:
134 ///
135 /// | Function | Alias with applied function |
136 /// |--------------|-----------------------------|
137 /// | `SPI0 RX` | [crate::Gp4Spi0Rx] |
138 /// | `UART1 TX` | [crate::Gp4Uart1Tx] |
139 /// | `I2C0 SDA` | [crate::Gp4I2C0Sda] |
140 /// | `PWM2 A` | [crate::Gp4Pwm2A] |
141 /// | `PIO0` | [crate::Gp4Pio0] |
142 /// | `PIO1` | [crate::Gp4Pio1] |
143 Gpio4 {
144 name: gp4,
145 aliases: {
146 /// UART Function alias for pin [crate::Pins::gpio4].
147 FunctionUart, PullNone: Gp4Uart1Tx,
148 /// SPI Function alias for pin [crate::Pins::gpio4].
149 FunctionSpi, PullNone: Gp4Spi0Rx,
150 /// I2C Function alias for pin [crate::Pins::gpio4].
151 FunctionI2C, PullUp: Gp4I2C0Sda,
152 /// PWM Function alias for pin [crate::Pins::gpio4].
153 FunctionPwm, PullNone: Gp4Pwm2A,
154 /// PIO0 Function alias for pin [crate::Pins::gpio4].
155 FunctionPio0, PullNone: Gp4Pio0,
156 /// PIO1 Function alias for pin [crate::Pins::gpio4].
157 FunctionPio1, PullNone: Gp4Pio1
158 }
159 },
160
161 /// GPIO 5 supports following functions:
162 ///
163 /// | Function | Alias with applied function |
164 /// |--------------|-----------------------------|
165 /// | `SPI0 CSn` | [crate::Gp5Spi0Csn] |
166 /// | `UART1 RX` | [crate::Gp5Uart1Rx] |
167 /// | `I2C0 SCL` | [crate::Gp5I2C0Scl] |
168 /// | `PWM2 B` | [crate::Gp5Pwm2B] |
169 /// | `PIO0` | [crate::Gp5Pio0] |
170 /// | `PIO1` | [crate::Gp5Pio1] |
171 Gpio5 {
172 name: gp5,
173 aliases: {
174 /// UART Function alias for pin [crate::Pins::gpio5].
175 FunctionUart, PullNone: Gp5Uart1Rx,
176 /// SPI Function alias for pin [crate::Pins::gpio5].
177 FunctionSpi, PullNone: Gp5Spi0Csn,
178 /// I2C Function alias for pin [crate::Pins::gpio5].
179 FunctionI2C, PullUp: Gp5I2C0Scl,
180 /// PWM Function alias for pin [crate::Pins::gpio5].
181 FunctionPwm, PullNone: Gp5Pwm2B,
182 /// PIO0 Function alias for pin [crate::Pins::gpio5].
183 FunctionPio0, PullNone: Gp5Pio0,
184 /// PIO1 Function alias for pin [crate::Pins::gpio5].
185 FunctionPio1, PullNone: Gp5Pio1
186 }
187 },
188
189 /// GPIO 6 supports following functions:
190 ///
191 /// | Function | Alias with applied function |
192 /// |--------------|-----------------------------|
193 /// | `SPI0 SCK` | [crate::Gp6Spi0Sck] |
194 /// | `UART1 CTS` | [crate::Gp6Uart1Cts] |
195 /// | `I2C1 SDA` | [crate::Gp6I2C1Sda] |
196 /// | `PWM3 A` | [crate::Gp6Pwm3A] |
197 /// | `PIO0` | [crate::Gp6Pio0] |
198 /// | `PIO1` | [crate::Gp6Pio1] |
199 Gpio6 {
200 name: gp6,
201 aliases: {
202 /// UART Function alias for pin [crate::Pins::gpio6].
203 FunctionUart, PullNone: Gp6Uart1Cts,
204 /// SPI Function alias for pin [crate::Pins::gpio6].
205 FunctionSpi, PullNone: Gp6Spi0Sck,
206 /// I2C Function alias for pin [crate::Pins::gpio6].
207 FunctionI2C, PullUp: Gp6I2C1Sda,
208 /// PWM Function alias for pin [crate::Pins::gpio6].
209 FunctionPwm, PullNone: Gp6Pwm3A,
210 /// PIO0 Function alias for pin [crate::Pins::gpio6].
211 FunctionPio0, PullNone: Gp6Pio0,
212 /// PIO1 Function alias for pin [crate::Pins::gpio6].
213 FunctionPio1, PullNone: Gp6Pio1
214 }
215 },
216
217 /// GPIO 7 supports following functions:
218 ///
219 /// | Function | Alias with applied function |
220 /// |--------------|-----------------------------|
221 /// | `SPI0 TX` | [crate::Gp7Spi0Tx] |
222 /// | `UART1 RTS` | [crate::Gp7Uart1Rts] |
223 /// | `I2C1 SCL` | [crate::Gp7I2C1Scl] |
224 /// | `PWM3 B` | [crate::Gp7Pwm3B] |
225 /// | `PIO0` | [crate::Gp7Pio0] |
226 /// | `PIO1` | [crate::Gp7Pio1] |
227 Gpio7 {
228 name: gp7,
229 aliases: {
230 /// UART Function alias for pin [crate::Pins::gpio7].
231 FunctionUart, PullNone: Gp7Uart1Rts,
232 /// SPI Function alias for pin [crate::Pins::gpio7].
233 FunctionSpi, PullNone: Gp7Spi0Tx,
234 /// I2C Function alias for pin [crate::Pins::gpio7].
235 FunctionI2C, PullUp: Gp7I2C1Scl,
236 /// PWM Function alias for pin [crate::Pins::gpio7].
237 FunctionPwm, PullNone: Gp7Pwm3B,
238 /// PIO0 Function alias for pin [crate::Pins::gpio7].
239 FunctionPio0, PullNone: Gp7Pio0,
240 /// PIO1 Function alias for pin [crate::Pins::gpio7].
241 FunctionPio1, PullNone: Gp7Pio1
242 }
243 },
244
245 /// GPIO 8 supports following functions:
246 ///
247 /// | Function | Alias with applied function |
248 /// |--------------|-----------------------------|
249 /// | `SPI1 RX` | [crate::Gp8Spi1Rx] |
250 /// | `UART1 TX` | [crate::Gp8Uart1Tx] |
251 /// | `I2C0 SDA` | [crate::Gp8I2C0Sda] |
252 /// | `PWM4 A` | [crate::Gp8Pwm4A] |
253 /// | `PIO0` | [crate::Gp8Pio0] |
254 /// | `PIO1` | [crate::Gp8Pio1] |
255 Gpio8 {
256 name: gp8,
257 aliases: {
258 /// UART Function alias for pin [crate::Pins::gpio8].
259 FunctionUart, PullNone: Gp8Uart1Tx,
260 /// SPI Function alias for pin [crate::Pins::gpio8].
261 FunctionSpi, PullNone: Gp8Spi1Rx,
262 /// I2C Function alias for pin [crate::Pins::gpio8].
263 FunctionI2C, PullUp: Gp8I2C0Sda,
264 /// PWM Function alias for pin [crate::Pins::gpio8].
265 FunctionPwm, PullNone: Gp8Pwm4A,
266 /// PIO0 Function alias for pin [crate::Pins::gpio8].
267 FunctionPio0, PullNone: Gp8Pio0,
268 /// PIO1 Function alias for pin [crate::Pins::gpio8].
269 FunctionPio1, PullNone: Gp8Pio1
270 }
271 },
272
273 /// GPIO 9 supports following functions:
274 ///
275 /// | Function | Alias with applied function |
276 /// |--------------|-----------------------------|
277 /// | `SPI1 CSn` | [crate::Gp9Spi1Csn] |
278 /// | `UART1 RX` | [crate::Gp9Uart1Rx] |
279 /// | `I2C0 SCL` | [crate::Gp9I2C0Scl] |
280 /// | `PWM4 B` | [crate::Gp9Pwm4B] |
281 /// | `PIO0` | [crate::Gp9Pio0] |
282 /// | `PIO1` | [crate::Gp9Pio1] |
283 Gpio9 {
284 name: gp9,
285 aliases: {
286 /// UART Function alias for pin [crate::Pins::gpio9].
287 FunctionUart, PullNone: Gp9Uart1Rx,
288 /// SPI Function alias for pin [crate::Pins::gpio9].
289 FunctionSpi, PullNone: Gp9Spi1Csn,
290 /// I2C Function alias for pin [crate::Pins::gpio9].
291 FunctionI2C, PullUp: Gp9I2C0Scl,
292 /// PWM Function alias for pin [crate::Pins::gpio9].
293 FunctionPwm, PullNone: Gp9Pwm4B,
294 /// PIO0 Function alias for pin [crate::Pins::gpio9].
295 FunctionPio0, PullNone: Gp9Pio0,
296 /// PIO1 Function alias for pin [crate::Pins::gpio9].
297 FunctionPio1, PullNone: Gp9Pio1
298 }
299 },
300
301 /// GPIO 10 supports following functions:
302 ///
303 /// | Function | Alias with applied function |
304 /// |--------------|-----------------------------|
305 /// | `SPI1 SCK` | [crate::Gp10Spi1Sck] |
306 /// | `UART1 CTS` | [crate::Gp10Uart1Cts] |
307 /// | `I2C1 SDA` | [crate::Gp10I2C1Sda] |
308 /// | `PWM5 A` | [crate::Gp10Pwm5A] |
309 /// | `PIO0` | [crate::Gp10Pio0] |
310 /// | `PIO1` | [crate::Gp10Pio1] |
311 Gpio10 {
312 name: gp10,
313 aliases: {
314 /// UART Function alias for pin [crate::Pins::gpio10].
315 FunctionUart, PullNone: Gp10Uart1Cts,
316 /// SPI Function alias for pin [crate::Pins::gpio10].
317 FunctionSpi, PullNone: Gp10Spi1Sck,
318 /// I2C Function alias for pin [crate::Pins::gpio10].
319 FunctionI2C, PullUp: Gp10I2C1Sda,
320 /// PWM Function alias for pin [crate::Pins::gpio10].
321 FunctionPwm, PullNone: Gp10Pwm5A,
322 /// PIO0 Function alias for pin [crate::Pins::gpio10].
323 FunctionPio0, PullNone: Gp10Pio0,
324 /// PIO1 Function alias for pin [crate::Pins::gpio10].
325 FunctionPio1, PullNone: Gp10Pio1
326 }
327 },
328
329 /// GPIO 11 supports following functions:
330 ///
331 /// | Function | Alias with applied function |
332 /// |--------------|-----------------------------|
333 /// | `SPI1 TX` | [crate::Gp11Spi1Tx] |
334 /// | `UART1 RTS` | [crate::Gp11Uart1Rts] |
335 /// | `I2C1 SCL` | [crate::Gp11I2C1Scl] |
336 /// | `PWM5 B` | [crate::Gp11Pwm5B] |
337 /// | `PIO0` | [crate::Gp11Pio0] |
338 /// | `PIO1` | [crate::Gp11Pio1] |
339 Gpio11 {
340 name: gp11,
341 aliases: {
342 /// UART Function alias for pin [crate::Pins::gpio11].
343 FunctionUart, PullNone: Gp11Uart1Rts,
344 /// SPI Function alias for pin [crate::Pins::gpio11].
345 FunctionSpi, PullNone: Gp11Spi1Tx,
346 /// I2C Function alias for pin [crate::Pins::gpio11].
347 FunctionI2C, PullUp: Gp11I2C1Scl,
348 /// PWM Function alias for pin [crate::Pins::gpio11].
349 FunctionPwm, PullNone: Gp11Pwm5B,
350 /// PIO0 Function alias for pin [crate::Pins::gpio11].
351 FunctionPio0, PullNone: Gp11Pio0,
352 /// PIO1 Function alias for pin [crate::Pins::gpio11].
353 FunctionPio1, PullNone: Gp11Pio1
354 }
355 },
356
357 /// GPIO 12 supports following functions:
358 ///
359 /// | Function | Alias with applied function |
360 /// |--------------|-----------------------------|
361 /// | `SPI1 RX` | [crate::Gp12Spi1Rx] |
362 /// | `UART0 TX` | [crate::Gp12Uart0Tx] |
363 /// | `I2C0 SDA` | [crate::Gp12I2C0Sda] |
364 /// | `PWM6 A` | [crate::Gp12Pwm6A] |
365 /// | `PIO0` | [crate::Gp12Pio0] |
366 /// | `PIO1` | [crate::Gp12Pio1] |
367 Gpio12 {
368 name: gp12,
369 aliases: {
370 /// UART Function alias for pin [crate::Pins::gpio12].
371 FunctionUart, PullNone: Gp12Uart0Tx,
372 /// SPI Function alias for pin [crate::Pins::gpio12].
373 FunctionSpi, PullNone: Gp12Spi1Rx,
374 /// I2C Function alias for pin [crate::Pins::gpio12].
375 FunctionI2C, PullUp: Gp12I2C0Sda,
376 /// PWM Function alias for pin [crate::Pins::gpio12].
377 FunctionPwm, PullNone: Gp12Pwm6A,
378 /// PIO0 Function alias for pin [crate::Pins::gpio12].
379 FunctionPio0, PullNone: Gp12Pio0,
380 /// PIO1 Function alias for pin [crate::Pins::gpio12].
381 FunctionPio1, PullNone: Gp12Pio1
382 }
383 },
384
385 /// GPIO 13 supports following functions:
386 ///
387 /// | Function | Alias with applied function |
388 /// |--------------|-----------------------------|
389 /// | `SPI1 CSn` | [crate::Gp13Spi1Csn] |
390 /// | `UART0 RX` | [crate::Gp13Uart0Rx] |
391 /// | `I2C0 SCL` | [crate::Gp13I2C0Scl] |
392 /// | `PWM6 B` | [crate::Gp13Pwm6B] |
393 /// | `PIO0` | [crate::Gp13Pio0] |
394 /// | `PIO1` | [crate::Gp13Pio1] |
395 Gpio13 {
396 name: gp13,
397 aliases: {
398 /// UART Function alias for pin [crate::Pins::gpio13].
399 FunctionUart, PullNone: Gp13Uart0Rx,
400 /// SPI Function alias for pin [crate::Pins::gpio13].
401 FunctionSpi, PullNone: Gp13Spi1Csn,
402 /// I2C Function alias for pin [crate::Pins::gpio13].
403 FunctionI2C, PullUp: Gp13I2C0Scl,
404 /// PWM Function alias for pin [crate::Pins::gpio13].
405 FunctionPwm, PullNone: Gp13Pwm6B,
406 /// PIO0 Function alias for pin [crate::Pins::gpio13].
407 FunctionPio0, PullNone: Gp13Pio0,
408 /// PIO1 Function alias for pin [crate::Pins::gpio13].
409 FunctionPio1, PullNone: Gp13Pio1
410 }
411 },
412
413 /// GPIO 14 supports following functions:
414 ///
415 /// | Function | Alias with applied function |
416 /// |--------------|-----------------------------|
417 /// | `SPI1 SCK` | [crate::Gp14Spi1Sck] |
418 /// | `UART0 CTS` | [crate::Gp14Uart0Cts] |
419 /// | `I2C1 SDA` | [crate::Gp14I2C1Sda] |
420 /// | `PWM7 A` | [crate::Gp14Pwm7A] |
421 /// | `PIO0` | [crate::Gp14Pio0] |
422 /// | `PIO1` | [crate::Gp14Pio1] |
423 Gpio14 {
424 name: gp14,
425 aliases: {
426 /// UART Function alias for pin [crate::Pins::gpio14].
427 FunctionUart, PullNone: Gp14Uart0Cts,
428 /// SPI Function alias for pin [crate::Pins::gpio14].
429 FunctionSpi, PullNone: Gp14Spi1Sck,
430 /// I2C Function alias for pin [crate::Pins::gpio14].
431 FunctionI2C, PullUp: Gp14I2C1Sda,
432 /// PWM Function alias for pin [crate::Pins::gpio14].
433 FunctionPwm, PullNone: Gp14Pwm7A,
434 /// PIO0 Function alias for pin [crate::Pins::gpio14].
435 FunctionPio0, PullNone: Gp14Pio0,
436 /// PIO1 Function alias for pin [crate::Pins::gpio14].
437 FunctionPio1, PullNone: Gp14Pio1
438 }
439 },
440
441 /// GPIO 15 supports following functions:
442 ///
443 /// | Function | Alias with applied function |
444 /// |--------------|-----------------------------|
445 /// | `SPI1 TX` | [crate::Gp15Spi1Tx] |
446 /// | `UART0 RTS` | [crate::Gp15Uart0Rts] |
447 /// | `I2C1 SCL` | [crate::Gp15I2C1Scl] |
448 /// | `PWM7 B` | [crate::Gp15Pwm7B] |
449 /// | `PIO0` | [crate::Gp15Pio0] |
450 /// | `PIO1` | [crate::Gp15Pio1] |
451 Gpio15 {
452 name: gp15,
453 aliases: {
454 /// UART Function alias for pin [crate::Pins::gpio15].
455 FunctionUart, PullNone: Gp15Uart0Rts,
456 /// SPI Function alias for pin [crate::Pins::gpio15].
457 FunctionSpi, PullNone: Gp15Spi1Tx,
458 /// I2C Function alias for pin [crate::Pins::gpio15].
459 FunctionI2C, PullUp: Gp15I2C1Scl,
460 /// PWM Function alias for pin [crate::Pins::gpio15].
461 FunctionPwm, PullNone: Gp15Pwm7B,
462 /// PIO0 Function alias for pin [crate::Pins::gpio15].
463 FunctionPio0, PullNone: Gp15Pio0,
464 /// PIO1 Function alias for pin [crate::Pins::gpio15].
465 FunctionPio1, PullNone: Gp15Pio1
466 }
467 },
468
469 /// GPIO 16 is connected internally to a single Neopixel RGB LED
470 Gpio16 { name: neopixel },
471
472 /// GPIO 17 supports following functions:
473 ///
474 /// | Function | Alias with applied function |
475 /// |--------------|-----------------------------|
476 /// | `SPI0 CSn` | [crate::Gp17Spi0Csn] |
477 /// | `UART0 RX` | [crate::Gp17Uart0Rx] |
478 /// | `I2C0 SCL` | [crate::Gp17I2C0Scl] |
479 /// | `PWM0 B` | [crate::Gp17Pwm0B] |
480 /// | `PIO0` | [crate::Gp17Pio0] |
481 /// | `PIO1` | [crate::Gp17Pio1] |
482 Gpio17 {
483 name: gpio17,
484 aliases: {
485 /// UART Function alias for pin [crate::Pins::gpio17].
486 FunctionUart, PullNone: Gp17Uart0Rx,
487 /// SPI Function alias for pin [crate::Pins::gpio17].
488 FunctionSpi, PullNone: Gp17Spi0Csn,
489 /// I2C Function alias for pin [crate::Pins::gpio17].
490 FunctionI2C, PullUp: Gp17I2C0Scl,
491 /// PWM Function alias for pin [crate::Pins::gpio17].
492 FunctionPwm, PullNone: Gp17Pwm0B,
493 /// PIO0 Function alias for pin [crate::Pins::gpio17].
494 FunctionPio0, PullNone: Gp17Pio0,
495 /// PIO1 Function alias for pin [crate::Pins::gpio17].
496 FunctionPio1, PullNone: Gp17Pio1
497 }
498 },
499
500 /// GPIO 18 supports following functions:
501 ///
502 /// | Function | Alias with applied function |
503 /// |--------------|-----------------------------|
504 /// | `SPI0 SCK` | [crate::Gp18Spi0Sck] |
505 /// | `UART0 CTS` | [crate::Gp18Uart0Cts] |
506 /// | `I2C1 SDA` | [crate::Gp18I2C1Sda] |
507 /// | `PWM1 A` | [crate::Gp18Pwm1A] |
508 /// | `PIO0` | [crate::Gp18Pio0] |
509 /// | `PIO1` | [crate::Gp18Pio1] |
510 Gpio18 {
511 name: gpio18,
512 aliases: {
513 /// UART Function alias for pin [crate::Pins::gpio18].
514 FunctionUart, PullNone: Gp18Uart0Cts,
515 /// SPI Function alias for pin [crate::Pins::gpio18].
516 FunctionSpi, PullNone: Gp18Spi0Sck,
517 /// I2C Function alias for pin [crate::Pins::gpio18].
518 FunctionI2C, PullUp: Gp18I2C1Sda,
519 /// PWM Function alias for pin [crate::Pins::gpio18].
520 FunctionPwm, PullNone: Gp18Pwm1A,
521 /// PIO0 Function alias for pin [crate::Pins::gpio18].
522 FunctionPio0, PullNone: Gp18Pio0,
523 /// PIO1 Function alias for pin [crate::Pins::gpio18].
524 FunctionPio1, PullNone: Gp18Pio1
525 }
526 },
527
528 /// GPIO 19 supports following functions:
529 ///
530 /// | Function | Alias with applied function |
531 /// |--------------|-----------------------------|
532 /// | `SPI0 TX` | [crate::Gp19Spi0Tx] |
533 /// | `UART0 RTS` | [crate::Gp19Uart0Rts] |
534 /// | `I2C1 SCL` | [crate::Gp19I2C1Scl] |
535 /// | `PWM1 B` | [crate::Gp19Pwm1B] |
536 /// | `PIO0` | [crate::Gp19Pio0] |
537 /// | `PIO1` | [crate::Gp19Pio1] |
538 Gpio19 {
539 name: gpio19,
540 aliases: {
541 /// UART Function alias for pin [crate::Pins::gpio19].
542 FunctionUart, PullNone: Gp19Uart0Rts,
543 /// SPI Function alias for pin [crate::Pins::gpio19].
544 FunctionSpi, PullNone: Gp19Spi0Tx,
545 /// I2C Function alias for pin [crate::Pins::gpio19].
546 FunctionI2C, PullUp: Gp19I2C1Scl,
547 /// PWM Function alias for pin [crate::Pins::gpio19].
548 FunctionPwm, PullNone: Gp19Pwm1B,
549 /// PIO0 Function alias for pin [crate::Pins::gpio19].
550 FunctionPio0, PullNone: Gp19Pio0,
551 /// PIO1 Function alias for pin [crate::Pins::gpio19].
552 FunctionPio1, PullNone: Gp19Pio1
553 }
554 },
555
556 /// GPIO 20 supports following functions:
557 ///
558 /// | Function | Alias with applied function |
559 /// |--------------|-----------------------------|
560 /// | `SPI0 RX` | [crate::Gp20Spi0Rx] |
561 /// | `UART1 TX` | [crate::Gp20Uart1Tx] |
562 /// | `I2C0 SDA` | [crate::Gp20I2C0Sda] |
563 /// | `PWM2 A` | [crate::Gp20Pwm2A] |
564 /// | `PIO0` | [crate::Gp20Pio0] |
565 /// | `PIO1` | [crate::Gp20Pio1] |
566 Gpio20 {
567 name: gpio20,
568 aliases: {
569 /// UART Function alias for pin [crate::Pins::gpio20].
570 FunctionUart, PullNone: Gp20Uart1Tx,
571 /// SPI Function alias for pin [crate::Pins::gpio20].
572 FunctionSpi, PullNone: Gp20Spi0Rx,
573 /// I2C Function alias for pin [crate::Pins::gpio20].
574 FunctionI2C, PullUp: Gp20I2C0Sda,
575 /// PWM Function alias for pin [crate::Pins::gpio20].
576 FunctionPwm, PullNone: Gp20Pwm2A,
577 /// PIO0 Function alias for pin [crate::Pins::gpio20].
578 FunctionPio0, PullNone: Gp20Pio0,
579 /// PIO1 Function alias for pin [crate::Pins::gpio20].
580 FunctionPio1, PullNone: Gp20Pio1
581 }
582 },
583
584 /// GPIO 21 supports following functions:
585 ///
586 /// | Function | Alias with applied function |
587 /// |--------------|-----------------------------|
588 /// | `SPI0 CSn` | [crate::Gp21Spi0Csn] |
589 /// | `UART1 RX` | [crate::Gp21Uart1Rx] |
590 /// | `I2C0 SCL` | [crate::Gp21I2C0Scl] |
591 /// | `PWM2 B` | [crate::Gp21Pwm2B] |
592 /// | `PIO0` | [crate::Gp21Pio0] |
593 /// | `PIO1` | [crate::Gp21Pio1] |
594 Gpio21 {
595 name: gpio21,
596 aliases: {
597 /// UART Function alias for pin [crate::Pins::gpio21].
598 FunctionUart, PullNone: Gp21Uart1Rx,
599 /// SPI Function alias for pin [crate::Pins::gpio21].
600 FunctionSpi, PullNone: Gp21Spi0Csn,
601 /// I2C Function alias for pin [crate::Pins::gpio21].
602 FunctionI2C, PullUp: Gp21I2C0Scl,
603 /// PWM Function alias for pin [crate::Pins::gpio21].
604 FunctionPwm, PullNone: Gp21Pwm2B,
605 /// PIO0 Function alias for pin [crate::Pins::gpio21].
606 FunctionPio0, PullNone: Gp21Pio0,
607 /// PIO1 Function alias for pin [crate::Pins::gpio21].
608 FunctionPio1, PullNone: Gp21Pio1
609 }
610 },
611
612 /// GPIO 22 supports following functions:
613 ///
614 /// | Function | Alias with applied function |
615 /// |--------------|-----------------------------|
616 /// | `SPI0 SCK` | [crate::Gp22Spi0Sck] |
617 /// | `UART1 CTS` | [crate::Gp22Uart1Cts] |
618 /// | `I2C1 SDA` | [crate::Gp22I2C1Sda] |
619 /// | `PWM3 A` | [crate::Gp22Pwm3A] |
620 /// | `PIO0` | [crate::Gp22Pio0] |
621 /// | `PIO1` | [crate::Gp22Pio1] |
622 Gpio22 {
623 name: gpio22,
624 aliases: {
625 /// UART Function alias for pin [crate::Pins::gpio22].
626 FunctionUart, PullNone: Gp22Uart1Cts,
627 /// SPI Function alias for pin [crate::Pins::gpio22].
628 FunctionSpi, PullNone: Gp22Spi0Sck,
629 /// I2C Function alias for pin [crate::Pins::gpio22].
630 FunctionI2C, PullUp: Gp22I2C1Sda,
631 /// PWM Function alias for pin [crate::Pins::gpio22].
632 FunctionPwm, PullNone: Gp22Pwm3A,
633 /// PIO0 Function alias for pin [crate::Pins::gpio22].
634 FunctionPio0, PullNone: Gp22Pio0,
635 /// PIO1 Function alias for pin [crate::Pins::gpio22].
636 FunctionPio1, PullNone: Gp22Pio1
637 }
638 },
639
640 /// GPIO 23
641 Gpio23 {
642 name: gp23,
643 aliases: {
644 FunctionUart, PullNone: Gp23Uart1Rts,
645 FunctionSpi, PullNone: Gp23Spi0Tx,
646 FunctionI2C, PullUp: Gp23I2C1Scl,
647 FunctionPwm, PullNone: Gp23Pwm3B,
648 FunctionPio0, PullNone: Gp23Pio0,
649 FunctionPio1, PullNone: Gp23Pio1
650 }
651 },
652
653 /// GPIO 24
654 Gpio24 {
655 name: gp24,
656 aliases: {
657 FunctionUart, PullNone: Gp24Uart1Tx,
658 FunctionSpi, PullNone: Gp24Spi1Rx,
659 FunctionI2C, PullUp: Gp24I2C0Sda,
660 FunctionPwm, PullNone: Gp24Pwm4A,
661 FunctionPio0, PullNone: Gp24Pio0,
662 FunctionPio1, PullNone: Gp24Pio1
663 }
664 },
665
666 /// GPIO 25
667 Gpio25 {
668 name: gp25,
669 aliases: {
670 FunctionUart, PullNone: Gp25Uart1Rx,
671 FunctionSpi, PullNone: Gp25Spi1Csn,
672 FunctionI2C, PullUp: Gp25I2C0Scl,
673 FunctionPwm, PullNone: Gp25Pwm4B,
674 FunctionPio0, PullNone: Gp25Pio0,
675 FunctionPio1, PullNone: Gp25Pio1
676 }
677 },
678
679 /// GPIO 26 supports following functions:
680 ///
681 /// | Function | Alias with applied function |
682 /// |--------------|-----------------------------|
683 /// | `SPI1 SCK` | [crate::Gp26Spi1Sck] |
684 /// | `UART1 CTS` | [crate::Gp26Uart1Cts] |
685 /// | `I2C1 SDA` | [crate::Gp26I2C1Sda] |
686 /// | `PWM5 A` | [crate::Gp26Pwm5A] |
687 /// | `PIO0` | [crate::Gp26Pio0] |
688 /// | `PIO1` | [crate::Gp26Pio1] |
689 ///
690 /// ADC0
691 Gpio26 {
692 name: gp26,
693 aliases: {
694 /// UART Function alias for pin [crate::Pins::gpio26].
695 FunctionUart, PullNone: Gp26Uart1Cts,
696 /// SPI Function alias for pin [crate::Pins::gpio26].
697 FunctionSpi, PullNone: Gp26Spi1Sck,
698 /// I2C Function alias for pin [crate::Pins::gpio26].
699 FunctionI2C, PullUp: Gp26I2C1Sda,
700 /// PWM Function alias for pin [crate::Pins::gpio26].
701 FunctionPwm, PullNone: Gp26Pwm5A,
702 /// PIO0 Function alias for pin [crate::Pins::gpio26].
703 FunctionPio0, PullNone: Gp26Pio0,
704 /// PIO1 Function alias for pin [crate::Pins::gpio26].
705 FunctionPio1, PullNone: Gp26Pio1
706 }
707 },
708
709 /// GPIO 27 supports following functions:
710 ///
711 /// | Function | Alias with applied function |
712 /// |--------------|-----------------------------|
713 /// | `SPI1 TX` | [crate::Gp27Spi1Tx] |
714 /// | `UART1 RTS` | [crate::Gp27Uart1Rts] |
715 /// | `I2C1 SCL` | [crate::Gp27I2C1Scl] |
716 /// | `PWM5 B` | [crate::Gp27Pwm5B] |
717 /// | `PIO0` | [crate::Gp27Pio0] |
718 /// | `PIO1` | [crate::Gp27Pio1] |
719 ///
720 /// ADC1
721 Gpio27 {
722 name: gp27,
723 aliases: {
724 /// UART Function alias for pin [crate::Pins::gpio27].
725 FunctionUart, PullNone: Gp27Uart1Rts,
726 /// SPI Function alias for pin [crate::Pins::gpio27].
727 FunctionSpi, PullNone: Gp27Spi1Tx,
728 /// I2C Function alias for pin [crate::Pins::gpio27].
729 FunctionI2C, PullUp: Gp27I2C1Scl,
730 /// PWM Function alias for pin [crate::Pins::gpio27].
731 FunctionPwm, PullNone: Gp27Pwm5B,
732 /// PIO0 Function alias for pin [crate::Pins::gpio27].
733 FunctionPio0, PullNone: Gp27Pio0,
734 /// PIO1 Function alias for pin [crate::Pins::gpio27].
735 FunctionPio1, PullNone: Gp27Pio1
736 }
737 },
738
739 /// GPIO 28 supports following functions:
740 ///
741 /// | Function | Alias with applied function |
742 /// |--------------|-----------------------------|
743 /// | `SPI1 RX` | [crate::Gp28Spi1Rx] |
744 /// | `UART0 TX` | [crate::Gp28Uart0Tx] |
745 /// | `I2C0 SDA` | [crate::Gp28I2C0Sda] |
746 /// | `PWM6 A` | [crate::Gp28Pwm6A] |
747 /// | `PIO0` | [crate::Gp28Pio0] |
748 /// | `PIO1` | [crate::Gp28Pio1] |
749 ///
750 /// ADC2
751 Gpio28 {
752 name: gp28,
753 aliases: {
754 /// UART Function alias for pin [crate::Pins::gpio28].
755 FunctionUart, PullNone: Gp28Uart0Tx,
756 /// SPI Function alias for pin [crate::Pins::gpio28].
757 FunctionSpi, PullNone: Gp28Spi1Rx,
758 /// I2C Function alias for pin [crate::Pins::gpio28].
759 FunctionI2C, PullUp: Gp28I2C0Sda,
760 /// PWM Function alias for pin [crate::Pins::gpio28].
761 FunctionPwm, PullNone: Gp28Pwm6A,
762 /// PIO0 Function alias for pin [crate::Pins::gpio28].
763 FunctionPio0, PullNone: Gp28Pio0,
764 /// PIO1 Function alias for pin [crate::Pins::gpio28].
765 FunctionPio1, PullNone: Gp28Pio1
766 }
767 },
768
769 /// GPIO 29
770 ///
771 /// ADC3
772 Gpio29 {
773 name: gp29,
774 aliases: {
775 FunctionUart, PullNone: Gp29Uart0Rx,
776 FunctionSpi, PullNone: Gp29Spi1Csn,
777 FunctionI2C, PullUp: Gp29I2C0Scl,
778 FunctionPwm, PullNone: Gp29Pwm6B,
779 FunctionPio0, PullNone: Gp29Pio0,
780 FunctionPio1, PullNone: Gp29Pio1
781 }
782 },
783);
784
785pub const XOSC_CRYSTAL_FREQ: u32 = 12_000_000;