boardsource_blok/
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
22    /// GPIO 0 supports following functions:
23    ///
24    /// | Function     | Alias with applied function |
25    /// |--------------|-----------------------------|
26    /// | `SPI0 RX`    | [crate::Gp0Spi0Rx]          |
27    /// | `UART0 TX`   | [crate::Gp0Uart0Tx]         |
28    /// | `I2C0 SDA`   | [crate::Gp0I2C0Sda]         |
29    /// | `PWM0 A`     | [crate::Gp0Pwm0A]           |
30    /// | `PIO0`       | [crate::Gp0Pio0]            |
31    /// | `PIO1`       | [crate::Gp0Pio1]            |
32    Gpio0 {
33        name: gpio0,
34        aliases: {
35            /// UART Function alias for pin [crate::Pins::gpio0].
36            FunctionUart, PullNone: Gp0Uart0Tx,
37            /// SPI Function alias for pin [crate::Pins::gpio0].
38            FunctionSpi, PullNone: Gp0Spi0Rx,
39            /// I2C Function alias for pin [crate::Pins::gpio0].
40            FunctionI2C, PullUp: Gp0I2C0Sda,
41            /// PWM Function alias for pin [crate::Pins::gpio0].
42            FunctionPwm, PullNone: Gp0Pwm0A,
43            /// PIO0 Function alias for pin [crate::Pins::gpio0].
44            FunctionPio0, PullNone: Gp0Pio0,
45            /// PIO1 Function alias for pin [crate::Pins::gpio0].
46            FunctionPio1, PullNone: Gp0Pio1
47        }
48    },
49
50    /// GPIO 1 supports following functions:
51    ///
52    /// | Function     | Alias with applied function |
53    /// |--------------|-----------------------------|
54    /// | `SPI0 CSn`   | [crate::Gp1Spi0Csn]         |
55    /// | `UART0 RX`   | [crate::Gp1Uart0Rx]         |
56    /// | `I2C0 SCL`   | [crate::Gp1I2C0Scl]         |
57    /// | `PWM0 B`     | [crate::Gp1Pwm0B]           |
58    /// | `PIO0`       | [crate::Gp1Pio0]            |
59    /// | `PIO1`       | [crate::Gp1Pio1]            |
60    Gpio1 {
61        name: gpio1,
62        aliases: {
63            /// UART Function alias for pin [crate::Pins::gpio1].
64            FunctionUart, PullNone: Gp1Uart0Rx,
65            /// SPI Function alias for pin [crate::Pins::gpio1].
66            FunctionSpi, PullNone: Gp1Spi0Csn,
67            /// I2C Function alias for pin [crate::Pins::gpio1].
68            FunctionI2C, PullUp: Gp1I2C0Scl,
69            /// PWM Function alias for pin [crate::Pins::gpio1].
70            FunctionPwm, PullNone: Gp1Pwm0B,
71            /// PIO0 Function alias for pin [crate::Pins::gpio1].
72            FunctionPio0, PullNone: Gp1Pio0,
73            /// PIO1 Function alias for pin [crate::Pins::gpio1].
74            FunctionPio1, PullNone: Gp1Pio1
75        }
76    },
77
78    /// GPIO 16 supports following functions:
79    ///
80    /// | Function     | Alias with applied function |
81    /// |--------------|-----------------------------|
82    /// | `SPI0 RX`    | [crate::Gp16Spi0Rx]         |
83    /// | `UART0 TX`   | [crate::Gp16Uart0Tx]        |
84    /// | `I2C0 SDA`   | [crate::Gp16I2C0Sda]        |
85    /// | `PWM0 A`     | [crate::Gp16Pwm0A]          |
86    /// | `PIO0`       | [crate::Gp16Pio0]           |
87    /// | `PIO1`       | [crate::Gp16Pio1]           |
88    Gpio16 {
89        name: gpio16,
90        aliases: {
91            /// UART Function alias for pin [crate::Pins::gpio16].
92            FunctionUart, PullNone: Gp16Uart0Tx,
93            /// SPI Function alias for pin [crate::Pins::gpio16].
94            FunctionSpi, PullNone: Gp16Spi0Rx,
95            /// I2C Function alias for pin [crate::Pins::gpio16].
96            FunctionI2C, PullUp: Gp16I2C0Sda,
97            /// PWM Function alias for pin [crate::Pins::gpio16].
98            FunctionPwm, PullNone: Gp16Pwm0A,
99            /// PIO0 Function alias for pin [crate::Pins::gpio16].
100            FunctionPio0, PullNone: Gp16Pio0,
101            /// PIO1 Function alias for pin [crate::Pins::gpio16].
102            FunctionPio1, PullNone: Gp16Pio1
103        }
104    },
105
106    /// GPIO 17 supports following functions:
107    ///
108    /// | Function     | Alias with applied function |
109    /// |--------------|-----------------------------|
110    /// | `SPI0 CSn`   | [crate::Gp17Spi0Csn]        |
111    /// | `UART0 RX`   | [crate::Gp17Uart0Rx]        |
112    /// | `I2C0 SCL`   | [crate::Gp17I2C0Scl]        |
113    /// | `PWM0 B`     | [crate::Gp17Pwm0B]          |
114    /// | `PIO0`       | [crate::Gp17Pio0]           |
115    /// | `PIO1`       | [crate::Gp17Pio1]           |
116    Gpio17 {
117        name: gpio17,
118        aliases: {
119            /// UART Function alias for pin [crate::Pins::gpio17].
120            FunctionUart, PullNone: Gp17Uart0Rx,
121            /// SPI Function alias for pin [crate::Pins::gpio17].
122            FunctionSpi, PullNone: Gp17Spi0Csn,
123            /// I2C Function alias for pin [crate::Pins::gpio17].
124            FunctionI2C, PullUp: Gp17I2C0Scl,
125            /// PWM Function alias for pin [crate::Pins::gpio17].
126            FunctionPwm, PullNone: Gp17Pwm0B,
127            /// PIO0 Function alias for pin [crate::Pins::gpio17].
128            FunctionPio0, PullNone: Gp17Pio0,
129            /// PIO1 Function alias for pin [crate::Pins::gpio17].
130            FunctionPio1, PullNone: Gp17Pio1
131        }
132    },
133
134    /// GPIO 4 supports following functions:
135    ///
136    /// | Function     | Alias with applied function |
137    /// |--------------|-----------------------------|
138    /// | `SPI0 RX`    | [crate::Gp4Spi0Rx]          |
139    /// | `UART1 TX`   | [crate::Gp4Uart1Tx]         |
140    /// | `I2C0 SDA`   | [crate::Gp4I2C0Sda]         |
141    /// | `PWM2 A`     | [crate::Gp4Pwm2A]           |
142    /// | `PIO0`       | [crate::Gp4Pio0]            |
143    /// | `PIO1`       | [crate::Gp4Pio1]            |
144    Gpio4 {
145        name: gpio4,
146        aliases: {
147            /// UART Function alias for pin [crate::Pins::gpio4].
148            FunctionUart, PullNone: Gp4Uart1Tx,
149            /// SPI Function alias for pin [crate::Pins::gpio4].
150            FunctionSpi, PullNone: Gp4Spi0Rx,
151            /// I2C Function alias for pin [crate::Pins::gpio4].
152            FunctionI2C, PullUp: Gp4I2C0Sda,
153            /// PWM Function alias for pin [crate::Pins::gpio4].
154            FunctionPwm, PullNone: Gp4Pwm2A,
155            /// PIO0 Function alias for pin [crate::Pins::gpio4].
156            FunctionPio0, PullNone: Gp4Pio0,
157            /// PIO1 Function alias for pin [crate::Pins::gpio4].
158            FunctionPio1, PullNone: Gp4Pio1
159        }
160    },
161
162    /// GPIO 5 supports following functions:
163    ///
164    /// | Function     | Alias with applied function |
165    /// |--------------|-----------------------------|
166    /// | `SPI0 CSn`   | [crate::Gp5Spi0Csn]         |
167    /// | `UART1 RX`   | [crate::Gp5Uart1Rx]         |
168    /// | `I2C0 SCL`   | [crate::Gp5I2C0Scl]         |
169    /// | `PWM2 B`     | [crate::Gp5Pwm2B]           |
170    /// | `PIO0`       | [crate::Gp5Pio0]            |
171    /// | `PIO1`       | [crate::Gp5Pio1]            |
172    Gpio5 {
173        name: gpio5,
174        aliases: {
175            /// UART Function alias for pin [crate::Pins::gpio5].
176            FunctionUart, PullNone: Gp5Uart1Rx,
177            /// SPI Function alias for pin [crate::Pins::gpio5].
178            FunctionSpi, PullNone: Gp5Spi0Csn,
179            /// I2C Function alias for pin [crate::Pins::gpio5].
180            FunctionI2C, PullUp: Gp5I2C0Scl,
181            /// PWM Function alias for pin [crate::Pins::gpio5].
182            FunctionPwm, PullNone: Gp5Pwm2B,
183            /// PIO0 Function alias for pin [crate::Pins::gpio5].
184            FunctionPio0, PullNone: Gp5Pio0,
185            /// PIO1 Function alias for pin [crate::Pins::gpio5].
186            FunctionPio1, PullNone: Gp5Pio1
187        }
188    },
189
190    /// GPIO 6 supports following functions:
191    ///
192    /// | Function     | Alias with applied function |
193    /// |--------------|-----------------------------|
194    /// | `SPI0 SCK`   | [crate::Gp6Spi0Sck]         |
195    /// | `UART1 CTS`  | [crate::Gp6Uart1Cts]        |
196    /// | `I2C1 SDA`   | [crate::Gp6I2C1Sda]         |
197    /// | `PWM3 A`     | [crate::Gp6Pwm3A]           |
198    /// | `PIO0`       | [crate::Gp6Pio0]            |
199    /// | `PIO1`       | [crate::Gp6Pio1]            |
200    Gpio6 {
201        name: gpio6,
202        aliases: {
203            /// UART Function alias for pin [crate::Pins::gpio6].
204            FunctionUart, PullNone: Gp6Uart1Cts,
205            /// SPI Function alias for pin [crate::Pins::gpio6].
206            FunctionSpi, PullNone: Gp6Spi0Sck,
207            /// I2C Function alias for pin [crate::Pins::gpio6].
208            FunctionI2C, PullUp: Gp6I2C1Sda,
209            /// PWM Function alias for pin [crate::Pins::gpio6].
210            FunctionPwm, PullNone: Gp6Pwm3A,
211            /// PIO0 Function alias for pin [crate::Pins::gpio6].
212            FunctionPio0, PullNone: Gp6Pio0,
213            /// PIO1 Function alias for pin [crate::Pins::gpio6].
214            FunctionPio1, PullNone: Gp6Pio1
215        }
216    },
217
218    /// GPIO 7 supports following functions:
219    ///
220    /// | Function     | Alias with applied function |
221    /// |--------------|-----------------------------|
222    /// | `SPI0 TX`    | [crate::Gp7Spi0Tx]          |
223    /// | `UART1 RTS`  | [crate::Gp7Uart1Rts]        |
224    /// | `I2C1 SCL`   | [crate::Gp7I2C1Scl]         |
225    /// | `PWM3 B`     | [crate::Gp7Pwm3B]           |
226    /// | `PIO0`       | [crate::Gp7Pio0]            |
227    /// | `PIO1`       | [crate::Gp7Pio1]            |
228    Gpio7 {
229        name: gpio7,
230        aliases: {
231            /// UART Function alias for pin [crate::Pins::gpio7].
232            FunctionUart, PullNone: Gp7Uart1Rts,
233            /// SPI Function alias for pin [crate::Pins::gpio7].
234            FunctionSpi, PullNone: Gp7Spi0Tx,
235            /// I2C Function alias for pin [crate::Pins::gpio7].
236            FunctionI2C, PullUp: Gp7I2C1Scl,
237            /// PWM Function alias for pin [crate::Pins::gpio7].
238            FunctionPwm, PullNone: Gp7Pwm3B,
239            /// PIO0 Function alias for pin [crate::Pins::gpio7].
240            FunctionPio0, PullNone: Gp7Pio0,
241            /// PIO1 Function alias for pin [crate::Pins::gpio7].
242            FunctionPio1, PullNone: Gp7Pio1
243        }
244    },
245
246    /// GPIO 8 supports following functions:
247    ///
248    /// | Function     | Alias with applied function |
249    /// |--------------|-----------------------------|
250    /// | `SPI1 RX`    | [crate::Gp8Spi1Rx]          |
251    /// | `UART1 TX`   | [crate::Gp8Uart1Tx]         |
252    /// | `I2C0 SDA`   | [crate::Gp8I2C0Sda]         |
253    /// | `PWM4 A`     | [crate::Gp8Pwm4A]           |
254    /// | `PIO0`       | [crate::Gp8Pio0]            |
255    /// | `PIO1`       | [crate::Gp8Pio1]            |
256    Gpio8 {
257        name: gpio8,
258        aliases: {
259            /// UART Function alias for pin [crate::Pins::gpio8].
260            FunctionUart, PullNone: Gp8Uart1Tx,
261            /// SPI Function alias for pin [crate::Pins::gpio8].
262            FunctionSpi, PullNone: Gp8Spi1Rx,
263            /// I2C Function alias for pin [crate::Pins::gpio8].
264            FunctionI2C, PullUp: Gp8I2C0Sda,
265            /// PWM Function alias for pin [crate::Pins::gpio8].
266            FunctionPwm, PullNone: Gp8Pwm4A,
267            /// PIO0 Function alias for pin [crate::Pins::gpio8].
268            FunctionPio0, PullNone: Gp8Pio0,
269            /// PIO1 Function alias for pin [crate::Pins::gpio8].
270            FunctionPio1, PullNone: Gp8Pio1
271        }
272    },
273
274    /// GPIO 9 supports following functions:
275    ///
276    /// | Function     | Alias with applied function |
277    /// |--------------|-----------------------------|
278    /// | `SPI1 CSn`   | [crate::Gp9Spi1Csn]         |
279    /// | `UART1 RX`   | [crate::Gp9Uart1Rx]         |
280    /// | `I2C0 SCL`   | [crate::Gp9I2C0Scl]         |
281    /// | `PWM4 B`     | [crate::Gp9Pwm4B]           |
282    /// | `PIO0`       | [crate::Gp9Pio0]            |
283    /// | `PIO1`       | [crate::Gp9Pio1]            |
284    Gpio9 {
285        name: gpio9,
286        aliases: {
287            /// UART Function alias for pin [crate::Pins::gpio9].
288            FunctionUart, PullNone: Gp9Uart1Rx,
289            /// SPI Function alias for pin [crate::Pins::gpio9].
290            FunctionSpi, PullNone: Gp9Spi1Csn,
291            /// I2C Function alias for pin [crate::Pins::gpio9].
292            FunctionI2C, PullUp: Gp9I2C0Scl,
293            /// PWM Function alias for pin [crate::Pins::gpio9].
294            FunctionPwm, PullNone: Gp9Pwm4B,
295            /// PIO0 Function alias for pin [crate::Pins::gpio9].
296            FunctionPio0, PullNone: Gp9Pio0,
297            /// PIO1 Function alias for pin [crate::Pins::gpio9].
298            FunctionPio1, PullNone: Gp9Pio1
299        }
300    },
301
302    /// GPIO 29 supports following functions:
303    ///
304    /// | Function     | Alias with applied function |
305    /// |--------------|-----------------------------|
306    /// | `SPI1 CSn`   | [crate::Gp29Spi1Csn]         |
307    /// | `UART0 RX`   | [crate::Gp29Uart0Rx]         |
308    /// | `I2C0 SCL`   | [crate::Gp29I2C0Scl]         |
309    /// | `PWM4 B`     | [crate::Gp29Pwm6B]           |
310    /// | `PIO0`       | [crate::Gp29Pio0]            |
311    /// | `PIO1`       | [crate::Gp29Pio1]            |
312    Gpio29 {
313        name: gpio29,
314        aliases: {
315            /// UART Function alias for pin [crate::Pins::gpio29].
316            FunctionUart, PullNone: Gp29Uart0Rx,
317            /// SPI Function alias for pin [crate::Pins::gpio29].
318            FunctionSpi, PullNone: Gp29Spi1Csn,
319            /// I2C Function alias for pin [crate::Pins::gpio29].
320            FunctionI2C, PullUp: Gp29I2C0Scl,
321            /// PWM Function alias for pin [crate::Pins::gpio29].
322            FunctionPwm, PullNone: Gp29Pwm6B,
323            /// PIO0 Function alias for pin [crate::Pins::gpio29].
324            FunctionPio0, PullNone: Gp29Pio0,
325            /// PIO1 Function alias for pin [crate::Pins::gpio29].
326            FunctionPio1, PullNone: Gp29Pio1
327        }
328    },
329
330    /// GPIO 28 supports following functions:
331    ///
332    /// | Function     | Alias with applied function |
333    /// |--------------|-----------------------------|
334    /// | `SPI1 RX`    | [crate::Gp28Spi1Rx]         |
335    /// | `UART0 TX`   | [crate::Gp28Uart0Tx]        |
336    /// | `I2C0 SDA`   | [crate::Gp28I2C0Sda]        |
337    /// | `PWM6 A`     | [crate::Gp28Pwm6A]          |
338    /// | `PIO0`       | [crate::Gp28Pio0]           |
339    /// | `PIO1`       | [crate::Gp28Pio1]           |
340    Gpio28 {
341        name: gpio28,
342        aliases: {
343            /// UART Function alias for pin [crate::Pins::gpio28].
344            FunctionUart, PullNone: Gp28Uart0Tx,
345            /// SPI Function alias for pin [crate::Pins::gpio28].
346            FunctionSpi, PullNone: Gp28Spi1Rx,
347            /// I2C Function alias for pin [crate::Pins::gpio28].
348            FunctionI2C, PullUp: Gp28I2C0Sda,
349            /// PWM Function alias for pin [crate::Pins::gpio28].
350            FunctionPwm, PullNone: Gp28Pwm6A,
351            /// PIO0 Function alias for pin [crate::Pins::gpio28].
352            FunctionPio0, PullNone: Gp28Pio0,
353            /// PIO1 Function alias for pin [crate::Pins::gpio28].
354            FunctionPio1, PullNone: Gp28Pio1
355        }
356    },
357
358    /// GPIO 27 supports following functions:
359    ///
360    /// | Function     | Alias with applied function |
361    /// |--------------|-----------------------------|
362    /// | `SPI1 TX`    | [crate::Gp27Spi1Tx]         |
363    /// | `UART1 RTS`  | [crate::Gp27Uart1Rts]       |
364    /// | `I2C1 SCL`   | [crate::Gp27I2C1Scl]        |
365    /// | `PWM5 B`     | [crate::Gp27Pwm5B]          |
366    /// | `PIO0`       | [crate::Gp27Pio0]           |
367    /// | `PIO1`       | [crate::Gp27Pio1]           |
368    Gpio27 {
369        name: gpio27,
370        aliases: {
371            /// UART Function alias for pin [crate::Pins::gpio27].
372            FunctionUart, PullNone: Gp27Uart1Rts,
373            /// SPI Function alias for pin [crate::Pins::gpio27].
374            FunctionSpi, PullNone: Gp27Spi1Tx,
375            /// I2C Function alias for pin [crate::Pins::gpio27].
376            FunctionI2C, PullUp: Gp27I2C1Scl,
377            /// PWM Function alias for pin [crate::Pins::gpio27].
378            FunctionPwm, PullNone: Gp27Pwm5B,
379            /// PIO0 Function alias for pin [crate::Pins::gpio27].
380            FunctionPio0, PullNone: Gp27Pio0,
381            /// PIO1 Function alias for pin [crate::Pins::gpio27].
382            FunctionPio1, PullNone: Gp27Pio1
383        }
384    },
385
386    /// GPIO 26 supports following functions:
387    ///
388    /// | Function     | Alias with applied function |
389    /// |--------------|-----------------------------|
390    /// | `SPI1 SCK`   | [crate::Gp26Spi1Sck]        |
391    /// | `UART1 CTS`  | [crate::Gp26Uart1Cts]       |
392    /// | `I2C1 SDA`   | [crate::Gp26I2C1Sda]        |
393    /// | `PWM5 A`     | [crate::Gp26Pwm5A]          |
394    /// | `PIO0`       | [crate::Gp26Pio0]           |
395    /// | `PIO1`       | [crate::Gp26Pio1]           |
396    Gpio26 {
397        name: gpio26,
398        aliases: {
399            /// UART Function alias for pin [crate::Pins::gpio26].
400            FunctionUart, PullNone: Gp26Uart1Cts,
401            /// SPI Function alias for pin [crate::Pins::gpio26].
402            FunctionSpi, PullNone: Gp26Spi1Sck,
403            /// I2C Function alias for pin [crate::Pins::gpio26].
404            FunctionI2C, PullUp: Gp26I2C1Sda,
405            /// PWM Function alias for pin [crate::Pins::gpio26].
406            FunctionPwm, PullNone: Gp26Pwm5A,
407            /// PIO0 Function alias for pin [crate::Pins::gpio26].
408            FunctionPio0, PullNone: Gp26Pio0,
409            /// PIO1 Function alias for pin [crate::Pins::gpio26].
410            FunctionPio1, PullNone: Gp26Pio1
411        }
412    },
413
414    /// GPIO 22 supports following functions:
415    ///
416    /// | Function     | Alias with applied function |
417    /// |--------------|-----------------------------|
418    /// | `SPI0 SCK`   | [crate::Gp22Spi0Sck]        |
419    /// | `UART1 CTS`  | [crate::Gp22Uart1Cts]       |
420    /// | `I2C1 SDA`   | [crate::Gp22I2C1Sda]        |
421    /// | `PWM3 A`     | [crate::Gp22Pwm3A]          |
422    /// | `PIO0`       | [crate::Gp22Pio0]           |
423    /// | `PIO1`       | [crate::Gp22Pio1]           |
424    Gpio22 {
425        name: gpio22,
426        aliases: {
427            /// UART Function alias for pin [crate::Pins::gpio22].
428            FunctionUart, PullNone: Gp22Uart1Cts,
429            /// SPI Function alias for pin [crate::Pins::gpio22].
430            FunctionSpi, PullNone: Gp22Spi0Sck,
431            /// I2C Function alias for pin [crate::Pins::gpio22].
432            FunctionI2C, PullUp: Gp22I2C1Sda,
433            /// PWM Function alias for pin [crate::Pins::gpio22].
434            FunctionPwm, PullNone: Gp22Pwm3A,
435            /// PIO0 Function alias for pin [crate::Pins::gpio22].
436            FunctionPio0, PullNone: Gp22Pio0,
437            /// PIO1 Function alias for pin [crate::Pins::gpio22].
438            FunctionPio1, PullNone: Gp22Pio1
439        }
440    },
441
442    /// GPIO 20 supports following functions:
443    ///
444    /// | Function     | Alias with applied function |
445    /// |--------------|-----------------------------|
446    /// | `SPI0 RX`    | [crate::Gp20Spi0Rx]         |
447    /// | `UART1 TX`   | [crate::Gp20Uart1Tx]        |
448    /// | `I2C0 SDA`   | [crate::Gp20I2C0Sda]        |
449    /// | `PWM2 A`     | [crate::Gp20Pwm2A]          |
450    /// | `PIO0`       | [crate::Gp20Pio0]           |
451    /// | `PIO1`       | [crate::Gp20Pio1]           |
452    Gpio20 {
453        name: gpio20,
454        aliases: {
455            /// UART Function alias for pin [crate::Pins::gpio20].
456            FunctionUart, PullNone: Gp20Uart1Tx,
457            /// SPI Function alias for pin [crate::Pins::gpio20].
458            FunctionSpi, PullNone: Gp20Spi0Rx,
459            /// I2C Function alias for pin [crate::Pins::gpio20].
460            FunctionI2C, PullUp: Gp20I2C0Sda,
461            /// PWM Function alias for pin [crate::Pins::gpio20].
462            FunctionPwm, PullNone: Gp20Pwm2A,
463            /// PIO0 Function alias for pin [crate::Pins::gpio20].
464            FunctionPio0, PullNone: Gp20Pio0,
465            /// PIO1 Function alias for pin [crate::Pins::gpio20].
466            FunctionPio1, PullNone: Gp20Pio1
467        }
468    },
469
470    /// GPIO 23 supports following functions:
471    ///
472    /// | Function     | Alias with applied function |
473    /// |--------------|-----------------------------|
474    /// | `SPI0 TX`   | [crate::Gp23Spi0Tx]        |
475    /// | `UART1 RTS`   | [crate::Gp23Uart1Rts]        |
476    /// | `I2C1 SCL`   | [crate::Gp23I2C1Scl]        |
477    /// | `PWM3 B`     | [crate::Gp23Pwm3B]          |
478    /// | `PIO0`       | [crate::Gp23Pio0]           |
479    /// | `PIO1`       | [crate::Gp23Pio1]           |
480    Gpio23 {
481        name: gpio23,
482        aliases: {
483            /// UART Function alias for pin [crate::Pins::gpio21].
484            FunctionUart, PullNone: Gp23Uart1Rts,
485            /// SPI Function alias for pin [crate::Pins::gpio21].
486            FunctionSpi, PullNone: Gp23Spi0Tx,
487            /// I2C Function alias for pin [crate::Pins::gpio21].
488            FunctionI2C, PullUp: Gp23I2C1Scl,
489            /// PWM Function alias for pin [crate::Pins::gpio21].
490            FunctionPwm, PullNone: Gp23Pwm3B,
491            /// PIO0 Function alias for pin [crate::Pins::gpio21].
492            FunctionPio0, PullNone: Gp23Pio0,
493            /// PIO1 Function alias for pin [crate::Pins::gpio21].
494            FunctionPio1, PullNone: Gp23Pio1
495        }
496    },
497
498    /// GPIO 21 supports following functions:
499    ///
500    /// | Function     | Alias with applied function |
501    /// |--------------|-----------------------------|
502    /// | `SPI0 CSn`   | [crate::Gp21Spi0Csn]        |
503    /// | `UART1 RX`   | [crate::Gp21Uart1Rx]        |
504    /// | `I2C0 SCL`   | [crate::Gp21I2C0Scl]        |
505    /// | `PWM2 B`     | [crate::Gp21Pwm2B]          |
506    /// | `PIO0`       | [crate::Gp21Pio0]           |
507    /// | `PIO1`       | [crate::Gp21Pio1]           |
508    Gpio21 {
509        name: gpio21,
510        aliases: {
511            /// UART Function alias for pin [crate::Pins::gpio21].
512            FunctionUart, PullNone: Gp21Uart1Rx,
513            /// SPI Function alias for pin [crate::Pins::gpio21].
514            FunctionSpi, PullNone: Gp21Spi0Csn,
515            /// I2C Function alias for pin [crate::Pins::gpio21].
516            FunctionI2C, PullUp: Gp21I2C0Scl,
517            /// PWM Function alias for pin [crate::Pins::gpio21].
518            FunctionPwm, PullNone: Gp21Pwm2B,
519            /// PIO0 Function alias for pin [crate::Pins::gpio21].
520            FunctionPio0, PullNone: Gp21Pio0,
521            /// PIO1 Function alias for pin [crate::Pins::gpio21].
522            FunctionPio1, PullNone: Gp21Pio1
523        }
524    },
525
526    /// GPIO 25 is connected to a neopixel on the top right of the board
527    Gpio25 {
528        name: neopixel,
529    },
530);
531
532pub const XOSC_CRYSTAL_FREQ: u32 = 12_000_000;