DeviceOut {
    info: DeviceInfoOut {
        id: DeviceId {
            id: "stm32f051R8T6",
            package: LQFP64,
            flash_size: FlashSize(
                64
            ),
            temperature: TemperatureRange {
                min: -40,
                max: 85
            }
        },
        part: Part(
            "R8"
        ),
        package: LQFP64,
        flash_size: FlashSize(
            64
        ),
        ram_size: RamSize(
            8
        ),
        temperature: TemperatureRange {
            min: -40,
            max: 85
        },
        datasheet_url: "https://www.st.com/resource/en/datasheet/stm32f051R8.pdf",
        reference_url: "https://www.st.com/resource/en/reference_manual/RefManual.pdf",
        svd: "stm32f0x1"
    },
    peripherals: PeripheralsOut {
        rcc: Some(
            RccOut {
                buses: [
                    PeripheralBusOut {
                        peripheral: "gpioa",
                        bus: AHB,
                        field: "IOPA",
                        resetable: true
                    },
                    PeripheralBusOut {
                        peripheral: "gpiob",
                        bus: AHB,
                        field: "IOPB",
                        resetable: true
                    },
                    PeripheralBusOut {
                        peripheral: "gpioc",
                        bus: AHB,
                        field: "IOPC",
                        resetable: true
                    },
                    PeripheralBusOut {
                        peripheral: "gpiod",
                        bus: AHB,
                        field: "IOPD",
                        resetable: true
                    },
                    PeripheralBusOut {
                        peripheral: "gpiof",
                        bus: AHB,
                        field: "IOPF",
                        resetable: true
                    }
                ]
            }
        ),
        gpio: Some(
            GpioOut {
                version: 2,
                banks: [
                    GpioBankOut {
                        GPIO: "GPIOA",
                        gpio: "gpioa",
                        pins: [
                            GpioPinOut {
                                PIN: "PA0",
                                pin: "pa0",
                                n: 0,
                                initial_mode: "Input<Floating>"
                            },
                            GpioPinOut {
                                PIN: "PA1",
                                pin: "pa1",
                                n: 1,
                                initial_mode: "Input<Floating>"
                            },
                            GpioPinOut {
                                PIN: "PA2",
                                pin: "pa2",
                                n: 2,
                                initial_mode: "Input<Floating>"
                            },
                            GpioPinOut {
                                PIN: "PA3",
                                pin: "pa3",
                                n: 3,
                                initial_mode: "Input<Floating>"
                            },
                            GpioPinOut {
                                PIN: "PA4",
                                pin: "pa4",
                                n: 4,
                                initial_mode: "Input<Floating>"
                            },
                            GpioPinOut {
                                PIN: "PA5",
                                pin: "pa5",
                                n: 5,
                                initial_mode: "Input<Floating>"
                            },
                            GpioPinOut {
                                PIN: "PA6",
                                pin: "pa6",
                                n: 6,
                                initial_mode: "Input<Floating>"
                            },
                            GpioPinOut {
                                PIN: "PA7",
                                pin: "pa7",
                                n: 7,
                                initial_mode: "Input<Floating>"
                            },
                            GpioPinOut {
                                PIN: "PA8",
                                pin: "pa8",
                                n: 8,
                                initial_mode: "Input<Floating>"
                            },
                            GpioPinOut {
                                PIN: "PA9",
                                pin: "pa9",
                                n: 9,
                                initial_mode: "Input<Floating>"
                            },
                            GpioPinOut {
                                PIN: "PA10",
                                pin: "pa10",
                                n: 10,
                                initial_mode: "Input<Floating>"
                            },
                            GpioPinOut {
                                PIN: "PA11",
                                pin: "pa11",
                                n: 11,
                                initial_mode: "Input<Floating>"
                            },
                            GpioPinOut {
                                PIN: "PA12",
                                pin: "pa12",
                                n: 12,
                                initial_mode: "Input<Floating>"
                            },
                            GpioPinOut {
                                PIN: "PA13",
                                pin: "pa13",
                                n: 13,
                                initial_mode: "Output<PullUp>"
                            },
                            GpioPinOut {
                                PIN: "PA14",
                                pin: "pa14",
                                n: 14,
                                initial_mode: "Output<PullDown>"
                            },
                            GpioPinOut {
                                PIN: "PA15",
                                pin: "pa15",
                                n: 15,
                                initial_mode: "Input<Floating>"
                            }
                        ]
                    },
                    GpioBankOut {
                        GPIO: "GPIOB",
                        gpio: "gpiob",
                        pins: [
                            GpioPinOut {
                                PIN: "PB0",
                                pin: "pb0",
                                n: 0,
                                initial_mode: "Input<Floating>"
                            },
                            GpioPinOut {
                                PIN: "PB1",
                                pin: "pb1",
                                n: 1,
                                initial_mode: "Input<Floating>"
                            },
                            GpioPinOut {
                                PIN: "PB2",
                                pin: "pb2",
                                n: 2,
                                initial_mode: "Input<Floating>"
                            },
                            GpioPinOut {
                                PIN: "PB3",
                                pin: "pb3",
                                n: 3,
                                initial_mode: "Input<Floating>"
                            },
                            GpioPinOut {
                                PIN: "PB4",
                                pin: "pb4",
                                n: 4,
                                initial_mode: "Input<Floating>"
                            },
                            GpioPinOut {
                                PIN: "PB5",
                                pin: "pb5",
                                n: 5,
                                initial_mode: "Input<Floating>"
                            },
                            GpioPinOut {
                                PIN: "PB6",
                                pin: "pb6",
                                n: 6,
                                initial_mode: "Input<Floating>"
                            },
                            GpioPinOut {
                                PIN: "PB7",
                                pin: "pb7",
                                n: 7,
                                initial_mode: "Input<Floating>"
                            },
                            GpioPinOut {
                                PIN: "PB8",
                                pin: "pb8",
                                n: 8,
                                initial_mode: "Input<Floating>"
                            },
                            GpioPinOut {
                                PIN: "PB9",
                                pin: "pb9",
                                n: 9,
                                initial_mode: "Input<Floating>"
                            },
                            GpioPinOut {
                                PIN: "PB10",
                                pin: "pb10",
                                n: 10,
                                initial_mode: "Input<Floating>"
                            },
                            GpioPinOut {
                                PIN: "PB11",
                                pin: "pb11",
                                n: 11,
                                initial_mode: "Input<Floating>"
                            },
                            GpioPinOut {
                                PIN: "PB12",
                                pin: "pb12",
                                n: 12,
                                initial_mode: "Input<Floating>"
                            },
                            GpioPinOut {
                                PIN: "PB13",
                                pin: "pb13",
                                n: 13,
                                initial_mode: "Input<Floating>"
                            },
                            GpioPinOut {
                                PIN: "PB14",
                                pin: "pb14",
                                n: 14,
                                initial_mode: "Input<Floating>"
                            },
                            GpioPinOut {
                                PIN: "PB15",
                                pin: "pb15",
                                n: 15,
                                initial_mode: "Input<Floating>"
                            }
                        ]
                    },
                    GpioBankOut {
                        GPIO: "GPIOC",
                        gpio: "gpioc",
                        pins: [
                            GpioPinOut {
                                PIN: "PC0",
                                pin: "pc0",
                                n: 0,
                                initial_mode: "Input<Floating>"
                            },
                            GpioPinOut {
                                PIN: "PC1",
                                pin: "pc1",
                                n: 1,
                                initial_mode: "Input<Floating>"
                            },
                            GpioPinOut {
                                PIN: "PC2",
                                pin: "pc2",
                                n: 2,
                                initial_mode: "Input<Floating>"
                            },
                            GpioPinOut {
                                PIN: "PC3",
                                pin: "pc3",
                                n: 3,
                                initial_mode: "Input<Floating>"
                            },
                            GpioPinOut {
                                PIN: "PC4",
                                pin: "pc4",
                                n: 4,
                                initial_mode: "Input<Floating>"
                            },
                            GpioPinOut {
                                PIN: "PC5",
                                pin: "pc5",
                                n: 5,
                                initial_mode: "Input<Floating>"
                            },
                            GpioPinOut {
                                PIN: "PC6",
                                pin: "pc6",
                                n: 6,
                                initial_mode: "Input<Floating>"
                            },
                            GpioPinOut {
                                PIN: "PC7",
                                pin: "pc7",
                                n: 7,
                                initial_mode: "Input<Floating>"
                            },
                            GpioPinOut {
                                PIN: "PC8",
                                pin: "pc8",
                                n: 8,
                                initial_mode: "Input<Floating>"
                            },
                            GpioPinOut {
                                PIN: "PC9",
                                pin: "pc9",
                                n: 9,
                                initial_mode: "Input<Floating>"
                            },
                            GpioPinOut {
                                PIN: "PC10",
                                pin: "pc10",
                                n: 10,
                                initial_mode: "Input<Floating>"
                            },
                            GpioPinOut {
                                PIN: "PC11",
                                pin: "pc11",
                                n: 11,
                                initial_mode: "Input<Floating>"
                            },
                            GpioPinOut {
                                PIN: "PC12",
                                pin: "pc12",
                                n: 12,
                                initial_mode: "Input<Floating>"
                            },
                            GpioPinOut {
                                PIN: "PC13",
                                pin: "pc13",
                                n: 13,
                                initial_mode: "Input<Floating>"
                            },
                            GpioPinOut {
                                PIN: "PC14",
                                pin: "pc14",
                                n: 14,
                                initial_mode: "Input<Floating>"
                            },
                            GpioPinOut {
                                PIN: "PC15",
                                pin: "pc15",
                                n: 15,
                                initial_mode: "Input<Floating>"
                            }
                        ]
                    },
                    GpioBankOut {
                        GPIO: "GPIOD",
                        gpio: "gpiod",
                        pins: [
                            GpioPinOut {
                                PIN: "PD2",
                                pin: "pd2",
                                n: 2,
                                initial_mode: "Input<Floating>"
                            }
                        ]
                    },
                    GpioBankOut {
                        GPIO: "GPIOF",
                        gpio: "gpiof",
                        pins: [
                            GpioPinOut {
                                PIN: "PF0",
                                pin: "pf0",
                                n: 0,
                                initial_mode: "Input<Floating>"
                            },
                            GpioPinOut {
                                PIN: "PF1",
                                pin: "pf1",
                                n: 1,
                                initial_mode: "Input<Floating>"
                            },
                            GpioPinOut {
                                PIN: "PF4",
                                pin: "pf4",
                                n: 4,
                                initial_mode: "Input<Floating>"
                            },
                            GpioPinOut {
                                PIN: "PF6",
                                pin: "pf6",
                                n: 6,
                                initial_mode: "Input<Floating>"
                            }
                        ]
                    }
                ]
            }
        )
    }
}
