Add a single-column variant to gpio_rcc! macro table
which includes just the set of registers that need to be considered. Then match against those registers with a single `modify(...)`
This commit is contained in:
parent
13873df30b
commit
650f867b1c
@ -452,9 +452,13 @@ crate::pac::pins!(
|
|||||||
|
|
||||||
pub(crate) unsafe fn init() {
|
pub(crate) unsafe fn init() {
|
||||||
crate::pac::gpio_rcc! {
|
crate::pac::gpio_rcc! {
|
||||||
($name:ident, $clock:ident, $en_reg:ident, $rst_reg:ident, $en_fn:ident, $rst_fn:ident) => {
|
($en_reg:ident) => {
|
||||||
crate::pac::RCC.$en_reg().modify(|reg| {
|
crate::pac::RCC.$en_reg().modify(|reg| {
|
||||||
reg.$en_fn(true);
|
crate::pac::gpio_rcc! {
|
||||||
|
($name:ident, $clock:ident, $en_reg, $rst_reg:ident, $en_fn:ident, $rst_fn:ident) => {
|
||||||
|
reg.$en_fn(true);
|
||||||
|
};
|
||||||
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -288,6 +288,7 @@ pub fn gen(options: Options) {
|
|||||||
let mut dma_channel_counts: HashMap<String, u8> = HashMap::new();
|
let mut dma_channel_counts: HashMap<String, u8> = HashMap::new();
|
||||||
let mut dbgmcu_table: Vec<Vec<String>> = Vec::new();
|
let mut dbgmcu_table: Vec<Vec<String>> = Vec::new();
|
||||||
let mut gpio_rcc_table: Vec<Vec<String>> = Vec::new();
|
let mut gpio_rcc_table: Vec<Vec<String>> = Vec::new();
|
||||||
|
let mut gpio_regs: HashSet<String> = HashSet::new();
|
||||||
|
|
||||||
let gpio_base = core.peripherals.get(&"GPIOA".to_string()).unwrap().address;
|
let gpio_base = core.peripherals.get(&"GPIOA".to_string()).unwrap().address;
|
||||||
let gpio_stride = 0x400;
|
let gpio_stride = 0x400;
|
||||||
@ -492,6 +493,7 @@ pub fn gen(options: Options) {
|
|||||||
peripheral_rcc_table.push(row);
|
peripheral_rcc_table.push(row);
|
||||||
} else {
|
} else {
|
||||||
gpio_rcc_table.push(row);
|
gpio_rcc_table.push(row);
|
||||||
|
gpio_regs.insert( enable_reg.to_ascii_lowercase() );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
(None, Some(_)) => {
|
(None, Some(_)) => {
|
||||||
@ -508,6 +510,10 @@ pub fn gen(options: Options) {
|
|||||||
dev.peripherals.push(ir_peri);
|
dev.peripherals.push(ir_peri);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for reg in gpio_regs {
|
||||||
|
gpio_rcc_table.push( vec!( reg ) );
|
||||||
|
}
|
||||||
|
|
||||||
for (id, channel_info) in &core.dma_channels {
|
for (id, channel_info) in &core.dma_channels {
|
||||||
let mut row = Vec::new();
|
let mut row = Vec::new();
|
||||||
let dma_peri = core.peripherals.get(&channel_info.dma).unwrap();
|
let dma_peri = core.peripherals.get(&channel_info.dma).unwrap();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user