Skip to content

Commit cb3a3a0

Browse files
committed
F4 GPIO
1 parent b08673e commit cb3a3a0

32 files changed

+5407
-1135
lines changed

.zed/settings.json

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
{
2+
"lsp": {
3+
"rust-analyzer": {
4+
"initialization_options": {
5+
"cargo": {
6+
"features": ["defmt", "stm32g473"]
7+
},
8+
"check": {
9+
"allTargets": false,
10+
"targets": "thumbv7em-none-eabihf"
11+
}
12+
}
13+
}
14+
}
15+
}

Cargo.toml

Lines changed: 224 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ authors = ["Vitaly Domnikov <[email protected]>"]
33
categories = ["embedded", "hardware-support", "no-std"]
44
description = "Peripheral access API for STM32G4 series microcontrollers"
55
documentation = "https://docs.rs/stm32g4xx-hal"
6-
edition = "2018"
6+
edition = "2021"
77
keywords = ["arm", "cortex-m", "stm32g4xx", "hal"]
88
license = "MIT/Apache-2.0"
99
name = "stm32g4xx-hal"
@@ -86,19 +86,232 @@ usbd-serial = "0.2.2"
8686
default = ["rt"]
8787
rt = ["stm32g4/rt"]
8888
usb = ["dep:stm32-usbd"]
89-
stm32g431 = ["stm32g4/stm32g431"]
90-
stm32g441 = ["stm32g4/stm32g441"]
91-
stm32g471 = ["stm32g4/stm32g471"]
92-
stm32g473 = ["stm32g4/stm32g473"]
93-
stm32g474 = ["stm32g4/stm32g474"]
94-
stm32g483 = ["stm32g4/stm32g483"]
95-
stm32g484 = ["stm32g4/stm32g484"]
96-
stm32g491 = ["stm32g4/stm32g491"]
97-
stm32g4a1 = ["stm32g4/stm32g4a1"]
89+
stm32g431 = ["stm32g4/stm32g431", "gpio-g43x"]
90+
stm32g441 = ["stm32g4/stm32g441", "gpio-g43x"]
91+
stm32g471 = ["stm32g4/stm32g471", "gpio-g47x"]
92+
stm32g473 = ["stm32g4/stm32g473", "gpio-g47x"]
93+
stm32g474 = ["stm32g4/stm32g474", "gpio-g47x"]
94+
stm32g483 = ["stm32g4/stm32g483", "gpio-g47x"]
95+
stm32g484 = ["stm32g4/stm32g484", "gpio-g47x"]
96+
stm32g491 = ["stm32g4/stm32g491", "gpio-g49x"]
97+
stm32g4a1 = ["stm32g4/stm32g4a1", "gpio-g49x"]
98+
99+
gpio-g43x = [
100+
"comp1",
101+
"comp2",
102+
"comp3",
103+
"comp4",
104+
"crs",
105+
"fdcan1",
106+
"gpioa",
107+
"gpiob",
108+
"gpioc",
109+
"gpiod",
110+
"gpioe",
111+
"gpiof",
112+
"gpiog",
113+
"i2c1",
114+
"i2c2",
115+
"i2c3",
116+
"i2s",
117+
"i2s2",
118+
"i2s3",
119+
"ir",
120+
"lptim1",
121+
"lpuart1",
122+
"rcc",
123+
"rtc",
124+
"sai1",
125+
"spi1",
126+
"spi2",
127+
"spi3",
128+
"sys",
129+
"tim1",
130+
"tim15",
131+
"tim16",
132+
"tim17",
133+
"tim2",
134+
"tim3",
135+
"tim4",
136+
"tim8",
137+
"uart4",
138+
"ucpd1",
139+
"usart1",
140+
"usart2",
141+
"usart3",
142+
]
143+
gpio-g47x = [
144+
"comp1",
145+
"comp2",
146+
"comp3",
147+
"comp4",
148+
"comp5",
149+
"comp6",
150+
"comp7",
151+
"crs",
152+
"fdcan1",
153+
"fdcan2",
154+
"fdcan3",
155+
"fmc",
156+
"gpioa",
157+
"gpiob",
158+
"gpioc",
159+
"gpiod",
160+
"gpioe",
161+
"gpiof",
162+
"gpiog",
163+
"hrtim1",
164+
"i2c1",
165+
"i2c2",
166+
"i2c3",
167+
"i2c4",
168+
"i2s",
169+
"i2s2",
170+
"i2s3",
171+
"ir",
172+
"lptim1",
173+
"lpuart1",
174+
"quadspi1",
175+
"rcc",
176+
"rtc",
177+
"sai1",
178+
"spi1",
179+
"spi2",
180+
"spi3",
181+
"spi4",
182+
"sys",
183+
"tim1",
184+
"tim15",
185+
"tim16",
186+
"tim17",
187+
"tim2",
188+
"tim20",
189+
"tim3",
190+
"tim4",
191+
"tim5",
192+
"tim8",
193+
"uart4",
194+
"uart5",
195+
"ucpd1",
196+
"usart1",
197+
"usart2",
198+
"usart3",
199+
]
200+
gpio-g49x = [
201+
"comp1",
202+
"comp2",
203+
"comp3",
204+
"comp4",
205+
"crs",
206+
"fdcan1",
207+
"fdcan2",
208+
"gpioa",
209+
"gpiob",
210+
"gpioc",
211+
"gpiod",
212+
"gpioe",
213+
"gpiof",
214+
"gpiog",
215+
"i2c1",
216+
"i2c2",
217+
"i2c3",
218+
"i2s",
219+
"i2s2",
220+
"i2s3",
221+
"ir",
222+
"lptim1",
223+
"lpuart1",
224+
"quadspi1",
225+
"rcc",
226+
"rtc",
227+
"sai1",
228+
"spi1",
229+
"spi2",
230+
"spi3",
231+
"sys",
232+
"tim1",
233+
"tim15",
234+
"tim16",
235+
"tim17",
236+
"tim2",
237+
"tim20",
238+
"tim3",
239+
"tim4",
240+
"tim8",
241+
"uart4",
242+
"uart5",
243+
"ucpd1",
244+
"usart1",
245+
"usart2",
246+
"usart3",
247+
]
248+
249+
comp1 = []
250+
comp2 = []
251+
comp3 = []
252+
comp4 = []
253+
comp5 = []
254+
comp6 = []
255+
comp7 = []
256+
crs = []
257+
fdcan1 = []
258+
fdcan2 = []
259+
fdcan3 = []
260+
fmc = []
261+
gpioa = []
262+
gpiob = []
263+
gpioc = []
264+
gpiod = []
265+
gpioe = []
266+
gpiof = []
267+
gpiog = []
268+
hrtim1 = []
269+
i2c1 = []
270+
i2c2 = []
271+
i2c3 = []
272+
i2c4 = []
273+
i2s = []
274+
i2s2 = []
275+
i2s3 = []
276+
ir = []
277+
lptim1 = []
278+
lpuart1 = []
279+
quadspi1 = []
280+
rcc = []
281+
rtc = []
282+
sai1 = []
283+
spi1 = []
284+
spi2 = []
285+
spi3 = []
286+
spi4 = []
287+
sys = []
288+
tim1 = []
289+
tim15 = []
290+
tim16 = []
291+
tim17 = []
292+
tim2 = []
293+
tim20 = []
294+
tim3 = []
295+
tim4 = []
296+
tim5 = []
297+
tim8 = []
298+
uart4 = []
299+
uart5 = []
300+
ucpd1 = []
301+
usart1 = []
302+
usart2 = []
303+
usart3 = []
304+
98305
log-itm = ["cortex-m-log/itm"]
99306
log-rtt = []
100307
log-semihost = ["cortex-m-log/semihosting"]
101-
defmt = ["dep:defmt", "fugit/defmt", "nb/defmt-0-3", "embedded-hal/defmt-03", "embedded-io/defmt-03"]
308+
defmt = [
309+
"dep:defmt",
310+
"fugit/defmt",
311+
"nb/defmt-0-3",
312+
"embedded-hal/defmt-03",
313+
"embedded-io/defmt-03",
314+
]
102315
cordic = ["dep:fixed"]
103316

104317
[profile.dev]

examples/blinky.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,12 @@ fn main() -> ! {
2929
loop {
3030
info!("Set Led low");
3131
for _ in 0..10_000_000 {
32-
led.set_low().unwrap();
32+
led.set_low();
3333
}
3434

3535
info!("Set Led High");
3636
for _ in 0..10_000_000 {
37-
led.set_high().unwrap();
37+
led.set_high();
3838
}
3939
}
4040
}

examples/blinky_delay.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,11 @@ fn main() -> ! {
4040

4141
loop {
4242
info!("Toggle");
43-
led.toggle().unwrap();
43+
led.toggle();
4444
info!("SYST delay");
4545
delay_syst.delay(1000.millis());
4646
info!("Toggle");
47-
led.toggle().unwrap();
47+
led.toggle();
4848
info!("TIM2 delay");
4949
delay_tim2.delay_ms(1000);
5050
}

examples/button.rs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
use stm32g4xx_hal::{
55
//delay::{DelayExt, SYSTDelayExt},
6-
gpio::{gpioc, ExtiPin, GpioExt, Input, PullDown, SignalEdge},
6+
gpio::{self, ExtiPin, GpioExt, Input, SignalEdge},
77
rcc::RccExt,
88
stm32,
99
stm32::{interrupt, Interrupt},
@@ -14,9 +14,8 @@ use core::cell::RefCell;
1414
use core::sync::atomic::{AtomicBool, Ordering};
1515
use cortex_m::{asm::wfi, interrupt::Mutex};
1616
use cortex_m_rt::entry;
17-
use embedded_hal::digital::OutputPin;
1817

19-
type ButtonPin = gpioc::PC13<Input<PullDown>>;
18+
type ButtonPin = gpio::PC13<Input>;
2019

2120
// Make LED pin globally available
2221
static G_BUTTON: Mutex<RefCell<Option<ButtonPin>>> = Mutex::new(RefCell::new(None));
@@ -86,10 +85,10 @@ fn main() -> ! {
8685

8786
if G_LED_ON.load(Ordering::Relaxed) {
8887
println!("Turn Led On!");
89-
led.set_high().unwrap();
88+
led.set_high();
9089
} else {
9190
println!("Turn Led Off!");
92-
led.set_low().unwrap();
91+
led.set_low();
9392
}
9493
}
9594
}

examples/can-echo.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,8 @@ fn main() -> ! {
5757

5858
let can1 = {
5959
info!("Init CAN 1");
60-
let rx = gpiob.pb8.into_alternate().set_speed(Speed::VeryHigh);
61-
let tx = gpiob.pb9.into_alternate().set_speed(Speed::VeryHigh);
60+
let rx = gpiob.pb8.into_alternate().speed(Speed::VeryHigh);
61+
let tx = gpiob.pb9.into_alternate().speed(Speed::VeryHigh);
6262

6363
info!("-- Create CAN 1 instance");
6464
let mut can = dp.FDCAN1.fdcan(tx, rx, &rcc);
@@ -82,8 +82,8 @@ fn main() -> ! {
8282

8383
// let can2 = {
8484
// info!("Init CAN 2");
85-
// let rx = gpiob.pb5.into_alternate().set_speed(Speed::VeryHigh);
86-
// let tx = gpiob.pb13.into_alternate().set_speed(Speed::VeryHigh);
85+
// let rx = gpiob.pb5.into_alternate().speed(Speed::VeryHigh);
86+
// let tx = gpiob.pb13.into_alternate().speed(Speed::VeryHigh);
8787

8888
// info!("-- Create CAN 2 instance");
8989
// let mut can = dp.FDCAN2.fdcan(tx, rx, &rcc);

examples/comp.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ use rt::entry;
1717
fn main() -> ! {
1818
use hal::comparator::{ComparatorExt, ComparatorSplit, Config, Hysteresis, RefintInput};
1919
use hal::gpio::GpioExt;
20-
use hal::prelude::OutputPin;
2120
use hal::rcc::RccExt;
2221
use hal::stm32;
2322
use stm32g4xx_hal as hal;
@@ -55,8 +54,8 @@ fn main() -> ! {
5554
loop {
5655
// Read comp1 output and update led1 accordingly
5756
match comp1.output() {
58-
true => led1.set_high().unwrap(),
59-
false => led1.set_low().unwrap(),
57+
true => led1.set_high(),
58+
false => led1.set_low(),
6059
}
6160
}
6261
}

examples/pwm.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44

55
use cortex_m_rt::entry;
66
use hal::gpio::gpioa::PA8;
7-
use hal::gpio::Alternate;
87
use hal::gpio::AF6;
98
use hal::prelude::*;
109
use hal::stm32;
@@ -23,7 +22,7 @@ fn main() -> ! {
2322
let dp = stm32::Peripherals::take().expect("cannot take peripherals");
2423
let mut rcc = dp.RCC.constrain();
2524
let gpioa = dp.GPIOA.split(&mut rcc);
26-
let pin: PA8<Alternate<AF6>> = gpioa.pa8.into_alternate();
25+
let pin: PA8<AF6> = gpioa.pa8.into_alternate();
2726

2827
let mut pwm = dp.TIM1.pwm(pin, 100.Hz(), &mut rcc);
2928

0 commit comments

Comments
 (0)