use rigless::soc::{Access, FieldSpec, Layout, ReadAction, RegisterSpec, Width, WriteModify};
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum Register {
Idc = 0,
Cr = 1,
Apb3fz1 = 2,
Apb1lfz1 = 3,
Apb2fz1 = 4,
Apb4fz1 = 5,
}
impl Register {
pub const ALL: [Self; 6] = [Self::Idc, Self::Cr, Self::Apb3fz1, Self::Apb1lfz1, Self::Apb2fz1, Self::Apb4fz1];
}
impl Layout for Register {
const REGISTERS: &'static [RegisterSpec] = ®ISTERS;
fn from_index(index: usize) -> Option<Self> {
Self::ALL.get(index).copied()
}
fn index(self) -> usize {
self as usize
}
}
pub mod idc {
use super::FieldSpec;
pub const DEV_ID: &FieldSpec = &super::REGISTERS[0].fields[0];
pub const REV_ID: &FieldSpec = &super::REGISTERS[0].fields[1];
}
pub mod cr {
use super::FieldSpec;
pub const DBGSLEEP_D1: &FieldSpec = &super::REGISTERS[1].fields[0];
pub const DBGSTOP_D1: &FieldSpec = &super::REGISTERS[1].fields[1];
pub const DBGSTBY_D1: &FieldSpec = &super::REGISTERS[1].fields[2];
pub const DBGSLEEP_D2: &FieldSpec = &super::REGISTERS[1].fields[3];
pub const DBGSTOP_D2: &FieldSpec = &super::REGISTERS[1].fields[4];
pub const DBGSTBY_D2: &FieldSpec = &super::REGISTERS[1].fields[5];
pub const DBGSTOP_D3: &FieldSpec = &super::REGISTERS[1].fields[6];
pub const DBGSTBY_D3: &FieldSpec = &super::REGISTERS[1].fields[7];
pub const TRACECLKEN: &FieldSpec = &super::REGISTERS[1].fields[8];
pub const D1DBGCKEN: &FieldSpec = &super::REGISTERS[1].fields[9];
pub const D3DBGCKEN: &FieldSpec = &super::REGISTERS[1].fields[10];
pub const TRGOEN: &FieldSpec = &super::REGISTERS[1].fields[11];
}
pub mod apb3fz1 {
use super::FieldSpec;
pub const WWDG1: &FieldSpec = &super::REGISTERS[2].fields[0];
}
pub mod apb1lfz1 {
use super::FieldSpec;
pub const DBG_TIM2: &FieldSpec = &super::REGISTERS[3].fields[0];
pub const DBG_TIM3: &FieldSpec = &super::REGISTERS[3].fields[1];
pub const DBG_TIM4: &FieldSpec = &super::REGISTERS[3].fields[2];
pub const DBG_TIM5: &FieldSpec = &super::REGISTERS[3].fields[3];
pub const DBG_TIM6: &FieldSpec = &super::REGISTERS[3].fields[4];
pub const DBG_TIM7: &FieldSpec = &super::REGISTERS[3].fields[5];
pub const DBG_TIM12: &FieldSpec = &super::REGISTERS[3].fields[6];
pub const DBG_TIM13: &FieldSpec = &super::REGISTERS[3].fields[7];
pub const DBG_TIM14: &FieldSpec = &super::REGISTERS[3].fields[8];
pub const DBG_LPTIM1: &FieldSpec = &super::REGISTERS[3].fields[9];
pub const DBG_I2C1: &FieldSpec = &super::REGISTERS[3].fields[10];
pub const DBG_I2C2: &FieldSpec = &super::REGISTERS[3].fields[11];
pub const DBG_I2C3: &FieldSpec = &super::REGISTERS[3].fields[12];
}
pub mod apb2fz1 {
use super::FieldSpec;
pub const DBG_TIM1: &FieldSpec = &super::REGISTERS[4].fields[0];
pub const DBG_TIM8: &FieldSpec = &super::REGISTERS[4].fields[1];
pub const DBG_TIM15: &FieldSpec = &super::REGISTERS[4].fields[2];
pub const DBG_TIM16: &FieldSpec = &super::REGISTERS[4].fields[3];
pub const DBG_TIM17: &FieldSpec = &super::REGISTERS[4].fields[4];
pub const DBG_HRTIM: &FieldSpec = &super::REGISTERS[4].fields[5];
}
pub mod apb4fz1 {
use super::FieldSpec;
pub const DBG_I2C4: &FieldSpec = &super::REGISTERS[5].fields[0];
pub const DBG_LPTIM2: &FieldSpec = &super::REGISTERS[5].fields[1];
pub const DBG_LPTIM3: &FieldSpec = &super::REGISTERS[5].fields[2];
pub const DBG_LPTIM4: &FieldSpec = &super::REGISTERS[5].fields[3];
pub const DBG_LPTIM5: &FieldSpec = &super::REGISTERS[5].fields[4];
pub const DBG_RTC: &FieldSpec = &super::REGISTERS[5].fields[5];
pub const DBG_IWDG1: &FieldSpec = &super::REGISTERS[5].fields[6];
}
pub static REGISTERS: [RegisterSpec; 6] = [
RegisterSpec { name: "IDC", offset: 0x0, width: Width::W32, reset: 0x1000_6450, access: Access::ReadOnly, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "DEV_ID", bit: 0, width: 12, access: Access::ReadOnly, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "REV_ID", bit: 16, width: 16, access: Access::ReadOnly, read: ReadAction::None, write: WriteModify::None },
] },
RegisterSpec { name: "CR", offset: 0x4, width: Width::W32, reset: 0x0000_0000, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "DBGSLEEP_D1", bit: 0, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "DBGSTOP_D1", bit: 1, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "DBGSTBY_D1", bit: 2, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "DBGSLEEP_D2", bit: 3, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "DBGSTOP_D2", bit: 4, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "DBGSTBY_D2", bit: 5, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "DBGSTOP_D3", bit: 7, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "DBGSTBY_D3", bit: 8, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "TRACECLKEN", bit: 20, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "D1DBGCKEN", bit: 21, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "D3DBGCKEN", bit: 22, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "TRGOEN", bit: 28, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
] },
RegisterSpec { name: "APB3FZ1", offset: 0x34, width: Width::W32, reset: 0x0000_0000, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "WWDG1", bit: 6, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
] },
RegisterSpec { name: "APB1LFZ1", offset: 0x3C, width: Width::W32, reset: 0x0000_0000, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "DBG_TIM2", bit: 0, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "DBG_TIM3", bit: 1, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "DBG_TIM4", bit: 2, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "DBG_TIM5", bit: 3, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "DBG_TIM6", bit: 4, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "DBG_TIM7", bit: 5, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "DBG_TIM12", bit: 6, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "DBG_TIM13", bit: 7, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "DBG_TIM14", bit: 8, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "DBG_LPTIM1", bit: 9, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "DBG_I2C1", bit: 21, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "DBG_I2C2", bit: 22, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "DBG_I2C3", bit: 23, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
] },
RegisterSpec { name: "APB2FZ1", offset: 0x4C, width: Width::W32, reset: 0x0000_0000, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "DBG_TIM1", bit: 0, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "DBG_TIM8", bit: 1, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "DBG_TIM15", bit: 16, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "DBG_TIM16", bit: 17, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "DBG_TIM17", bit: 18, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "DBG_HRTIM", bit: 29, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
] },
RegisterSpec { name: "APB4FZ1", offset: 0x54, width: Width::W32, reset: 0x0000_0000, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None, fields: &[
FieldSpec { name: "DBG_I2C4", bit: 7, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "DBG_LPTIM2", bit: 9, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "DBG_LPTIM3", bit: 10, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "DBG_LPTIM4", bit: 11, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "DBG_LPTIM5", bit: 12, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "DBG_RTC", bit: 16, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
FieldSpec { name: "DBG_IWDG1", bit: 18, width: 1, access: Access::ReadWrite, read: ReadAction::None, write: WriteModify::None },
] },
];