# [ doc = "General-purpose I/Os" ]
# [ repr ( C ) ]
pub struct Gpio {
# [ doc = "0x00 - GPIO port mode register" ]
pub moder: Moder,
# [ doc = "0x04 - GPIO port output type register" ]
pub otyper: Otyper,
# [ doc = "0x08 - GPIO port output speed register" ]
pub ospeedr: Ospeedr,
# [ doc = "0x0c - GPIO port pull-up/pull-down register" ]
pub pupdr: Pupdr,
# [ doc = "0x10 - GPIO port input data register" ]
pub idr: Idr,
# [ doc = "0x14 - GPIO port output data register" ]
pub odr: Odr,
# [ doc = "0x18 - GPIO port bit set/reset register" ]
pub bsrr: Bsrr,
# [ doc = "0x1c - GPIO port configuration lock register" ]
pub lckr: Lckr,
# [ doc = "0x20 - GPIO alternate function low register" ]
pub afrl: Afrl,
# [ doc = "0x24 - GPIO alternate function high register" ]
pub afrh: Afrh,
# [ doc = "0x28 - Port bit reset register" ]
pub brr: Brr,
}
# [ repr ( C ) ]
pub struct Moder {
register: ::volatile_register::RW<u32>,
}
impl Moder {
pub fn read_bits(&self) -> u32 {
self.register.read()
}
pub unsafe fn modify_bits<F>(&mut self, f: F)
where F: FnOnce(&mut u32)
{
let mut bits = self.register.read();
f(&mut bits);
self.register.write(bits);
}
pub unsafe fn write_bits(&mut self, bits: u32) {
self.register.write(bits);
}
pub fn modify<F>(&mut self, f: F)
where for<'w> F: FnOnce(&ModerR, &'w mut ModerW) -> &'w mut ModerW
{
let bits = self.register.read();
let r = ModerR { bits: bits };
let mut w = ModerW { bits: bits };
f(&r, &mut w);
self.register.write(w.bits);
}
pub fn read(&self) -> ModerR {
ModerR { bits: self.register.read() }
}
pub fn write<F>(&mut self, f: F)
where F: FnOnce(&mut ModerW) -> &mut ModerW
{
let mut w = ModerW::reset_value();
f(&mut w);
self.register.write(w.bits);
}
}
# [ derive ( Clone , Copy ) ]
# [ repr ( C ) ]
pub struct ModerR {
bits: u32,
}
impl ModerR {
# [ doc = "Bits 30:31 - Port x configuration bits (y = 0..15)" ]
pub fn moder15(&self) -> u8 {
const MASK: u32 = 3;
const OFFSET: u8 = 30u8;
((self.bits >> OFFSET) & MASK) as u8
}
# [ doc = "Bits 28:29 - Port x configuration bits (y = 0..15)" ]
pub fn moder14(&self) -> u8 {
const MASK: u32 = 3;
const OFFSET: u8 = 28u8;
((self.bits >> OFFSET) & MASK) as u8
}
# [ doc = "Bits 26:27 - Port x configuration bits (y = 0..15)" ]
pub fn moder13(&self) -> u8 {
const MASK: u32 = 3;
const OFFSET: u8 = 26u8;
((self.bits >> OFFSET) & MASK) as u8
}
# [ doc = "Bits 24:25 - Port x configuration bits (y = 0..15)" ]
pub fn moder12(&self) -> u8 {
const MASK: u32 = 3;
const OFFSET: u8 = 24u8;
((self.bits >> OFFSET) & MASK) as u8
}
# [ doc = "Bits 22:23 - Port x configuration bits (y = 0..15)" ]
pub fn moder11(&self) -> u8 {
const MASK: u32 = 3;
const OFFSET: u8 = 22u8;
((self.bits >> OFFSET) & MASK) as u8
}
# [ doc = "Bits 20:21 - Port x configuration bits (y = 0..15)" ]
pub fn moder10(&self) -> u8 {
const MASK: u32 = 3;
const OFFSET: u8 = 20u8;
((self.bits >> OFFSET) & MASK) as u8
}
# [ doc = "Bits 18:19 - Port x configuration bits (y = 0..15)" ]
pub fn moder9(&self) -> u8 {
const MASK: u32 = 3;
const OFFSET: u8 = 18u8;
((self.bits >> OFFSET) & MASK) as u8
}
# [ doc = "Bits 16:17 - Port x configuration bits (y = 0..15)" ]
pub fn moder8(&self) -> u8 {
const MASK: u32 = 3;
const OFFSET: u8 = 16u8;
((self.bits >> OFFSET) & MASK) as u8
}
# [ doc = "Bits 14:15 - Port x configuration bits (y = 0..15)" ]
pub fn moder7(&self) -> u8 {
const MASK: u32 = 3;
const OFFSET: u8 = 14u8;
((self.bits >> OFFSET) & MASK) as u8
}
# [ doc = "Bits 12:13 - Port x configuration bits (y = 0..15)" ]
pub fn moder6(&self) -> u8 {
const MASK: u32 = 3;
const OFFSET: u8 = 12u8;
((self.bits >> OFFSET) & MASK) as u8
}
# [ doc = "Bits 10:11 - Port x configuration bits (y = 0..15)" ]
pub fn moder5(&self) -> u8 {
const MASK: u32 = 3;
const OFFSET: u8 = 10u8;
((self.bits >> OFFSET) & MASK) as u8
}
# [ doc = "Bits 8:9 - Port x configuration bits (y = 0..15)" ]
pub fn moder4(&self) -> u8 {
const MASK: u32 = 3;
const OFFSET: u8 = 8u8;
((self.bits >> OFFSET) & MASK) as u8
}
# [ doc = "Bits 6:7 - Port x configuration bits (y = 0..15)" ]
pub fn moder3(&self) -> u8 {
const MASK: u32 = 3;
const OFFSET: u8 = 6u8;
((self.bits >> OFFSET) & MASK) as u8
}
# [ doc = "Bits 4:5 - Port x configuration bits (y = 0..15)" ]
pub fn moder2(&self) -> u8 {
const MASK: u32 = 3;
const OFFSET: u8 = 4u8;
((self.bits >> OFFSET) & MASK) as u8
}
# [ doc = "Bits 2:3 - Port x configuration bits (y = 0..15)" ]
pub fn moder1(&self) -> u8 {
const MASK: u32 = 3;
const OFFSET: u8 = 2u8;
((self.bits >> OFFSET) & MASK) as u8
}
# [ doc = "Bits 0:1 - Port x configuration bits (y = 0..15)" ]
pub fn moder0(&self) -> u8 {
const MASK: u32 = 3;
const OFFSET: u8 = 0u8;
((self.bits >> OFFSET) & MASK) as u8
}
}
# [ derive ( Clone , Copy ) ]
# [ repr ( C ) ]
pub struct ModerW {
bits: u32,
}
impl ModerW {
# [ doc = r" Reset value" ]
pub fn reset_value() -> Self {
ModerW { bits: 671088640 }
}
# [ doc = "Bits 30:31 - Port x configuration bits (y = 0..15)" ]
pub fn moder15(&mut self, value: u8) -> &mut Self {
const OFFSET: u8 = 30u8;
const MASK: u8 = 3;
self.bits &= !((MASK as u32) << OFFSET);
self.bits |= ((value & MASK) as u32) << OFFSET;
self
}
# [ doc = "Bits 28:29 - Port x configuration bits (y = 0..15)" ]
pub fn moder14(&mut self, value: u8) -> &mut Self {
const OFFSET: u8 = 28u8;
const MASK: u8 = 3;
self.bits &= !((MASK as u32) << OFFSET);
self.bits |= ((value & MASK) as u32) << OFFSET;
self
}
# [ doc = "Bits 26:27 - Port x configuration bits (y = 0..15)" ]
pub fn moder13(&mut self, value: u8) -> &mut Self {
const OFFSET: u8 = 26u8;
const MASK: u8 = 3;
self.bits &= !((MASK as u32) << OFFSET);
self.bits |= ((value & MASK) as u32) << OFFSET;
self
}
# [ doc = "Bits 24:25 - Port x configuration bits (y = 0..15)" ]
pub fn moder12(&mut self, value: u8) -> &mut Self {
const OFFSET: u8 = 24u8;
const MASK: u8 = 3;
self.bits &= !((MASK as u32) << OFFSET);
self.bits |= ((value & MASK) as u32) << OFFSET;
self
}
# [ doc = "Bits 22:23 - Port x configuration bits (y = 0..15)" ]
pub fn moder11(&mut self, value: u8) -> &mut Self {
const OFFSET: u8 = 22u8;
const MASK: u8 = 3;
self.bits &= !((MASK as u32) << OFFSET);
self.bits |= ((value & MASK) as u32) << OFFSET;
self
}
# [ doc = "Bits 20:21 - Port x configuration bits (y = 0..15)" ]
pub fn moder10(&mut self, value: u8) -> &mut Self {
const OFFSET: u8 = 20u8;
const MASK: u8 = 3;
self.bits &= !((MASK as u32) << OFFSET);
self.bits |= ((value & MASK) as u32) << OFFSET;
self
}
# [ doc = "Bits 18:19 - Port x configuration bits (y = 0..15)" ]
pub fn moder9(&mut self, value: u8) -> &mut Self {
const OFFSET: u8 = 18u8;
const MASK: u8 = 3;
self.bits &= !((MASK as u32) << OFFSET);
self.bits |= ((value & MASK) as u32) << OFFSET;
self
}
# [ doc = "Bits 16:17 - Port x configuration bits (y = 0..15)" ]
pub fn moder8(&mut self, value: u8) -> &mut Self {
const OFFSET: u8 = 16u8;
const MASK: u8 = 3;
self.bits &= !((MASK as u32) << OFFSET);
self.bits |= ((value & MASK) as u32) << OFFSET;
self
}
# [ doc = "Bits 14:15 - Port x configuration bits (y = 0..15)" ]
pub fn moder7(&mut self, value: u8) -> &mut Self {
const OFFSET: u8 = 14u8;
const MASK: u8 = 3;
self.bits &= !((MASK as u32) << OFFSET);
self.bits |= ((value & MASK) as u32) << OFFSET;
self
}
# [ doc = "Bits 12:13 - Port x configuration bits (y = 0..15)" ]
pub fn moder6(&mut self, value: u8) -> &mut Self {
const OFFSET: u8 = 12u8;
const MASK: u8 = 3;
self.bits &= !((MASK as u32) << OFFSET);
self.bits |= ((value & MASK) as u32) << OFFSET;
self
}
# [ doc = "Bits 10:11 - Port x configuration bits (y = 0..15)" ]
pub fn moder5(&mut self, value: u8) -> &mut Self {
const OFFSET: u8 = 10u8;
const MASK: u8 = 3;
self.bits &= !((MASK as u32) << OFFSET);
self.bits |= ((value & MASK) as u32) << OFFSET;
self
}
# [ doc = "Bits 8:9 - Port x configuration bits (y = 0..15)" ]
pub fn moder4(&mut self, value: u8) -> &mut Self {
const OFFSET: u8 = 8u8;
const MASK: u8 = 3;
self.bits &= !((MASK as u32) << OFFSET);
self.bits |= ((value & MASK) as u32) << OFFSET;
self
}
# [ doc = "Bits 6:7 - Port x configuration bits (y = 0..15)" ]
pub fn moder3(&mut self, value: u8) -> &mut Self {
const OFFSET: u8 = 6u8;
const MASK: u8 = 3;
self.bits &= !((MASK as u32) << OFFSET);
self.bits |= ((value & MASK) as u32) << OFFSET;
self
}
# [ doc = "Bits 4:5 - Port x configuration bits (y = 0..15)" ]
pub fn moder2(&mut self, value: u8) -> &mut Self {
const OFFSET: u8 = 4u8;
const MASK: u8 = 3;
self.bits &= !((MASK as u32) << OFFSET);
self.bits |= ((value & MASK) as u32) << OFFSET;
self
}
# [ doc = "Bits 2:3 - Port x configuration bits (y = 0..15)" ]
pub fn moder1(&mut self, value: u8) -> &mut Self {
const OFFSET: u8 = 2u8;
const MASK: u8 = 3;
self.bits &= !((MASK as u32) << OFFSET);
self.bits |= ((value & MASK) as u32) << OFFSET;
self
}
# [ doc = "Bits 0:1 - Port x configuration bits (y = 0..15)" ]
pub fn moder0(&mut self, value: u8) -> &mut Self {
const OFFSET: u8 = 0u8;
const MASK: u8 = 3;
self.bits &= !((MASK as u32) << OFFSET);
self.bits |= ((value & MASK) as u32) << OFFSET;
self
}
}
# [ repr ( C ) ]
pub struct Otyper {
register: ::volatile_register::RW<u32>,
}
impl Otyper {
pub fn read_bits(&self) -> u32 {
self.register.read()
}
pub unsafe fn modify_bits<F>(&mut self, f: F)
where F: FnOnce(&mut u32)
{
let mut bits = self.register.read();
f(&mut bits);
self.register.write(bits);
}
pub unsafe fn write_bits(&mut self, bits: u32) {
self.register.write(bits);
}
pub fn modify<F>(&mut self, f: F)
where for<'w> F: FnOnce(&OtyperR, &'w mut OtyperW) -> &'w mut OtyperW
{
let bits = self.register.read();
let r = OtyperR { bits: bits };
let mut w = OtyperW { bits: bits };
f(&r, &mut w);
self.register.write(w.bits);
}
pub fn read(&self) -> OtyperR {
OtyperR { bits: self.register.read() }
}
pub fn write<F>(&mut self, f: F)
where F: FnOnce(&mut OtyperW) -> &mut OtyperW
{
let mut w = OtyperW::reset_value();
f(&mut w);
self.register.write(w.bits);
}
}
# [ derive ( Clone , Copy ) ]
# [ repr ( C ) ]
pub struct OtyperR {
bits: u32,
}
impl OtyperR {
# [ doc = "Bit 15 - Port x configuration bits (y = 0..15)" ]
pub fn ot15(&self) -> bool {
const OFFSET: u8 = 15u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 14 - Port x configuration bits (y = 0..15)" ]
pub fn ot14(&self) -> bool {
const OFFSET: u8 = 14u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 13 - Port x configuration bits (y = 0..15)" ]
pub fn ot13(&self) -> bool {
const OFFSET: u8 = 13u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 12 - Port x configuration bits (y = 0..15)" ]
pub fn ot12(&self) -> bool {
const OFFSET: u8 = 12u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 11 - Port x configuration bits (y = 0..15)" ]
pub fn ot11(&self) -> bool {
const OFFSET: u8 = 11u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 10 - Port x configuration bits (y = 0..15)" ]
pub fn ot10(&self) -> bool {
const OFFSET: u8 = 10u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 9 - Port x configuration bits (y = 0..15)" ]
pub fn ot9(&self) -> bool {
const OFFSET: u8 = 9u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 8 - Port x configuration bits (y = 0..15)" ]
pub fn ot8(&self) -> bool {
const OFFSET: u8 = 8u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 7 - Port x configuration bits (y = 0..15)" ]
pub fn ot7(&self) -> bool {
const OFFSET: u8 = 7u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 6 - Port x configuration bits (y = 0..15)" ]
pub fn ot6(&self) -> bool {
const OFFSET: u8 = 6u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 5 - Port x configuration bits (y = 0..15)" ]
pub fn ot5(&self) -> bool {
const OFFSET: u8 = 5u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 4 - Port x configuration bits (y = 0..15)" ]
pub fn ot4(&self) -> bool {
const OFFSET: u8 = 4u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 3 - Port x configuration bits (y = 0..15)" ]
pub fn ot3(&self) -> bool {
const OFFSET: u8 = 3u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 2 - Port x configuration bits (y = 0..15)" ]
pub fn ot2(&self) -> bool {
const OFFSET: u8 = 2u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 1 - Port x configuration bits (y = 0..15)" ]
pub fn ot1(&self) -> bool {
const OFFSET: u8 = 1u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 0 - Port x configuration bits (y = 0..15)" ]
pub fn ot0(&self) -> bool {
const OFFSET: u8 = 0u8;
self.bits & (1 << OFFSET) != 0
}
}
# [ derive ( Clone , Copy ) ]
# [ repr ( C ) ]
pub struct OtyperW {
bits: u32,
}
impl OtyperW {
# [ doc = r" Reset value" ]
pub fn reset_value() -> Self {
OtyperW { bits: 0 }
}
# [ doc = "Bit 15 - Port x configuration bits (y = 0..15)" ]
pub fn ot15(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 15u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 14 - Port x configuration bits (y = 0..15)" ]
pub fn ot14(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 14u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 13 - Port x configuration bits (y = 0..15)" ]
pub fn ot13(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 13u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 12 - Port x configuration bits (y = 0..15)" ]
pub fn ot12(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 12u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 11 - Port x configuration bits (y = 0..15)" ]
pub fn ot11(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 11u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 10 - Port x configuration bits (y = 0..15)" ]
pub fn ot10(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 10u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 9 - Port x configuration bits (y = 0..15)" ]
pub fn ot9(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 9u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 8 - Port x configuration bits (y = 0..15)" ]
pub fn ot8(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 8u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 7 - Port x configuration bits (y = 0..15)" ]
pub fn ot7(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 7u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 6 - Port x configuration bits (y = 0..15)" ]
pub fn ot6(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 6u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 5 - Port x configuration bits (y = 0..15)" ]
pub fn ot5(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 5u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 4 - Port x configuration bits (y = 0..15)" ]
pub fn ot4(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 4u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 3 - Port x configuration bits (y = 0..15)" ]
pub fn ot3(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 3u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 2 - Port x configuration bits (y = 0..15)" ]
pub fn ot2(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 2u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 1 - Port x configuration bits (y = 0..15)" ]
pub fn ot1(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 1u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 0 - Port x configuration bits (y = 0..15)" ]
pub fn ot0(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 0u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
}
# [ repr ( C ) ]
pub struct Ospeedr {
register: ::volatile_register::RW<u32>,
}
impl Ospeedr {
pub fn read_bits(&self) -> u32 {
self.register.read()
}
pub unsafe fn modify_bits<F>(&mut self, f: F)
where F: FnOnce(&mut u32)
{
let mut bits = self.register.read();
f(&mut bits);
self.register.write(bits);
}
pub unsafe fn write_bits(&mut self, bits: u32) {
self.register.write(bits);
}
pub fn modify<F>(&mut self, f: F)
where for<'w> F: FnOnce(&OspeedrR, &'w mut OspeedrW) -> &'w mut OspeedrW
{
let bits = self.register.read();
let r = OspeedrR { bits: bits };
let mut w = OspeedrW { bits: bits };
f(&r, &mut w);
self.register.write(w.bits);
}
pub fn read(&self) -> OspeedrR {
OspeedrR { bits: self.register.read() }
}
pub fn write<F>(&mut self, f: F)
where F: FnOnce(&mut OspeedrW) -> &mut OspeedrW
{
let mut w = OspeedrW::reset_value();
f(&mut w);
self.register.write(w.bits);
}
}
# [ derive ( Clone , Copy ) ]
# [ repr ( C ) ]
pub struct OspeedrR {
bits: u32,
}
impl OspeedrR {
# [ doc = "Bits 30:31 - Port x configuration bits (y = 0..15)" ]
pub fn ospeedr15(&self) -> u8 {
const MASK: u32 = 3;
const OFFSET: u8 = 30u8;
((self.bits >> OFFSET) & MASK) as u8
}
# [ doc = "Bits 28:29 - Port x configuration bits (y = 0..15)" ]
pub fn ospeedr14(&self) -> u8 {
const MASK: u32 = 3;
const OFFSET: u8 = 28u8;
((self.bits >> OFFSET) & MASK) as u8
}
# [ doc = "Bits 26:27 - Port x configuration bits (y = 0..15)" ]
pub fn ospeedr13(&self) -> u8 {
const MASK: u32 = 3;
const OFFSET: u8 = 26u8;
((self.bits >> OFFSET) & MASK) as u8
}
# [ doc = "Bits 24:25 - Port x configuration bits (y = 0..15)" ]
pub fn ospeedr12(&self) -> u8 {
const MASK: u32 = 3;
const OFFSET: u8 = 24u8;
((self.bits >> OFFSET) & MASK) as u8
}
# [ doc = "Bits 22:23 - Port x configuration bits (y = 0..15)" ]
pub fn ospeedr11(&self) -> u8 {
const MASK: u32 = 3;
const OFFSET: u8 = 22u8;
((self.bits >> OFFSET) & MASK) as u8
}
# [ doc = "Bits 20:21 - Port x configuration bits (y = 0..15)" ]
pub fn ospeedr10(&self) -> u8 {
const MASK: u32 = 3;
const OFFSET: u8 = 20u8;
((self.bits >> OFFSET) & MASK) as u8
}
# [ doc = "Bits 18:19 - Port x configuration bits (y = 0..15)" ]
pub fn ospeedr9(&self) -> u8 {
const MASK: u32 = 3;
const OFFSET: u8 = 18u8;
((self.bits >> OFFSET) & MASK) as u8
}
# [ doc = "Bits 16:17 - Port x configuration bits (y = 0..15)" ]
pub fn ospeedr8(&self) -> u8 {
const MASK: u32 = 3;
const OFFSET: u8 = 16u8;
((self.bits >> OFFSET) & MASK) as u8
}
# [ doc = "Bits 14:15 - Port x configuration bits (y = 0..15)" ]
pub fn ospeedr7(&self) -> u8 {
const MASK: u32 = 3;
const OFFSET: u8 = 14u8;
((self.bits >> OFFSET) & MASK) as u8
}
# [ doc = "Bits 12:13 - Port x configuration bits (y = 0..15)" ]
pub fn ospeedr6(&self) -> u8 {
const MASK: u32 = 3;
const OFFSET: u8 = 12u8;
((self.bits >> OFFSET) & MASK) as u8
}
# [ doc = "Bits 10:11 - Port x configuration bits (y = 0..15)" ]
pub fn ospeedr5(&self) -> u8 {
const MASK: u32 = 3;
const OFFSET: u8 = 10u8;
((self.bits >> OFFSET) & MASK) as u8
}
# [ doc = "Bits 8:9 - Port x configuration bits (y = 0..15)" ]
pub fn ospeedr4(&self) -> u8 {
const MASK: u32 = 3;
const OFFSET: u8 = 8u8;
((self.bits >> OFFSET) & MASK) as u8
}
# [ doc = "Bits 6:7 - Port x configuration bits (y = 0..15)" ]
pub fn ospeedr3(&self) -> u8 {
const MASK: u32 = 3;
const OFFSET: u8 = 6u8;
((self.bits >> OFFSET) & MASK) as u8
}
# [ doc = "Bits 4:5 - Port x configuration bits (y = 0..15)" ]
pub fn ospeedr2(&self) -> u8 {
const MASK: u32 = 3;
const OFFSET: u8 = 4u8;
((self.bits >> OFFSET) & MASK) as u8
}
# [ doc = "Bits 2:3 - Port x configuration bits (y = 0..15)" ]
pub fn ospeedr1(&self) -> u8 {
const MASK: u32 = 3;
const OFFSET: u8 = 2u8;
((self.bits >> OFFSET) & MASK) as u8
}
# [ doc = "Bits 0:1 - Port x configuration bits (y = 0..15)" ]
pub fn ospeedr0(&self) -> u8 {
const MASK: u32 = 3;
const OFFSET: u8 = 0u8;
((self.bits >> OFFSET) & MASK) as u8
}
}
# [ derive ( Clone , Copy ) ]
# [ repr ( C ) ]
pub struct OspeedrW {
bits: u32,
}
impl OspeedrW {
# [ doc = r" Reset value" ]
pub fn reset_value() -> Self {
OspeedrW { bits: 0 }
}
# [ doc = "Bits 30:31 - Port x configuration bits (y = 0..15)" ]
pub fn ospeedr15(&mut self, value: u8) -> &mut Self {
const OFFSET: u8 = 30u8;
const MASK: u8 = 3;
self.bits &= !((MASK as u32) << OFFSET);
self.bits |= ((value & MASK) as u32) << OFFSET;
self
}
# [ doc = "Bits 28:29 - Port x configuration bits (y = 0..15)" ]
pub fn ospeedr14(&mut self, value: u8) -> &mut Self {
const OFFSET: u8 = 28u8;
const MASK: u8 = 3;
self.bits &= !((MASK as u32) << OFFSET);
self.bits |= ((value & MASK) as u32) << OFFSET;
self
}
# [ doc = "Bits 26:27 - Port x configuration bits (y = 0..15)" ]
pub fn ospeedr13(&mut self, value: u8) -> &mut Self {
const OFFSET: u8 = 26u8;
const MASK: u8 = 3;
self.bits &= !((MASK as u32) << OFFSET);
self.bits |= ((value & MASK) as u32) << OFFSET;
self
}
# [ doc = "Bits 24:25 - Port x configuration bits (y = 0..15)" ]
pub fn ospeedr12(&mut self, value: u8) -> &mut Self {
const OFFSET: u8 = 24u8;
const MASK: u8 = 3;
self.bits &= !((MASK as u32) << OFFSET);
self.bits |= ((value & MASK) as u32) << OFFSET;
self
}
# [ doc = "Bits 22:23 - Port x configuration bits (y = 0..15)" ]
pub fn ospeedr11(&mut self, value: u8) -> &mut Self {
const OFFSET: u8 = 22u8;
const MASK: u8 = 3;
self.bits &= !((MASK as u32) << OFFSET);
self.bits |= ((value & MASK) as u32) << OFFSET;
self
}
# [ doc = "Bits 20:21 - Port x configuration bits (y = 0..15)" ]
pub fn ospeedr10(&mut self, value: u8) -> &mut Self {
const OFFSET: u8 = 20u8;
const MASK: u8 = 3;
self.bits &= !((MASK as u32) << OFFSET);
self.bits |= ((value & MASK) as u32) << OFFSET;
self
}
# [ doc = "Bits 18:19 - Port x configuration bits (y = 0..15)" ]
pub fn ospeedr9(&mut self, value: u8) -> &mut Self {
const OFFSET: u8 = 18u8;
const MASK: u8 = 3;
self.bits &= !((MASK as u32) << OFFSET);
self.bits |= ((value & MASK) as u32) << OFFSET;
self
}
# [ doc = "Bits 16:17 - Port x configuration bits (y = 0..15)" ]
pub fn ospeedr8(&mut self, value: u8) -> &mut Self {
const OFFSET: u8 = 16u8;
const MASK: u8 = 3;
self.bits &= !((MASK as u32) << OFFSET);
self.bits |= ((value & MASK) as u32) << OFFSET;
self
}
# [ doc = "Bits 14:15 - Port x configuration bits (y = 0..15)" ]
pub fn ospeedr7(&mut self, value: u8) -> &mut Self {
const OFFSET: u8 = 14u8;
const MASK: u8 = 3;
self.bits &= !((MASK as u32) << OFFSET);
self.bits |= ((value & MASK) as u32) << OFFSET;
self
}
# [ doc = "Bits 12:13 - Port x configuration bits (y = 0..15)" ]
pub fn ospeedr6(&mut self, value: u8) -> &mut Self {
const OFFSET: u8 = 12u8;
const MASK: u8 = 3;
self.bits &= !((MASK as u32) << OFFSET);
self.bits |= ((value & MASK) as u32) << OFFSET;
self
}
# [ doc = "Bits 10:11 - Port x configuration bits (y = 0..15)" ]
pub fn ospeedr5(&mut self, value: u8) -> &mut Self {
const OFFSET: u8 = 10u8;
const MASK: u8 = 3;
self.bits &= !((MASK as u32) << OFFSET);
self.bits |= ((value & MASK) as u32) << OFFSET;
self
}
# [ doc = "Bits 8:9 - Port x configuration bits (y = 0..15)" ]
pub fn ospeedr4(&mut self, value: u8) -> &mut Self {
const OFFSET: u8 = 8u8;
const MASK: u8 = 3;
self.bits &= !((MASK as u32) << OFFSET);
self.bits |= ((value & MASK) as u32) << OFFSET;
self
}
# [ doc = "Bits 6:7 - Port x configuration bits (y = 0..15)" ]
pub fn ospeedr3(&mut self, value: u8) -> &mut Self {
const OFFSET: u8 = 6u8;
const MASK: u8 = 3;
self.bits &= !((MASK as u32) << OFFSET);
self.bits |= ((value & MASK) as u32) << OFFSET;
self
}
# [ doc = "Bits 4:5 - Port x configuration bits (y = 0..15)" ]
pub fn ospeedr2(&mut self, value: u8) -> &mut Self {
const OFFSET: u8 = 4u8;
const MASK: u8 = 3;
self.bits &= !((MASK as u32) << OFFSET);
self.bits |= ((value & MASK) as u32) << OFFSET;
self
}
# [ doc = "Bits 2:3 - Port x configuration bits (y = 0..15)" ]
pub fn ospeedr1(&mut self, value: u8) -> &mut Self {
const OFFSET: u8 = 2u8;
const MASK: u8 = 3;
self.bits &= !((MASK as u32) << OFFSET);
self.bits |= ((value & MASK) as u32) << OFFSET;
self
}
# [ doc = "Bits 0:1 - Port x configuration bits (y = 0..15)" ]
pub fn ospeedr0(&mut self, value: u8) -> &mut Self {
const OFFSET: u8 = 0u8;
const MASK: u8 = 3;
self.bits &= !((MASK as u32) << OFFSET);
self.bits |= ((value & MASK) as u32) << OFFSET;
self
}
}
# [ repr ( C ) ]
pub struct Pupdr {
register: ::volatile_register::RW<u32>,
}
impl Pupdr {
pub fn read_bits(&self) -> u32 {
self.register.read()
}
pub unsafe fn modify_bits<F>(&mut self, f: F)
where F: FnOnce(&mut u32)
{
let mut bits = self.register.read();
f(&mut bits);
self.register.write(bits);
}
pub unsafe fn write_bits(&mut self, bits: u32) {
self.register.write(bits);
}
pub fn modify<F>(&mut self, f: F)
where for<'w> F: FnOnce(&PupdrR, &'w mut PupdrW) -> &'w mut PupdrW
{
let bits = self.register.read();
let r = PupdrR { bits: bits };
let mut w = PupdrW { bits: bits };
f(&r, &mut w);
self.register.write(w.bits);
}
pub fn read(&self) -> PupdrR {
PupdrR { bits: self.register.read() }
}
pub fn write<F>(&mut self, f: F)
where F: FnOnce(&mut PupdrW) -> &mut PupdrW
{
let mut w = PupdrW::reset_value();
f(&mut w);
self.register.write(w.bits);
}
}
# [ derive ( Clone , Copy ) ]
# [ repr ( C ) ]
pub struct PupdrR {
bits: u32,
}
impl PupdrR {
# [ doc = "Bits 30:31 - Port x configuration bits (y = 0..15)" ]
pub fn pupdr15(&self) -> u8 {
const MASK: u32 = 3;
const OFFSET: u8 = 30u8;
((self.bits >> OFFSET) & MASK) as u8
}
# [ doc = "Bits 28:29 - Port x configuration bits (y = 0..15)" ]
pub fn pupdr14(&self) -> u8 {
const MASK: u32 = 3;
const OFFSET: u8 = 28u8;
((self.bits >> OFFSET) & MASK) as u8
}
# [ doc = "Bits 26:27 - Port x configuration bits (y = 0..15)" ]
pub fn pupdr13(&self) -> u8 {
const MASK: u32 = 3;
const OFFSET: u8 = 26u8;
((self.bits >> OFFSET) & MASK) as u8
}
# [ doc = "Bits 24:25 - Port x configuration bits (y = 0..15)" ]
pub fn pupdr12(&self) -> u8 {
const MASK: u32 = 3;
const OFFSET: u8 = 24u8;
((self.bits >> OFFSET) & MASK) as u8
}
# [ doc = "Bits 22:23 - Port x configuration bits (y = 0..15)" ]
pub fn pupdr11(&self) -> u8 {
const MASK: u32 = 3;
const OFFSET: u8 = 22u8;
((self.bits >> OFFSET) & MASK) as u8
}
# [ doc = "Bits 20:21 - Port x configuration bits (y = 0..15)" ]
pub fn pupdr10(&self) -> u8 {
const MASK: u32 = 3;
const OFFSET: u8 = 20u8;
((self.bits >> OFFSET) & MASK) as u8
}
# [ doc = "Bits 18:19 - Port x configuration bits (y = 0..15)" ]
pub fn pupdr9(&self) -> u8 {
const MASK: u32 = 3;
const OFFSET: u8 = 18u8;
((self.bits >> OFFSET) & MASK) as u8
}
# [ doc = "Bits 16:17 - Port x configuration bits (y = 0..15)" ]
pub fn pupdr8(&self) -> u8 {
const MASK: u32 = 3;
const OFFSET: u8 = 16u8;
((self.bits >> OFFSET) & MASK) as u8
}
# [ doc = "Bits 14:15 - Port x configuration bits (y = 0..15)" ]
pub fn pupdr7(&self) -> u8 {
const MASK: u32 = 3;
const OFFSET: u8 = 14u8;
((self.bits >> OFFSET) & MASK) as u8
}
# [ doc = "Bits 12:13 - Port x configuration bits (y = 0..15)" ]
pub fn pupdr6(&self) -> u8 {
const MASK: u32 = 3;
const OFFSET: u8 = 12u8;
((self.bits >> OFFSET) & MASK) as u8
}
# [ doc = "Bits 10:11 - Port x configuration bits (y = 0..15)" ]
pub fn pupdr5(&self) -> u8 {
const MASK: u32 = 3;
const OFFSET: u8 = 10u8;
((self.bits >> OFFSET) & MASK) as u8
}
# [ doc = "Bits 8:9 - Port x configuration bits (y = 0..15)" ]
pub fn pupdr4(&self) -> u8 {
const MASK: u32 = 3;
const OFFSET: u8 = 8u8;
((self.bits >> OFFSET) & MASK) as u8
}
# [ doc = "Bits 6:7 - Port x configuration bits (y = 0..15)" ]
pub fn pupdr3(&self) -> u8 {
const MASK: u32 = 3;
const OFFSET: u8 = 6u8;
((self.bits >> OFFSET) & MASK) as u8
}
# [ doc = "Bits 4:5 - Port x configuration bits (y = 0..15)" ]
pub fn pupdr2(&self) -> u8 {
const MASK: u32 = 3;
const OFFSET: u8 = 4u8;
((self.bits >> OFFSET) & MASK) as u8
}
# [ doc = "Bits 2:3 - Port x configuration bits (y = 0..15)" ]
pub fn pupdr1(&self) -> u8 {
const MASK: u32 = 3;
const OFFSET: u8 = 2u8;
((self.bits >> OFFSET) & MASK) as u8
}
# [ doc = "Bits 0:1 - Port x configuration bits (y = 0..15)" ]
pub fn pupdr0(&self) -> u8 {
const MASK: u32 = 3;
const OFFSET: u8 = 0u8;
((self.bits >> OFFSET) & MASK) as u8
}
}
# [ derive ( Clone , Copy ) ]
# [ repr ( C ) ]
pub struct PupdrW {
bits: u32,
}
impl PupdrW {
# [ doc = r" Reset value" ]
pub fn reset_value() -> Self {
PupdrW { bits: 603979776 }
}
# [ doc = "Bits 30:31 - Port x configuration bits (y = 0..15)" ]
pub fn pupdr15(&mut self, value: u8) -> &mut Self {
const OFFSET: u8 = 30u8;
const MASK: u8 = 3;
self.bits &= !((MASK as u32) << OFFSET);
self.bits |= ((value & MASK) as u32) << OFFSET;
self
}
# [ doc = "Bits 28:29 - Port x configuration bits (y = 0..15)" ]
pub fn pupdr14(&mut self, value: u8) -> &mut Self {
const OFFSET: u8 = 28u8;
const MASK: u8 = 3;
self.bits &= !((MASK as u32) << OFFSET);
self.bits |= ((value & MASK) as u32) << OFFSET;
self
}
# [ doc = "Bits 26:27 - Port x configuration bits (y = 0..15)" ]
pub fn pupdr13(&mut self, value: u8) -> &mut Self {
const OFFSET: u8 = 26u8;
const MASK: u8 = 3;
self.bits &= !((MASK as u32) << OFFSET);
self.bits |= ((value & MASK) as u32) << OFFSET;
self
}
# [ doc = "Bits 24:25 - Port x configuration bits (y = 0..15)" ]
pub fn pupdr12(&mut self, value: u8) -> &mut Self {
const OFFSET: u8 = 24u8;
const MASK: u8 = 3;
self.bits &= !((MASK as u32) << OFFSET);
self.bits |= ((value & MASK) as u32) << OFFSET;
self
}
# [ doc = "Bits 22:23 - Port x configuration bits (y = 0..15)" ]
pub fn pupdr11(&mut self, value: u8) -> &mut Self {
const OFFSET: u8 = 22u8;
const MASK: u8 = 3;
self.bits &= !((MASK as u32) << OFFSET);
self.bits |= ((value & MASK) as u32) << OFFSET;
self
}
# [ doc = "Bits 20:21 - Port x configuration bits (y = 0..15)" ]
pub fn pupdr10(&mut self, value: u8) -> &mut Self {
const OFFSET: u8 = 20u8;
const MASK: u8 = 3;
self.bits &= !((MASK as u32) << OFFSET);
self.bits |= ((value & MASK) as u32) << OFFSET;
self
}
# [ doc = "Bits 18:19 - Port x configuration bits (y = 0..15)" ]
pub fn pupdr9(&mut self, value: u8) -> &mut Self {
const OFFSET: u8 = 18u8;
const MASK: u8 = 3;
self.bits &= !((MASK as u32) << OFFSET);
self.bits |= ((value & MASK) as u32) << OFFSET;
self
}
# [ doc = "Bits 16:17 - Port x configuration bits (y = 0..15)" ]
pub fn pupdr8(&mut self, value: u8) -> &mut Self {
const OFFSET: u8 = 16u8;
const MASK: u8 = 3;
self.bits &= !((MASK as u32) << OFFSET);
self.bits |= ((value & MASK) as u32) << OFFSET;
self
}
# [ doc = "Bits 14:15 - Port x configuration bits (y = 0..15)" ]
pub fn pupdr7(&mut self, value: u8) -> &mut Self {
const OFFSET: u8 = 14u8;
const MASK: u8 = 3;
self.bits &= !((MASK as u32) << OFFSET);
self.bits |= ((value & MASK) as u32) << OFFSET;
self
}
# [ doc = "Bits 12:13 - Port x configuration bits (y = 0..15)" ]
pub fn pupdr6(&mut self, value: u8) -> &mut Self {
const OFFSET: u8 = 12u8;
const MASK: u8 = 3;
self.bits &= !((MASK as u32) << OFFSET);
self.bits |= ((value & MASK) as u32) << OFFSET;
self
}
# [ doc = "Bits 10:11 - Port x configuration bits (y = 0..15)" ]
pub fn pupdr5(&mut self, value: u8) -> &mut Self {
const OFFSET: u8 = 10u8;
const MASK: u8 = 3;
self.bits &= !((MASK as u32) << OFFSET);
self.bits |= ((value & MASK) as u32) << OFFSET;
self
}
# [ doc = "Bits 8:9 - Port x configuration bits (y = 0..15)" ]
pub fn pupdr4(&mut self, value: u8) -> &mut Self {
const OFFSET: u8 = 8u8;
const MASK: u8 = 3;
self.bits &= !((MASK as u32) << OFFSET);
self.bits |= ((value & MASK) as u32) << OFFSET;
self
}
# [ doc = "Bits 6:7 - Port x configuration bits (y = 0..15)" ]
pub fn pupdr3(&mut self, value: u8) -> &mut Self {
const OFFSET: u8 = 6u8;
const MASK: u8 = 3;
self.bits &= !((MASK as u32) << OFFSET);
self.bits |= ((value & MASK) as u32) << OFFSET;
self
}
# [ doc = "Bits 4:5 - Port x configuration bits (y = 0..15)" ]
pub fn pupdr2(&mut self, value: u8) -> &mut Self {
const OFFSET: u8 = 4u8;
const MASK: u8 = 3;
self.bits &= !((MASK as u32) << OFFSET);
self.bits |= ((value & MASK) as u32) << OFFSET;
self
}
# [ doc = "Bits 2:3 - Port x configuration bits (y = 0..15)" ]
pub fn pupdr1(&mut self, value: u8) -> &mut Self {
const OFFSET: u8 = 2u8;
const MASK: u8 = 3;
self.bits &= !((MASK as u32) << OFFSET);
self.bits |= ((value & MASK) as u32) << OFFSET;
self
}
# [ doc = "Bits 0:1 - Port x configuration bits (y = 0..15)" ]
pub fn pupdr0(&mut self, value: u8) -> &mut Self {
const OFFSET: u8 = 0u8;
const MASK: u8 = 3;
self.bits &= !((MASK as u32) << OFFSET);
self.bits |= ((value & MASK) as u32) << OFFSET;
self
}
}
# [ repr ( C ) ]
pub struct Idr {
register: ::volatile_register::RO<u32>,
}
impl Idr {
pub fn read_bits(&self) -> u32 {
self.register.read()
}
pub fn read(&self) -> IdrR {
IdrR { bits: self.register.read() }
}
}
# [ derive ( Clone , Copy ) ]
# [ repr ( C ) ]
pub struct IdrR {
bits: u32,
}
impl IdrR {
# [ doc = "Bit 15 - Port input data (y = 0..15)" ]
pub fn idr15(&self) -> bool {
const OFFSET: u8 = 15u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 14 - Port input data (y = 0..15)" ]
pub fn idr14(&self) -> bool {
const OFFSET: u8 = 14u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 13 - Port input data (y = 0..15)" ]
pub fn idr13(&self) -> bool {
const OFFSET: u8 = 13u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 12 - Port input data (y = 0..15)" ]
pub fn idr12(&self) -> bool {
const OFFSET: u8 = 12u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 11 - Port input data (y = 0..15)" ]
pub fn idr11(&self) -> bool {
const OFFSET: u8 = 11u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 10 - Port input data (y = 0..15)" ]
pub fn idr10(&self) -> bool {
const OFFSET: u8 = 10u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 9 - Port input data (y = 0..15)" ]
pub fn idr9(&self) -> bool {
const OFFSET: u8 = 9u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 8 - Port input data (y = 0..15)" ]
pub fn idr8(&self) -> bool {
const OFFSET: u8 = 8u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 7 - Port input data (y = 0..15)" ]
pub fn idr7(&self) -> bool {
const OFFSET: u8 = 7u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 6 - Port input data (y = 0..15)" ]
pub fn idr6(&self) -> bool {
const OFFSET: u8 = 6u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 5 - Port input data (y = 0..15)" ]
pub fn idr5(&self) -> bool {
const OFFSET: u8 = 5u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 4 - Port input data (y = 0..15)" ]
pub fn idr4(&self) -> bool {
const OFFSET: u8 = 4u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 3 - Port input data (y = 0..15)" ]
pub fn idr3(&self) -> bool {
const OFFSET: u8 = 3u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 2 - Port input data (y = 0..15)" ]
pub fn idr2(&self) -> bool {
const OFFSET: u8 = 2u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 1 - Port input data (y = 0..15)" ]
pub fn idr1(&self) -> bool {
const OFFSET: u8 = 1u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 0 - Port input data (y = 0..15)" ]
pub fn idr0(&self) -> bool {
const OFFSET: u8 = 0u8;
self.bits & (1 << OFFSET) != 0
}
}
# [ repr ( C ) ]
pub struct Odr {
register: ::volatile_register::RW<u32>,
}
impl Odr {
pub fn read_bits(&self) -> u32 {
self.register.read()
}
pub unsafe fn modify_bits<F>(&mut self, f: F)
where F: FnOnce(&mut u32)
{
let mut bits = self.register.read();
f(&mut bits);
self.register.write(bits);
}
pub unsafe fn write_bits(&mut self, bits: u32) {
self.register.write(bits);
}
pub fn modify<F>(&mut self, f: F)
where for<'w> F: FnOnce(&OdrR, &'w mut OdrW) -> &'w mut OdrW
{
let bits = self.register.read();
let r = OdrR { bits: bits };
let mut w = OdrW { bits: bits };
f(&r, &mut w);
self.register.write(w.bits);
}
pub fn read(&self) -> OdrR {
OdrR { bits: self.register.read() }
}
pub fn write<F>(&mut self, f: F)
where F: FnOnce(&mut OdrW) -> &mut OdrW
{
let mut w = OdrW::reset_value();
f(&mut w);
self.register.write(w.bits);
}
}
# [ derive ( Clone , Copy ) ]
# [ repr ( C ) ]
pub struct OdrR {
bits: u32,
}
impl OdrR {
# [ doc = "Bit 15 - Port output data (y = 0..15)" ]
pub fn odr15(&self) -> bool {
const OFFSET: u8 = 15u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 14 - Port output data (y = 0..15)" ]
pub fn odr14(&self) -> bool {
const OFFSET: u8 = 14u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 13 - Port output data (y = 0..15)" ]
pub fn odr13(&self) -> bool {
const OFFSET: u8 = 13u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 12 - Port output data (y = 0..15)" ]
pub fn odr12(&self) -> bool {
const OFFSET: u8 = 12u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 11 - Port output data (y = 0..15)" ]
pub fn odr11(&self) -> bool {
const OFFSET: u8 = 11u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 10 - Port output data (y = 0..15)" ]
pub fn odr10(&self) -> bool {
const OFFSET: u8 = 10u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 9 - Port output data (y = 0..15)" ]
pub fn odr9(&self) -> bool {
const OFFSET: u8 = 9u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 8 - Port output data (y = 0..15)" ]
pub fn odr8(&self) -> bool {
const OFFSET: u8 = 8u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 7 - Port output data (y = 0..15)" ]
pub fn odr7(&self) -> bool {
const OFFSET: u8 = 7u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 6 - Port output data (y = 0..15)" ]
pub fn odr6(&self) -> bool {
const OFFSET: u8 = 6u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 5 - Port output data (y = 0..15)" ]
pub fn odr5(&self) -> bool {
const OFFSET: u8 = 5u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 4 - Port output data (y = 0..15)" ]
pub fn odr4(&self) -> bool {
const OFFSET: u8 = 4u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 3 - Port output data (y = 0..15)" ]
pub fn odr3(&self) -> bool {
const OFFSET: u8 = 3u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 2 - Port output data (y = 0..15)" ]
pub fn odr2(&self) -> bool {
const OFFSET: u8 = 2u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 1 - Port output data (y = 0..15)" ]
pub fn odr1(&self) -> bool {
const OFFSET: u8 = 1u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 0 - Port output data (y = 0..15)" ]
pub fn odr0(&self) -> bool {
const OFFSET: u8 = 0u8;
self.bits & (1 << OFFSET) != 0
}
}
# [ derive ( Clone , Copy ) ]
# [ repr ( C ) ]
pub struct OdrW {
bits: u32,
}
impl OdrW {
# [ doc = r" Reset value" ]
pub fn reset_value() -> Self {
OdrW { bits: 0 }
}
# [ doc = "Bit 15 - Port output data (y = 0..15)" ]
pub fn odr15(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 15u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 14 - Port output data (y = 0..15)" ]
pub fn odr14(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 14u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 13 - Port output data (y = 0..15)" ]
pub fn odr13(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 13u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 12 - Port output data (y = 0..15)" ]
pub fn odr12(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 12u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 11 - Port output data (y = 0..15)" ]
pub fn odr11(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 11u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 10 - Port output data (y = 0..15)" ]
pub fn odr10(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 10u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 9 - Port output data (y = 0..15)" ]
pub fn odr9(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 9u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 8 - Port output data (y = 0..15)" ]
pub fn odr8(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 8u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 7 - Port output data (y = 0..15)" ]
pub fn odr7(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 7u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 6 - Port output data (y = 0..15)" ]
pub fn odr6(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 6u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 5 - Port output data (y = 0..15)" ]
pub fn odr5(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 5u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 4 - Port output data (y = 0..15)" ]
pub fn odr4(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 4u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 3 - Port output data (y = 0..15)" ]
pub fn odr3(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 3u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 2 - Port output data (y = 0..15)" ]
pub fn odr2(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 2u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 1 - Port output data (y = 0..15)" ]
pub fn odr1(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 1u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 0 - Port output data (y = 0..15)" ]
pub fn odr0(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 0u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
}
# [ repr ( C ) ]
pub struct Bsrr {
register: ::volatile_register::WO<u32>,
}
impl Bsrr {
pub unsafe fn write_bits(&mut self, bits: u32) {
self.register.write(bits);
}
pub fn write<F>(&self, f: F)
where F: FnOnce(&mut BsrrW) -> &mut BsrrW
{
let mut w = BsrrW::reset_value();
f(&mut w);
self.register.write(w.bits);
}
}
# [ derive ( Clone , Copy ) ]
# [ repr ( C ) ]
pub struct BsrrW {
bits: u32,
}
impl BsrrW {
# [ doc = r" Reset value" ]
pub fn reset_value() -> Self {
BsrrW { bits: 0 }
}
# [ doc = "Bit 31 - Port x reset bit y (y = 0..15)" ]
pub fn br15(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 31u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 30 - Port x reset bit y (y = 0..15)" ]
pub fn br14(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 30u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 29 - Port x reset bit y (y = 0..15)" ]
pub fn br13(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 29u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 28 - Port x reset bit y (y = 0..15)" ]
pub fn br12(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 28u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 27 - Port x reset bit y (y = 0..15)" ]
pub fn br11(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 27u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 26 - Port x reset bit y (y = 0..15)" ]
pub fn br10(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 26u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 25 - Port x reset bit y (y = 0..15)" ]
pub fn br9(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 25u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 24 - Port x reset bit y (y = 0..15)" ]
pub fn br8(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 24u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 23 - Port x reset bit y (y = 0..15)" ]
pub fn br7(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 23u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 22 - Port x reset bit y (y = 0..15)" ]
pub fn br6(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 22u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 21 - Port x reset bit y (y = 0..15)" ]
pub fn br5(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 21u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 20 - Port x reset bit y (y = 0..15)" ]
pub fn br4(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 20u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 19 - Port x reset bit y (y = 0..15)" ]
pub fn br3(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 19u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 18 - Port x reset bit y (y = 0..15)" ]
pub fn br2(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 18u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 17 - Port x reset bit y (y = 0..15)" ]
pub fn br1(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 17u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 16 - Port x set bit y (y= 0..15)" ]
pub fn br0(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 16u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 15 - Port x set bit y (y= 0..15)" ]
pub fn bs15(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 15u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 14 - Port x set bit y (y= 0..15)" ]
pub fn bs14(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 14u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 13 - Port x set bit y (y= 0..15)" ]
pub fn bs13(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 13u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 12 - Port x set bit y (y= 0..15)" ]
pub fn bs12(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 12u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 11 - Port x set bit y (y= 0..15)" ]
pub fn bs11(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 11u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 10 - Port x set bit y (y= 0..15)" ]
pub fn bs10(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 10u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 9 - Port x set bit y (y= 0..15)" ]
pub fn bs9(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 9u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 8 - Port x set bit y (y= 0..15)" ]
pub fn bs8(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 8u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 7 - Port x set bit y (y= 0..15)" ]
pub fn bs7(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 7u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 6 - Port x set bit y (y= 0..15)" ]
pub fn bs6(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 6u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 5 - Port x set bit y (y= 0..15)" ]
pub fn bs5(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 5u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 4 - Port x set bit y (y= 0..15)" ]
pub fn bs4(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 4u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 3 - Port x set bit y (y= 0..15)" ]
pub fn bs3(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 3u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 2 - Port x set bit y (y= 0..15)" ]
pub fn bs2(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 2u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 1 - Port x set bit y (y= 0..15)" ]
pub fn bs1(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 1u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 0 - Port x set bit y (y= 0..15)" ]
pub fn bs0(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 0u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
}
# [ repr ( C ) ]
pub struct Lckr {
register: ::volatile_register::RW<u32>,
}
impl Lckr {
pub fn read_bits(&self) -> u32 {
self.register.read()
}
pub unsafe fn modify_bits<F>(&mut self, f: F)
where F: FnOnce(&mut u32)
{
let mut bits = self.register.read();
f(&mut bits);
self.register.write(bits);
}
pub unsafe fn write_bits(&mut self, bits: u32) {
self.register.write(bits);
}
pub fn modify<F>(&mut self, f: F)
where for<'w> F: FnOnce(&LckrR, &'w mut LckrW) -> &'w mut LckrW
{
let bits = self.register.read();
let r = LckrR { bits: bits };
let mut w = LckrW { bits: bits };
f(&r, &mut w);
self.register.write(w.bits);
}
pub fn read(&self) -> LckrR {
LckrR { bits: self.register.read() }
}
pub fn write<F>(&mut self, f: F)
where F: FnOnce(&mut LckrW) -> &mut LckrW
{
let mut w = LckrW::reset_value();
f(&mut w);
self.register.write(w.bits);
}
}
# [ derive ( Clone , Copy ) ]
# [ repr ( C ) ]
pub struct LckrR {
bits: u32,
}
impl LckrR {
# [ doc = "Bit 16 - Lok Key" ]
pub fn lckk(&self) -> bool {
const OFFSET: u8 = 16u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 15 - Port x lock bit y (y= 0..15)" ]
pub fn lck15(&self) -> bool {
const OFFSET: u8 = 15u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 14 - Port x lock bit y (y= 0..15)" ]
pub fn lck14(&self) -> bool {
const OFFSET: u8 = 14u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 13 - Port x lock bit y (y= 0..15)" ]
pub fn lck13(&self) -> bool {
const OFFSET: u8 = 13u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 12 - Port x lock bit y (y= 0..15)" ]
pub fn lck12(&self) -> bool {
const OFFSET: u8 = 12u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 11 - Port x lock bit y (y= 0..15)" ]
pub fn lck11(&self) -> bool {
const OFFSET: u8 = 11u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 10 - Port x lock bit y (y= 0..15)" ]
pub fn lck10(&self) -> bool {
const OFFSET: u8 = 10u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 9 - Port x lock bit y (y= 0..15)" ]
pub fn lck9(&self) -> bool {
const OFFSET: u8 = 9u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 8 - Port x lock bit y (y= 0..15)" ]
pub fn lck8(&self) -> bool {
const OFFSET: u8 = 8u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 7 - Port x lock bit y (y= 0..15)" ]
pub fn lck7(&self) -> bool {
const OFFSET: u8 = 7u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 6 - Port x lock bit y (y= 0..15)" ]
pub fn lck6(&self) -> bool {
const OFFSET: u8 = 6u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 5 - Port x lock bit y (y= 0..15)" ]
pub fn lck5(&self) -> bool {
const OFFSET: u8 = 5u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 4 - Port x lock bit y (y= 0..15)" ]
pub fn lck4(&self) -> bool {
const OFFSET: u8 = 4u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 3 - Port x lock bit y (y= 0..15)" ]
pub fn lck3(&self) -> bool {
const OFFSET: u8 = 3u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 2 - Port x lock bit y (y= 0..15)" ]
pub fn lck2(&self) -> bool {
const OFFSET: u8 = 2u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 1 - Port x lock bit y (y= 0..15)" ]
pub fn lck1(&self) -> bool {
const OFFSET: u8 = 1u8;
self.bits & (1 << OFFSET) != 0
}
# [ doc = "Bit 0 - Port x lock bit y (y= 0..15)" ]
pub fn lck0(&self) -> bool {
const OFFSET: u8 = 0u8;
self.bits & (1 << OFFSET) != 0
}
}
# [ derive ( Clone , Copy ) ]
# [ repr ( C ) ]
pub struct LckrW {
bits: u32,
}
impl LckrW {
# [ doc = r" Reset value" ]
pub fn reset_value() -> Self {
LckrW { bits: 0 }
}
# [ doc = "Bit 16 - Lok Key" ]
pub fn lckk(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 16u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 15 - Port x lock bit y (y= 0..15)" ]
pub fn lck15(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 15u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 14 - Port x lock bit y (y= 0..15)" ]
pub fn lck14(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 14u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 13 - Port x lock bit y (y= 0..15)" ]
pub fn lck13(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 13u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 12 - Port x lock bit y (y= 0..15)" ]
pub fn lck12(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 12u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 11 - Port x lock bit y (y= 0..15)" ]
pub fn lck11(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 11u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 10 - Port x lock bit y (y= 0..15)" ]
pub fn lck10(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 10u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 9 - Port x lock bit y (y= 0..15)" ]
pub fn lck9(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 9u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 8 - Port x lock bit y (y= 0..15)" ]
pub fn lck8(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 8u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 7 - Port x lock bit y (y= 0..15)" ]
pub fn lck7(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 7u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 6 - Port x lock bit y (y= 0..15)" ]
pub fn lck6(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 6u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 5 - Port x lock bit y (y= 0..15)" ]
pub fn lck5(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 5u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 4 - Port x lock bit y (y= 0..15)" ]
pub fn lck4(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 4u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 3 - Port x lock bit y (y= 0..15)" ]
pub fn lck3(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 3u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 2 - Port x lock bit y (y= 0..15)" ]
pub fn lck2(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 2u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 1 - Port x lock bit y (y= 0..15)" ]
pub fn lck1(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 1u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 0 - Port x lock bit y (y= 0..15)" ]
pub fn lck0(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 0u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
}
# [ repr ( C ) ]
pub struct Afrl {
register: ::volatile_register::RW<u32>,
}
impl Afrl {
pub fn read_bits(&self) -> u32 {
self.register.read()
}
pub unsafe fn modify_bits<F>(&mut self, f: F)
where F: FnOnce(&mut u32)
{
let mut bits = self.register.read();
f(&mut bits);
self.register.write(bits);
}
pub unsafe fn write_bits(&mut self, bits: u32) {
self.register.write(bits);
}
pub fn modify<F>(&mut self, f: F)
where for<'w> F: FnOnce(&AfrlR, &'w mut AfrlW) -> &'w mut AfrlW
{
let bits = self.register.read();
let r = AfrlR { bits: bits };
let mut w = AfrlW { bits: bits };
f(&r, &mut w);
self.register.write(w.bits);
}
pub fn read(&self) -> AfrlR {
AfrlR { bits: self.register.read() }
}
pub fn write<F>(&mut self, f: F)
where F: FnOnce(&mut AfrlW) -> &mut AfrlW
{
let mut w = AfrlW::reset_value();
f(&mut w);
self.register.write(w.bits);
}
}
# [ derive ( Clone , Copy ) ]
# [ repr ( C ) ]
pub struct AfrlR {
bits: u32,
}
impl AfrlR {
# [ doc = "Bits 28:31 - Alternate function selection for port x bit y (y = 0..7)" ]
pub fn afrl7(&self) -> u8 {
const MASK: u32 = 15;
const OFFSET: u8 = 28u8;
((self.bits >> OFFSET) & MASK) as u8
}
# [ doc = "Bits 24:27 - Alternate function selection for port x bit y (y = 0..7)" ]
pub fn afrl6(&self) -> u8 {
const MASK: u32 = 15;
const OFFSET: u8 = 24u8;
((self.bits >> OFFSET) & MASK) as u8
}
# [ doc = "Bits 20:23 - Alternate function selection for port x bit y (y = 0..7)" ]
pub fn afrl5(&self) -> u8 {
const MASK: u32 = 15;
const OFFSET: u8 = 20u8;
((self.bits >> OFFSET) & MASK) as u8
}
# [ doc = "Bits 16:19 - Alternate function selection for port x bit y (y = 0..7)" ]
pub fn afrl4(&self) -> u8 {
const MASK: u32 = 15;
const OFFSET: u8 = 16u8;
((self.bits >> OFFSET) & MASK) as u8
}
# [ doc = "Bits 12:15 - Alternate function selection for port x bit y (y = 0..7)" ]
pub fn afrl3(&self) -> u8 {
const MASK: u32 = 15;
const OFFSET: u8 = 12u8;
((self.bits >> OFFSET) & MASK) as u8
}
# [ doc = "Bits 8:11 - Alternate function selection for port x bit y (y = 0..7)" ]
pub fn afrl2(&self) -> u8 {
const MASK: u32 = 15;
const OFFSET: u8 = 8u8;
((self.bits >> OFFSET) & MASK) as u8
}
# [ doc = "Bits 4:7 - Alternate function selection for port x bit y (y = 0..7)" ]
pub fn afrl1(&self) -> u8 {
const MASK: u32 = 15;
const OFFSET: u8 = 4u8;
((self.bits >> OFFSET) & MASK) as u8
}
# [ doc = "Bits 0:3 - Alternate function selection for port x bit y (y = 0..7)" ]
pub fn afrl0(&self) -> u8 {
const MASK: u32 = 15;
const OFFSET: u8 = 0u8;
((self.bits >> OFFSET) & MASK) as u8
}
}
# [ derive ( Clone , Copy ) ]
# [ repr ( C ) ]
pub struct AfrlW {
bits: u32,
}
impl AfrlW {
# [ doc = r" Reset value" ]
pub fn reset_value() -> Self {
AfrlW { bits: 0 }
}
# [ doc = "Bits 28:31 - Alternate function selection for port x bit y (y = 0..7)" ]
pub fn afrl7(&mut self, value: u8) -> &mut Self {
const OFFSET: u8 = 28u8;
const MASK: u8 = 15;
self.bits &= !((MASK as u32) << OFFSET);
self.bits |= ((value & MASK) as u32) << OFFSET;
self
}
# [ doc = "Bits 24:27 - Alternate function selection for port x bit y (y = 0..7)" ]
pub fn afrl6(&mut self, value: u8) -> &mut Self {
const OFFSET: u8 = 24u8;
const MASK: u8 = 15;
self.bits &= !((MASK as u32) << OFFSET);
self.bits |= ((value & MASK) as u32) << OFFSET;
self
}
# [ doc = "Bits 20:23 - Alternate function selection for port x bit y (y = 0..7)" ]
pub fn afrl5(&mut self, value: u8) -> &mut Self {
const OFFSET: u8 = 20u8;
const MASK: u8 = 15;
self.bits &= !((MASK as u32) << OFFSET);
self.bits |= ((value & MASK) as u32) << OFFSET;
self
}
# [ doc = "Bits 16:19 - Alternate function selection for port x bit y (y = 0..7)" ]
pub fn afrl4(&mut self, value: u8) -> &mut Self {
const OFFSET: u8 = 16u8;
const MASK: u8 = 15;
self.bits &= !((MASK as u32) << OFFSET);
self.bits |= ((value & MASK) as u32) << OFFSET;
self
}
# [ doc = "Bits 12:15 - Alternate function selection for port x bit y (y = 0..7)" ]
pub fn afrl3(&mut self, value: u8) -> &mut Self {
const OFFSET: u8 = 12u8;
const MASK: u8 = 15;
self.bits &= !((MASK as u32) << OFFSET);
self.bits |= ((value & MASK) as u32) << OFFSET;
self
}
# [ doc = "Bits 8:11 - Alternate function selection for port x bit y (y = 0..7)" ]
pub fn afrl2(&mut self, value: u8) -> &mut Self {
const OFFSET: u8 = 8u8;
const MASK: u8 = 15;
self.bits &= !((MASK as u32) << OFFSET);
self.bits |= ((value & MASK) as u32) << OFFSET;
self
}
# [ doc = "Bits 4:7 - Alternate function selection for port x bit y (y = 0..7)" ]
pub fn afrl1(&mut self, value: u8) -> &mut Self {
const OFFSET: u8 = 4u8;
const MASK: u8 = 15;
self.bits &= !((MASK as u32) << OFFSET);
self.bits |= ((value & MASK) as u32) << OFFSET;
self
}
# [ doc = "Bits 0:3 - Alternate function selection for port x bit y (y = 0..7)" ]
pub fn afrl0(&mut self, value: u8) -> &mut Self {
const OFFSET: u8 = 0u8;
const MASK: u8 = 15;
self.bits &= !((MASK as u32) << OFFSET);
self.bits |= ((value & MASK) as u32) << OFFSET;
self
}
}
# [ repr ( C ) ]
pub struct Afrh {
register: ::volatile_register::RW<u32>,
}
impl Afrh {
pub fn read_bits(&self) -> u32 {
self.register.read()
}
pub unsafe fn modify_bits<F>(&mut self, f: F)
where F: FnOnce(&mut u32)
{
let mut bits = self.register.read();
f(&mut bits);
self.register.write(bits);
}
pub unsafe fn write_bits(&mut self, bits: u32) {
self.register.write(bits);
}
pub fn modify<F>(&mut self, f: F)
where for<'w> F: FnOnce(&AfrhR, &'w mut AfrhW) -> &'w mut AfrhW
{
let bits = self.register.read();
let r = AfrhR { bits: bits };
let mut w = AfrhW { bits: bits };
f(&r, &mut w);
self.register.write(w.bits);
}
pub fn read(&self) -> AfrhR {
AfrhR { bits: self.register.read() }
}
pub fn write<F>(&mut self, f: F)
where F: FnOnce(&mut AfrhW) -> &mut AfrhW
{
let mut w = AfrhW::reset_value();
f(&mut w);
self.register.write(w.bits);
}
}
# [ derive ( Clone , Copy ) ]
# [ repr ( C ) ]
pub struct AfrhR {
bits: u32,
}
impl AfrhR {
# [ doc = "Bits 28:31 - Alternate function selection for port x bit y (y = 8..15)" ]
pub fn afrh15(&self) -> u8 {
const MASK: u32 = 15;
const OFFSET: u8 = 28u8;
((self.bits >> OFFSET) & MASK) as u8
}
# [ doc = "Bits 24:27 - Alternate function selection for port x bit y (y = 8..15)" ]
pub fn afrh14(&self) -> u8 {
const MASK: u32 = 15;
const OFFSET: u8 = 24u8;
((self.bits >> OFFSET) & MASK) as u8
}
# [ doc = "Bits 20:23 - Alternate function selection for port x bit y (y = 8..15)" ]
pub fn afrh13(&self) -> u8 {
const MASK: u32 = 15;
const OFFSET: u8 = 20u8;
((self.bits >> OFFSET) & MASK) as u8
}
# [ doc = "Bits 16:19 - Alternate function selection for port x bit y (y = 8..15)" ]
pub fn afrh12(&self) -> u8 {
const MASK: u32 = 15;
const OFFSET: u8 = 16u8;
((self.bits >> OFFSET) & MASK) as u8
}
# [ doc = "Bits 12:15 - Alternate function selection for port x bit y (y = 8..15)" ]
pub fn afrh11(&self) -> u8 {
const MASK: u32 = 15;
const OFFSET: u8 = 12u8;
((self.bits >> OFFSET) & MASK) as u8
}
# [ doc = "Bits 8:11 - Alternate function selection for port x bit y (y = 8..15)" ]
pub fn afrh10(&self) -> u8 {
const MASK: u32 = 15;
const OFFSET: u8 = 8u8;
((self.bits >> OFFSET) & MASK) as u8
}
# [ doc = "Bits 4:7 - Alternate function selection for port x bit y (y = 8..15)" ]
pub fn afrh9(&self) -> u8 {
const MASK: u32 = 15;
const OFFSET: u8 = 4u8;
((self.bits >> OFFSET) & MASK) as u8
}
# [ doc = "Bits 0:3 - Alternate function selection for port x bit y (y = 8..15)" ]
pub fn afrh8(&self) -> u8 {
const MASK: u32 = 15;
const OFFSET: u8 = 0u8;
((self.bits >> OFFSET) & MASK) as u8
}
}
# [ derive ( Clone , Copy ) ]
# [ repr ( C ) ]
pub struct AfrhW {
bits: u32,
}
impl AfrhW {
# [ doc = r" Reset value" ]
pub fn reset_value() -> Self {
AfrhW { bits: 0 }
}
# [ doc = "Bits 28:31 - Alternate function selection for port x bit y (y = 8..15)" ]
pub fn afrh15(&mut self, value: u8) -> &mut Self {
const OFFSET: u8 = 28u8;
const MASK: u8 = 15;
self.bits &= !((MASK as u32) << OFFSET);
self.bits |= ((value & MASK) as u32) << OFFSET;
self
}
# [ doc = "Bits 24:27 - Alternate function selection for port x bit y (y = 8..15)" ]
pub fn afrh14(&mut self, value: u8) -> &mut Self {
const OFFSET: u8 = 24u8;
const MASK: u8 = 15;
self.bits &= !((MASK as u32) << OFFSET);
self.bits |= ((value & MASK) as u32) << OFFSET;
self
}
# [ doc = "Bits 20:23 - Alternate function selection for port x bit y (y = 8..15)" ]
pub fn afrh13(&mut self, value: u8) -> &mut Self {
const OFFSET: u8 = 20u8;
const MASK: u8 = 15;
self.bits &= !((MASK as u32) << OFFSET);
self.bits |= ((value & MASK) as u32) << OFFSET;
self
}
# [ doc = "Bits 16:19 - Alternate function selection for port x bit y (y = 8..15)" ]
pub fn afrh12(&mut self, value: u8) -> &mut Self {
const OFFSET: u8 = 16u8;
const MASK: u8 = 15;
self.bits &= !((MASK as u32) << OFFSET);
self.bits |= ((value & MASK) as u32) << OFFSET;
self
}
# [ doc = "Bits 12:15 - Alternate function selection for port x bit y (y = 8..15)" ]
pub fn afrh11(&mut self, value: u8) -> &mut Self {
const OFFSET: u8 = 12u8;
const MASK: u8 = 15;
self.bits &= !((MASK as u32) << OFFSET);
self.bits |= ((value & MASK) as u32) << OFFSET;
self
}
# [ doc = "Bits 8:11 - Alternate function selection for port x bit y (y = 8..15)" ]
pub fn afrh10(&mut self, value: u8) -> &mut Self {
const OFFSET: u8 = 8u8;
const MASK: u8 = 15;
self.bits &= !((MASK as u32) << OFFSET);
self.bits |= ((value & MASK) as u32) << OFFSET;
self
}
# [ doc = "Bits 4:7 - Alternate function selection for port x bit y (y = 8..15)" ]
pub fn afrh9(&mut self, value: u8) -> &mut Self {
const OFFSET: u8 = 4u8;
const MASK: u8 = 15;
self.bits &= !((MASK as u32) << OFFSET);
self.bits |= ((value & MASK) as u32) << OFFSET;
self
}
# [ doc = "Bits 0:3 - Alternate function selection for port x bit y (y = 8..15)" ]
pub fn afrh8(&mut self, value: u8) -> &mut Self {
const OFFSET: u8 = 0u8;
const MASK: u8 = 15;
self.bits &= !((MASK as u32) << OFFSET);
self.bits |= ((value & MASK) as u32) << OFFSET;
self
}
}
# [ repr ( C ) ]
pub struct Brr {
register: ::volatile_register::WO<u32>,
}
impl Brr {
pub unsafe fn write_bits(&mut self, bits: u32) {
self.register.write(bits);
}
pub fn write<F>(&self, f: F)
where F: FnOnce(&mut BrrW) -> &mut BrrW
{
let mut w = BrrW::reset_value();
f(&mut w);
self.register.write(w.bits);
}
}
# [ derive ( Clone , Copy ) ]
# [ repr ( C ) ]
pub struct BrrW {
bits: u32,
}
impl BrrW {
# [ doc = r" Reset value" ]
pub fn reset_value() -> Self {
BrrW { bits: 0 }
}
# [ doc = "Bit 0 - Port x Reset bit y" ]
pub fn br0(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 0u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 1 - Port x Reset bit y" ]
pub fn br1(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 1u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 2 - Port x Reset bit y" ]
pub fn br2(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 2u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 3 - Port x Reset bit y" ]
pub fn br3(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 3u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 4 - Port x Reset bit y" ]
pub fn br4(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 4u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 5 - Port x Reset bit y" ]
pub fn br5(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 5u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 6 - Port x Reset bit y" ]
pub fn br6(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 6u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 7 - Port x Reset bit y" ]
pub fn br7(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 7u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 8 - Port x Reset bit y" ]
pub fn br8(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 8u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 9 - Port x Reset bit y" ]
pub fn br9(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 9u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 10 - Port x Reset bit y" ]
pub fn br10(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 10u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 11 - Port x Reset bit y" ]
pub fn br11(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 11u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 12 - Port x Reset bit y" ]
pub fn br12(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 12u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 13 - Port x Reset bit y" ]
pub fn br13(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 13u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 14 - Port x Reset bit y" ]
pub fn br14(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 14u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
# [ doc = "Bit 15 - Port x Reset bit y" ]
pub fn br15(&mut self, value: bool) -> &mut Self {
const OFFSET: u8 = 15u8;
if value {
self.bits |= 1 << OFFSET;
} else {
self.bits &= !(1 << OFFSET);
}
self
}
}