1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
use stm32f103xx::{afio, AFIO}; use rcc::APB2; pub trait AfioExt { fn constrain(self, apb2: &mut APB2) -> Parts; } impl AfioExt for AFIO { fn constrain(self, apb2: &mut APB2) -> Parts { apb2.enr().modify(|_, w| w.afioen().enabled()); apb2.rstr().modify(|_, w| w.afiorst().set_bit()); apb2.rstr().modify(|_, w| w.afiorst().clear_bit()); Parts { mapr: MAPR { _0: () }, } } } pub struct Parts { pub mapr: MAPR, } pub struct MAPR { _0: (), } impl MAPR { pub fn mapr(&mut self) -> &afio::MAPR { unsafe { &(*AFIO::ptr()).mapr } } }