Skip to content

Commit 81d17bf

Browse files
committed
Simplify gpio.rs macro
1 parent f8eb292 commit 81d17bf

File tree

3 files changed

+1163
-1127
lines changed

3 files changed

+1163
-1127
lines changed

Cargo.toml

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,24 +24,22 @@ features = ["stm32f303xc", "rt", "stm32-usbd", "can"]
2424
targets = ["thumbv7em-none-eabihf"]
2525

2626
[dependencies]
27-
cfg-if = "1.0"
27+
cfg-if = "1"
2828
cortex-m = "0.7"
2929
cortex-m-rt = "0.6"
3030
embedded-dma = "0.1"
3131
embedded-hal = "0.2"
32-
nb = "1.0"
32+
embedded-time = "0.10"
33+
nb = "1"
3334
paste = "1"
3435
rtcc = "0.2"
3536
stm32f3 = "0.13"
36-
embedded-time = "0.10"
37+
typenum = "1"
3738

3839
[dependencies.embedded-hal-can]
3940
version = "0.1.0"
4041
optional = true
4142

42-
[dependencies.bare-metal]
43-
version = "1.0"
44-
4543
[dependencies.stm32-usbd]
4644
version = "0.6"
4745
optional = true
@@ -95,12 +93,12 @@ stm32f303xb = ["stm32f303", "gpio-f303", "device-selected"]
9593
stm32f303xc = ["stm32f303", "gpio-f303", "device-selected"]
9694
stm32f303xd = ["stm32f303", "gpio-f303e", "device-selected"]
9795
stm32f303xe = ["stm32f303", "gpio-f303e", "device-selected"]
98-
stm32f373 = ["gpio-f373", "stm32f3/stm32f373", "device-selected"]
99-
stm32f378 = ["gpio-f373", "stm32f3/stm32f373", "device-selected"]
100-
stm32f334 = ["gpio-f333", "stm32f3/stm32f3x4", "device-selected"]
10196
stm32f328 = ["gpio-f333", "stm32f3/stm32f303", "device-selected"]
10297
stm32f358 = ["gpio-f303", "stm32f3/stm32f303", "device-selected"]
10398
stm32f398 = ["gpio-f303e", "stm32f3/stm32f303", "device-selected"]
99+
stm32f373 = ["gpio-f373", "stm32f3/stm32f373", "device-selected"]
100+
stm32f378 = ["gpio-f373", "stm32f3/stm32f373", "device-selected"]
101+
stm32f334 = ["gpio-f333", "stm32f3/stm32f3x4", "device-selected"]
104102

105103
defmt-default = ["defmt"]
106104
defmt-trace = ["defmt"]

codegen/src/codegen/gpio.rs

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -60,32 +60,41 @@ fn merge_pins_by_port(pins: &[gpio::Pin]) -> Result<Vec<Port>> {
6060
}
6161

6262
fn gen_gpio_macro_call(ports: &[Port], feature: &str) -> Result<()> {
63-
println!("gpio!([");
63+
println!("gpio!({{");
64+
65+
let mut pac_modules: Vec<_> = ports.iter().map(|port| get_port_pac_module(port, feature)).collect();
66+
pac_modules.sort();
67+
pac_modules.dedup();
68+
println!(" pacs: [{}],", pac_modules.join(", "));
69+
70+
println!(" ports: [");
6471
for port in ports {
6572
gen_port(port, feature)?;
6673
}
67-
println!("]);");
74+
println!(" ],");
75+
76+
println!("}});");
6877
Ok(())
6978
}
7079

7180
fn gen_port(port: &Port, feature: &str) -> Result<()> {
7281
let pac_module = get_port_pac_module(port, feature);
7382

74-
println!(" {{");
83+
println!(" {{");
7584
println!(
76-
" port: ({}/{}, pac: {}),",
85+
" port: ({}/{}, pac: {}),",
7786
port.id,
7887
port.id.to_lowercase(),
7988
pac_module,
8089
);
81-
println!(" pins: [");
90+
println!(" pins: [");
8291

8392
for pin in &port.pins {
8493
gen_pin(pin)?;
8594
}
8695

87-
println!(" ],");
88-
println!(" }},");
96+
println!(" ],");
97+
println!(" }},");
8998
Ok(())
9099
}
91100

@@ -107,11 +116,10 @@ fn gen_pin(pin: &gpio::Pin) -> Result<()> {
107116
let af_numbers = get_pin_af_numbers(pin)?;
108117

109118
println!(
110-
" {} => {{ reset: {}, afr: {}/{}, af: {:?} }},",
119+
" {} => {{ reset: {}, afr: {}, af: {:?} }},",
111120
nr,
112121
reset_mode,
113122
afr,
114-
afr.to_lowercase(),
115123
af_numbers,
116124
);
117125

0 commit comments

Comments
 (0)