Skip to content

Commit 7ad7efd

Browse files
committed
port gpio's from f4-hal
1 parent 0a0d06d commit 7ad7efd

31 files changed

+2102
-1291
lines changed

Cargo.toml

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -67,15 +67,15 @@ stm32f723 = ["stm32f7/stm32f7x3", "device-selected", "usb_hs_phy"]
6767
stm32f730 = ["stm32f7/stm32f730", "device-selected", "usb_hs_phy", "fmc"]
6868
stm32f732 = ["stm32f7/stm32f7x2", "device-selected"]
6969
stm32f733 = ["stm32f7/stm32f7x3", "device-selected", "usb_hs_phy"]
70-
stm32f745 = ["stm32f7/stm32f745", "device-selected", "fmc"]
71-
stm32f746 = ["stm32f7/stm32f7x6", "device-selected", "ltdc", "fmc", "has-can"]
72-
stm32f756 = ["stm32f7/stm32f7x6", "device-selected", "ltdc", "fmc"]
73-
stm32f765 = ["stm32f7/stm32f765", "device-selected", "fmc"]
74-
stm32f767 = ["stm32f7/stm32f7x7", "device-selected", "ltdc", "fmc"]
75-
stm32f769 = ["stm32f7/stm32f7x9", "device-selected", "ltdc", "fmc"]
76-
stm32f777 = ["stm32f7/stm32f7x7", "device-selected", "ltdc", "fmc"]
77-
stm32f778 = ["stm32f7/stm32f7x9", "device-selected", "ltdc", "fmc"]
78-
stm32f779 = ["stm32f7/stm32f7x9", "device-selected", "ltdc", "fmc"]
70+
stm32f745 = ["stm32f7/stm32f745", "device-selected", "gpioj", "gpiok", "fmc"]
71+
stm32f746 = ["stm32f7/stm32f7x6", "device-selected", "gpioj", "gpiok", "ltdc", "fmc", "has-can"]
72+
stm32f756 = ["stm32f7/stm32f7x6", "device-selected", "gpioj", "gpiok", "ltdc", "fmc"]
73+
stm32f765 = ["stm32f7/stm32f765", "device-selected", "gpioj", "gpiok", "fmc"]
74+
stm32f767 = ["stm32f7/stm32f7x7", "device-selected", "gpioj", "gpiok", "ltdc", "fmc"]
75+
stm32f769 = ["stm32f7/stm32f7x9", "device-selected", "gpioj", "gpiok", "ltdc", "fmc"]
76+
stm32f777 = ["stm32f7/stm32f7x7", "device-selected", "gpioj", "gpiok", "ltdc", "fmc"]
77+
stm32f778 = ["stm32f7/stm32f7x9", "device-selected", "gpioj", "gpiok", "ltdc", "fmc"]
78+
stm32f779 = ["stm32f7/stm32f7x9", "device-selected", "gpioj", "gpiok", "ltdc", "fmc"]
7979

8080
fmc_lcd = ["display-interface"]
8181

@@ -84,6 +84,9 @@ usb_hs = ["synopsys-usb-otg", "synopsys-usb-otg/hs"]
8484

8585
has-can = []
8686

87+
gpioj = []
88+
gpiok = []
89+
8790
[profile.dev]
8891
incremental = false
8992
codegen-units = 1

examples/blinky.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,10 @@ fn main() -> ! {
2121

2222
loop {
2323
for _ in 0..10_000 {
24-
led.set_high().expect("GPIO can never fail");
24+
led.set_high();
2525
}
2626
for _ in 0..10_000 {
27-
led.set_low().expect("GPIO can never fail");
27+
led.set_low();
2828
}
2929
}
3030
}

examples/blinky_delay.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,10 @@ fn main() -> ! {
2828
let mut delay = Delay::new(cp.SYST, clocks);
2929

3030
loop {
31-
led.set_high().expect("GPIO can never fail");
31+
led.set_high();
3232
delay.delay_ms(500_u16);
3333

34-
led.set_low().expect("GPIO can never fail");
34+
led.set_low();
3535
delay.delay_ms(500_u16);
3636
}
3737
}

examples/can-echo.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@ fn main() -> ! {
3636
let gpiob = dp.GPIOB.split();
3737

3838
let mut can1 = {
39-
let rx = gpioa.pa11.into_alternate_af9();
40-
let tx = gpioa.pa12.into_alternate_af9();
39+
let rx = gpioa.pa11.into_alternate();
40+
let tx = gpioa.pa12.into_alternate();
4141

4242
let can = Can::new(dp.CAN1, &mut rcc.apb1, (tx, rx));
4343
bxcan::Can::new(can)
@@ -53,8 +53,8 @@ fn main() -> ! {
5353
filters.enable_bank(0, Mask32::accept_all());
5454

5555
let _can2 = {
56-
let rx = gpiob.pb5.into_alternate_af9();
57-
let tx = gpiob.pb6.into_alternate_af9();
56+
let rx = gpiob.pb5.into_alternate();
57+
let tx = gpiob.pb6.into_alternate();
5858

5959
let can = Can::new(dp.CAN2, &mut rcc.apb1, (tx, rx));
6060

examples/can-loopback.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@ fn main() -> ! {
3636

3737
let gpioa = dp.GPIOA.split();
3838

39-
let rx = gpioa.pa11.into_alternate_af9();
40-
let tx = gpioa.pa12.into_alternate_af9();
39+
let rx = gpioa.pa11.into_alternate();
40+
let tx = gpioa.pa12.into_alternate();
4141

4242
let can = Can::new(dp.CAN1, &mut rcc.apb1, (tx, rx));
4343

examples/exti_button.rs

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -62,11 +62,7 @@ fn main() -> ! {
6262
free(|cs| {
6363
if SEMAPHORE.borrow(cs).get() == false {
6464
// Toggle debug LED
65-
if let Ok(true) = led1.is_low() {
66-
led1.set_high().ok();
67-
} else {
68-
led1.set_low().ok();
69-
}
65+
led1.toggle();
7066

7167
SEMAPHORE.borrow(cs).set(true);
7268
}

examples/fmc.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ macro_rules! fmc_pins {
3030
$(
3131
$pin.into_push_pull_output()
3232
.set_speed(Speed::VeryHigh)
33-
.into_alternate_af12()
33+
.into_alternate()
3434
.internal_pull_up(true)
3535
),*
3636
)

examples/serial_delay.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ fn main() -> ! {
3232
let gpioa = p.GPIOA.split();
3333
let gpiob = p.GPIOB.split();
3434

35-
let tx = gpioa.pa9.into_alternate_af7();
36-
let rx = gpiob.pb7.into_alternate_af7();
35+
let tx = gpioa.pa9.into_alternate();
36+
let rx = gpiob.pb7.into_alternate();
3737

3838
let serial = Serial::new(
3939
p.USART1,

examples/serial_dma.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,8 @@ fn main() -> ! {
3939

4040
let gpiod = p.GPIOD.split();
4141

42-
let tx = gpiod.pd8.into_alternate_af7();
43-
let rx = gpiod.pd9.into_alternate_af7();
42+
let tx = gpiod.pd8.into_alternate();
43+
let rx = gpiod.pd9.into_alternate();
4444

4545
let serial = Serial::new(
4646
p.USART3,

examples/serial_echo.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@ fn main() -> ! {
2828
let gpioa = p.GPIOA.split();
2929
let gpiob = p.GPIOB.split();
3030

31-
let tx = gpioa.pa9.into_alternate_af7();
32-
let rx = gpiob.pb7.into_alternate_af7();
31+
let tx = gpioa.pa9.into_alternate();
32+
let rx = gpiob.pb7.into_alternate();
3333

3434
let serial = Serial::new(
3535
p.USART1,

examples/spi.rs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,12 @@ fn main() -> ! {
2626

2727
// Prepare pins for SPI
2828
let mut ncs = gpioc.pc9.into_push_pull_output();
29-
let sck = gpioc.pc10.into_alternate_af6();
30-
let miso = gpioc.pc11.into_alternate_af6();
31-
let mosi = gpioc.pc12.into_alternate_af6();
29+
let sck = gpioc.pc10.into_alternate();
30+
let miso = gpioc.pc11.into_alternate();
31+
let mosi = gpioc.pc12.into_alternate();
3232

3333
// Set NCS pin to high (disabled) initially
34-
ncs.set_high().unwrap();
34+
ncs.set_high();
3535

3636
// Initialize SPI
3737
let mut spi = Spi::new(p.SPI3, (sck, miso, mosi)).enable::<u8>(
@@ -47,17 +47,17 @@ fn main() -> ! {
4747
// Read WHO_AM_I register of an MPU9250 sensor.
4848
let mut buffer = [0; 2];
4949
buffer[0] = 0x75 | 0x80;
50-
ncs.set_low().unwrap();
50+
ncs.set_low();
5151
spi.transfer(&mut buffer).unwrap();
52-
ncs.set_high().unwrap();
52+
ncs.set_high();
5353

5454
// The WHO_AM_I register should always return 0x71.
5555
if buffer[1] == 0x71 {
56-
green.set_high().unwrap();
57-
red.set_low().unwrap();
56+
green.set_high();
57+
red.set_low();
5858
} else {
59-
red.set_high().unwrap();
60-
green.set_low().unwrap();
59+
red.set_high();
60+
green.set_low();
6161
}
6262
}
6363
}

examples/spi_16.rs

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,11 @@ fn main() -> ! {
2626

2727
// Prepare pins for SPI
2828
let mut ncs = gpiod.pd14.into_push_pull_output();
29-
let sck = gpioa.pa5.into_alternate_af5();
30-
let mosi = gpioa.pa7.into_alternate_af5();
29+
let sck = gpioa.pa5.into_alternate();
30+
let mosi = gpioa.pa7.into_alternate();
3131

3232
// Set NCS pin to high (disabled) initially
33-
ncs.set_high().unwrap();
33+
ncs.set_high();
3434

3535
// Initialize SPI
3636
let mut spi = Spi::new(p.SPI1, (sck, spi::NoMiso, mosi)).enable::<u16>(
@@ -41,17 +41,13 @@ fn main() -> ! {
4141

4242
// Use a button to control output via the Maxim Integrated MAX5214 DAC.
4343
loop {
44-
let data = if button.is_high().unwrap() {
45-
0xffff
46-
} else {
47-
0x0000
48-
};
44+
let data = if button.is_high() { 0xffff } else { 0x0000 };
4945

5046
let word: u16 = (0b01 << 14) | // write-through mode
5147
(data & 0x3fff); // data bits
5248

53-
ncs.set_low().unwrap();
49+
ncs.set_low();
5450
spi.write(&[word]).unwrap();
55-
ncs.set_high().unwrap();
51+
ncs.set_high();
5652
}
5753
}

examples/spi_dma.rs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,9 @@ fn main() -> ! {
3131

3232
// Prepare pins for SPI
3333
let mut ncs = gpioc.pc9.into_push_pull_output();
34-
let sck = gpioc.pc10.into_alternate_af6();
35-
let miso = gpioc.pc11.into_alternate_af6();
36-
let mosi = gpioc.pc12.into_alternate_af6();
34+
let sck = gpioc.pc10.into_alternate();
35+
let miso = gpioc.pc11.into_alternate();
36+
let mosi = gpioc.pc12.into_alternate();
3737

3838
// Prepare DMA streams
3939
let mut rx_stream = dma.streams.stream0;
@@ -42,7 +42,7 @@ fn main() -> ! {
4242
let dma = dma.handle.enable(&mut rcc.ahb1);
4343

4444
// Set NCS pin to high (disabled) initially
45-
ncs.set_high().unwrap();
45+
ncs.set_high();
4646

4747
// Initialize SPI
4848
let mut spi = Spi::new(p.SPI3, (sck, miso, mosi)).enable(
@@ -69,7 +69,7 @@ fn main() -> ! {
6969
let mut transfer = spi.transfer_all(buffer, &dma, &dma, rx_stream, tx_stream);
7070

7171
// Start DMA transfer and wait for it to finish
72-
ncs.set_low().unwrap();
72+
ncs.set_low();
7373
let res = interrupt::free(|_| {
7474
transfer.enable_interrupts(
7575
&dma,
@@ -88,7 +88,7 @@ fn main() -> ! {
8888

8989
transfer.wait(&dma, &dma).unwrap()
9090
});
91-
ncs.set_high().unwrap();
91+
ncs.set_high();
9292

9393
// Assign everything we've moved to the DMA transfer to the local
9494
// variables it came from, so it's available again in the next loop
@@ -100,11 +100,11 @@ fn main() -> ! {
100100

101101
// The WHO_AM_I register should always return 0x71.
102102
if buffer[1] == 0x71 {
103-
green.set_high().unwrap();
104-
red.set_low().unwrap();
103+
green.set_high();
104+
red.set_low();
105105
} else {
106-
red.set_high().unwrap();
107-
green.set_low().unwrap();
106+
red.set_high();
107+
green.set_low();
108108
}
109109
}
110110
}

examples/spi_dma_16.rs

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@ fn main() -> ! {
3131

3232
// Prepare pins for SPI
3333
let mut ncs = gpiod.pd14.into_push_pull_output();
34-
let sck = gpioa.pa5.into_alternate_af5();
35-
let mosi = gpioa.pa7.into_alternate_af5();
34+
let sck = gpioa.pa5.into_alternate();
35+
let mosi = gpioa.pa7.into_alternate();
3636

3737
// Prepare DMA streams
3838
let mut rx_stream = dma.streams.stream0;
@@ -41,7 +41,7 @@ fn main() -> ! {
4141
let dma = dma.handle.enable(&mut rcc.ahb1);
4242

4343
// Set NCS pin to high (disabled) initially
44-
ncs.set_high().unwrap();
44+
ncs.set_high();
4545

4646
// Initialize SPI
4747
let mut spi = Spi::new(p.SPI1, (sck, spi::NoMiso, mosi)).enable(
@@ -58,11 +58,7 @@ fn main() -> ! {
5858

5959
// Use a button to control output via the Maxim Integrated MAX5214 DAC.
6060
loop {
61-
let data = if button.is_high().unwrap() {
62-
0xffff
63-
} else {
64-
0x0000
65-
};
61+
let data = if button.is_high() { 0xffff } else { 0x0000 };
6662

6763
buffer[0] = (0b01 << 14) | // write-through mode
6864
(data & 0x3fff); // data bits
@@ -71,7 +67,7 @@ fn main() -> ! {
7167
let mut transfer = spi.transfer_all(buffer, &dma, &dma, rx_stream, tx_stream);
7268

7369
// Start DMA transfer and wait for it to finish
74-
ncs.set_low().unwrap();
70+
ncs.set_low();
7571
let res = interrupt::free(|_| {
7672
transfer.enable_interrupts(
7773
&dma,
@@ -90,7 +86,7 @@ fn main() -> ! {
9086

9187
transfer.wait(&dma, &dma).unwrap()
9288
});
93-
ncs.set_high().unwrap();
89+
ncs.set_high();
9490

9591
buffer = res.buffer;
9692
spi = res.target;

examples/stm32f7disco-qspi-flash/mt25q.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,37 +38,37 @@ impl Mt25q {
3838

3939
let _qspi_d0 = gpiod
4040
.pd11
41-
.into_alternate_af9()
41+
.into_alternate::<9>()
4242
.internal_pull_up(true)
4343
.set_speed(Speed::VeryHigh);
4444

4545
let _qspi_d1 = gpiod
4646
.pd12
47-
.into_alternate_af9()
47+
.into_alternate::<9>()
4848
.internal_pull_up(true)
4949
.set_speed(Speed::VeryHigh);
5050

5151
let _qspi_d2 = gpioe
5252
.pe2
53-
.into_alternate_af9()
53+
.into_alternate::<9>()
5454
.internal_pull_up(true)
5555
.set_speed(Speed::VeryHigh);
5656

5757
let _qspi_d3 = gpiod
5858
.pd13
59-
.into_alternate_af9()
59+
.into_alternate::<9>()
6060
.internal_pull_up(true)
6161
.set_speed(Speed::VeryHigh);
6262

6363
let _qspi_clk = gpiob
6464
.pb2
65-
.into_alternate_af9()
65+
.into_alternate::<9>()
6666
.internal_pull_up(true)
6767
.set_speed(Speed::VeryHigh);
6868

6969
let _qspi_ncs = gpiob
7070
.pb6
71-
.into_alternate_af10()
71+
.into_alternate::<10>()
7272
.internal_pull_up(true)
7373
.set_speed(Speed::VeryHigh);
7474

0 commit comments

Comments
 (0)