Skip to content

Commit 65b58fb

Browse files
committed
Update for new pac
1 parent a230b98 commit 65b58fb

File tree

7 files changed

+51
-49
lines changed

7 files changed

+51
-49
lines changed

Cargo.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,9 @@ log-semihost = ["log"]
4444

4545
[dependencies]
4646
cortex-m = { version = "^0.7.7", features = ["critical-section-single-core"] }
47-
stm32h5 = "0.15.1"
47+
#stm32h5 = { git = "https://github.com/stm32-rs/stm32-rs-nightlies.git" }
48+
stm32h5 = { path = "../stm32-rs/stm32h5" }
49+
#stm32h5 = "0.15.1"
4850
fugit = "0.3.7"
4951
embedded-hal = "1.0.0"
5052
defmt = { version = "0.3.8", optional = true }

src/gpio.rs

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -318,10 +318,8 @@ where
318318
let offset = 2 * { N };
319319

320320
unsafe {
321-
(*Gpio::<P>::ptr()).ospeedr().modify(|r, w| {
322-
w.bits(
323-
(r.bits() & !(0b11 << offset)) | ((speed as u32) << offset),
324-
)
321+
(*Gpio::<P>::ptr()).ospeedr().modify(|_r, w| {
322+
w.ospeed(offset).bits(speed as u8)
325323
});
326324
}
327325
}
@@ -340,10 +338,10 @@ where
340338
/// Set the internal pull-up and pull-down resistor
341339
pub fn set_internal_resistor(&mut self, resistor: Pull) {
342340
let offset = 2 * { N };
343-
let value = resistor as u32;
341+
let value = resistor as u8;
344342
unsafe {
345-
(*Gpio::<P>::ptr()).pupdr().modify(|r, w| {
346-
w.bits((r.bits() & !(0b11 << offset)) | (value << offset))
343+
(*Gpio::<P>::ptr()).pupdr().modify(|_r, w| {
344+
w.pupd(offset).bits(value)
347345
});
348346
}
349347
}
@@ -428,22 +426,22 @@ impl<const P: char, const N: u8, MODE> Pin<P, N, MODE> {
428426
#[inline(always)]
429427
fn _set_high(&mut self) {
430428
// NOTE(unsafe) atomic write to a stateless register
431-
unsafe { (*Gpio::<P>::ptr()).bsrr().write(|w| w.bits(1 << N)) }
429+
unsafe { (*Gpio::<P>::ptr()).bsrr().write(|w| w.bs(N).set_bit()); }
432430
}
433431
#[inline(always)]
434432
fn _set_low(&mut self) {
435433
// NOTE(unsafe) atomic write to a stateless register
436-
unsafe { (*Gpio::<P>::ptr()).bsrr().write(|w| w.bits(1 << (16 + N))) }
434+
unsafe { (*Gpio::<P>::ptr()).bsrr().write(|w| w.br(N).set_bit()); }
437435
}
438436
#[inline(always)]
439437
fn _is_set_low(&self) -> bool {
440438
// NOTE(unsafe) atomic read with no side effects
441-
unsafe { (*Gpio::<P>::ptr()).odr().read().bits() & (1 << N) == 0 }
439+
unsafe { (*Gpio::<P>::ptr()).odr().read().od(N).is_low() }
442440
}
443441
#[inline(always)]
444442
fn _is_low(&self) -> bool {
445443
// NOTE(unsafe) atomic read with no side effects
446-
unsafe { (*Gpio::<P>::ptr()).idr().read().bits() & (1 << N) == 0 }
444+
unsafe { (*Gpio::<P>::ptr()).idr().read().id(N).is_low() }
447445
}
448446
}
449447

src/gpio/exti.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ where
142142
Edge::Rising => exti.rpr1().write(|w| w.bits(mask)),
143143
Edge::Falling => exti.fpr1().write(|w| w.bits(mask)),
144144
_ => panic!("Must choose a rising or falling edge"),
145-
}
145+
};
146146
}
147147
}
148148

src/gpio/partially_erased.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,9 @@ impl<const P: char, MODE> PartiallyErasedPin<P, Output<MODE>> {
6262
#[inline(always)]
6363
pub fn set_high(&mut self) {
6464
// NOTE(unsafe) atomic write to a stateless register
65-
unsafe { (*Gpio::<P>::ptr()).bsrr().write(|w| w.bits(1 << self.i)) }
65+
unsafe {
66+
(*Gpio::<P>::ptr()).bsrr().write(|w| w.bs(self.i).set_bit());
67+
}
6668
}
6769

6870
/// Drives the pin low
@@ -72,7 +74,7 @@ impl<const P: char, MODE> PartiallyErasedPin<P, Output<MODE>> {
7274
unsafe {
7375
(*Gpio::<P>::ptr())
7476
.bsrr()
75-
.write(|w| w.bits(1 << (self.i + 16)))
77+
.write(|w| w.br(self.i).set_bit());
7678
}
7779
}
7880

src/rcc.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -686,11 +686,11 @@ impl Rcc {
686686
w.mco1sel()
687687
.variant(self.config.mco1.source)
688688
.mco1pre()
689-
.bits(mco_1_pre)
689+
.set(mco_1_pre)
690690
.mco2sel()
691691
.variant(self.config.mco2.source)
692692
.mco2pre()
693-
.bits(mco_2_pre)
693+
.set(mco_2_pre)
694694
});
695695

696696
// HSE
@@ -748,7 +748,7 @@ impl Rcc {
748748

749749
// Ensure core prescaler value is valid before future lower
750750
// core voltage
751-
while rcc.cfgr2().read().hpre().variant() != Some(hpre_bits) {}
751+
while rcc.cfgr2().read().hpre().variant() != hpre_bits {}
752752

753753
// Peripheral Clock (per_ck)
754754
rcc.ccipr5().modify(|_, w| w.ckpersel().variant(ckpersel));

src/rcc/pll.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,7 @@ macro_rules! pll_divider_setup {
224224

225225
// Setup divider
226226
$rcc.[<$pllX divr>]().modify(|_, w|
227-
w.[<$pllX $d>]().variant((pll_x_d.div - 1) as u8)
227+
w.[<$pllX $d>]().set((pll_x_d.div - 1) as u8)
228228
);
229229
$rcc.[<$pllX cfgr>]().modify(|_, w| w.[<$pllX $d en>]().enabled());
230230
Some(Hertz::from_raw($vco_ck / pll_x_d.div))
@@ -264,14 +264,14 @@ macro_rules! pll_setup {
264264
let pll_x_n = pll_setup.vco_out_target / pll_setup.ref_ck;
265265

266266
// Write dividers
267-
rcc.[< $pllX cfgr >]().modify(|_, w|
267+
rcc.[< $pllX cfgr >]().modify(|_, w| unsafe {
268268
w.[< $pllX m >]()
269-
.variant(pll_setup.pll_m as u8)); // ref prescaler
269+
.bits(pll_setup.pll_m as u8) }); // ref prescaler
270270

271271
// unsafe as not all values are permitted: see RM0492
272272
assert!(pll_x_n >= PLL_N_MIN);
273273
assert!(pll_x_n <= PLL_N_MAX);
274-
rcc.[<$pllX divr>]().modify(|_, w| w.[<$pllX n>]().variant((pll_x_n - 1) as u16));
274+
rcc.[<$pllX divr>]().modify(|_, w| unsafe { w.[<$pllX n>]().bits((pll_x_n - 1) as u16) });
275275

276276
let pll_x = pll_setup.pll_p.as_ref().or(pll_setup.pll_q.as_ref().or(pll_setup.pll_r.as_ref())).unwrap();
277277

@@ -281,10 +281,10 @@ macro_rules! pll_setup {
281281
// Calculate FRACN
282282
let pll_x_fracn = calc_fracn(pll_setup.ref_ck as f32, pll_x_n as f32, pll_x.div as f32, pll_x.ck as f32);
283283
//RCC_PLL1FRACR
284-
rcc.[<$pllX fracr>]().modify(|_, w| w.[<$pllX fracn>]().variant(pll_x_fracn));
284+
rcc.[<$pllX fracr>]().modify(|_, w| w.[<$pllX fracn>]().set(pll_x_fracn));
285285
// Latch FRACN by resetting and setting it
286286
rcc.[<$pllX cfgr>]().modify(|_, w| w.[< $pllX fracen>]().reset() );
287-
rcc.[<$pllX cfgr>]().modify(|_, w| w.[< $pllX fracen>]().set() );
287+
rcc.[<$pllX cfgr>]().modify(|_, w| w.[< $pllX fracen>]().set_() );
288288

289289
calc_vco_ck(pll_setup.ref_ck, pll_x_n, pll_x_fracn)
290290
},

src/rcc/rec.rs

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -129,8 +129,8 @@ macro_rules! peripheral_reset_and_enable_control {
129129
$(
130130
$( #[ $pmeta:meta ] )*
131131
$(($NoReset:ident))? $p:ident
132-
$([ kernel $clk:ident: $pk:ident $(($Variant:ident))* $ccip:ident $clk_doc:expr ])*
133-
$([ group clk: $pk_g:ident $( $(($Variant_g:ident))* $ccip_g:ident $clk_doc_g:expr )* ])*
132+
$([ kernel $clk:ident: $pk:ident $(($Variant:ident))* $pk_alias:ident $ccip:ident $clk_doc:expr ])*
133+
$([ group clk: $pk_g:ident $( $(($Variant_g:ident))* $pk_g_alias:ident $ccip_g:ident $clk_doc_g:expr )* ])*
134134
$([ fixed clk: $clk_doc_f:expr ])*
135135
),*
136136
];)+) => {
@@ -177,10 +177,10 @@ macro_rules! peripheral_reset_and_enable_control {
177177
$AXBn, $(($NoReset))* $p, [< $p:upper >], [< $p:lower >],
178178
$( $pmeta )*
179179
$(
180-
[kernel $clk: $pk $(($Variant))* $ccip $clk_doc]
180+
[kernel $clk: $pk $(($Variant))* $pk_alias $ccip $clk_doc]
181181
)*
182182
$(
183-
[group clk: $pk_g [< $pk_g:lower >] $( $(($Variant_g))* $ccip_g $clk_doc_g )* ]
183+
[group clk: $pk_g [< $pk_g:lower >] $( $(($Variant_g))* $pk_g_alias $ccip_g $clk_doc_g )* ]
184184
)*
185185
$(
186186
[fixed clk: $clk_doc_f]
@@ -230,8 +230,8 @@ macro_rules! peripheral_reset_and_enable_control_generator {
230230
$p_lower:ident, // comments, equivalent to with the paste macro.
231231

232232
$( $pmeta:meta )*
233-
$([ kernel $clk:ident: $pk:ident $(($Variant:ident))* $ccip:ident $clk_doc:expr ])*
234-
$([ group clk: $pk_g:ident $pk_g_lower:ident $( $(($Variant_g:ident))* $ccip_g:ident $clk_doc_g:expr )* ])*
233+
$([ kernel $clk:ident: $pk:ident $(($Variant:ident))* $pk_alias:ident $ccip:ident $clk_doc:expr ])*
234+
$([ group clk: $pk_g:ident $pk_g_lower:ident $( $(($Variant_g:ident))* $pk_g_alias:ident $ccip_g:ident $clk_doc_g:expr )* ])*
235235
$([ fixed clk: $clk_doc_f:expr ])*
236236
) => {
237237
paste::item! {
@@ -388,7 +388,7 @@ macro_rules! peripheral_reset_and_enable_control_generator {
388388
#[doc=$clk_doc]
389389
/// kernel clock source selection
390390
pub type [< $pk ClkSel >] =
391-
rcc::[< $ccip >]::[< $pk:upper SEL >];
391+
rcc::[< $ccip >]::[< $pk_alias SEL >];
392392
)*
393393
$( // Group kernel clocks
394394
impl [< $pk_g ClkSelGetter >] for $p {}
@@ -398,7 +398,7 @@ macro_rules! peripheral_reset_and_enable_control_generator {
398398
#[doc=$clk_doc_g]
399399
/// kernel clock source selection.
400400
pub type [< $pk_g ClkSel >] =
401-
rcc::[< $ccip_g >]::[< $pk_g:upper SEL >];
401+
rcc::[< $ccip_g >]::[< $pk_g_alias SEL >];
402402

403403
/// Can return
404404
#[doc=$clk_doc_g]
@@ -508,8 +508,8 @@ peripheral_reset_and_enable_control! {
508508
];
509509
#[cfg(feature = "rm0492")]
510510
AHB2, "" => [
511-
Rng [kernel clk: Rng ccipr5 "RNG"],
512-
Adc [group clk: AdcDac(Variant) ccipr5 "ADC/DAC"],
511+
Rng [kernel clk: Rng RNG ccipr5 "RNG"],
512+
Adc [group clk: AdcDac(Variant) ADCDAC ccipr5 "ADC/DAC"],
513513
Dac12 [group clk: AdcDac]
514514
];
515515

@@ -522,16 +522,16 @@ peripheral_reset_and_enable_control! {
522522
];
523523
#[cfg(feature = "rm0492")]
524524
APB1L, "" => [
525-
I3c1 [kernel clk: I3c1(Variant) ccipr4 "I3C1"],
525+
I3c1 [kernel clk: I3c1(Variant) I3C ccipr4 "I3C1"],
526526

527-
I2c1 [kernel clk: I2c1 ccipr4 "I2C1"],
528-
I2c2 [kernel clk: I2c2 ccipr4 "I2C2"],
527+
I2c1 [kernel clk: I2c1 I2C ccipr4 "I2C1"],
528+
I2c2 [kernel clk: I2c2 I2C ccipr4 "I2C2"],
529529

530-
Usart2 [kernel clk: Usart2(Variant) ccipr1 "USART2"],
531-
Usart3 [kernel clk: Usart3(Variant) ccipr1 "USART3"],
530+
Usart2 [kernel clk: Usart2(Variant) USART ccipr1 "USART2"],
531+
Usart3 [kernel clk: Usart3(Variant) USART ccipr1 "USART3"],
532532

533-
Spi2 [kernel clk: Spi2(Variant) ccipr3 "SPI2"],
534-
Spi3 [kernel clk: Spi3(Variant) ccipr3 "SPI3"],
533+
Spi2 [kernel clk: Spi2(Variant) SPI123 ccipr3 "SPI2"],
534+
Spi3 [kernel clk: Spi3(Variant) SPI123 ccipr3 "SPI3"],
535535
Opamp,
536536
Comp
537537
];
@@ -542,8 +542,8 @@ peripheral_reset_and_enable_control! {
542542
];
543543
#[cfg(feature = "rm0492")]
544544
APB1H, "" => [
545-
Lptim2 [kernel clk: Lptim2(Variant) ccipr2 "LPTIM2"],
546-
Fdcan [kernel clk: Fdcan(Variant) ccipr5 "FDCAN"]
545+
Lptim2 [kernel clk: Lptim2(Variant) LPTIM ccipr2 "LPTIM2"],
546+
Fdcan [kernel clk: Fdcan(Variant) FDCAN ccipr5 "FDCAN"]
547547
];
548548

549549
#[cfg(all())]
@@ -552,9 +552,9 @@ peripheral_reset_and_enable_control! {
552552
];
553553
#[cfg(feature = "rm0492")]
554554
APB2, "" => [
555-
Usb [kernel clk: Usb ccipr4 "USB"],
556-
Usart1 [kernel clk: Usart1(Variant) ccipr1 "USART1"],
557-
Spi1 [kernel clk: Spi1(Variant) ccipr3 "SPI1"]
555+
Usb [kernel clk: Usb USB ccipr4 "USB"],
556+
Usart1 [kernel clk: Usart1(Variant) USART ccipr1 "USART1"],
557+
Spi1 [kernel clk: Spi1(Variant) SPI123 ccipr3 "SPI1"]
558558
];
559559

560560
#[cfg(all())]
@@ -564,9 +564,9 @@ peripheral_reset_and_enable_control! {
564564
];
565565
#[cfg(feature = "rm0492")]
566566
APB3, "" => [
567-
I3c2 [kernel clk: I3c2(Variant) ccipr4 "I3C2"],
568-
LpTim1 [kernel clk: LpTim1(Variant) ccipr2 "LPTIM1"],
569-
LpUart1 [kernel clk: LpUart1(Variant) ccipr3 "LPUART1"]
567+
I3c2 [kernel clk: I3c2(Variant) I3C ccipr4 "I3C2"],
568+
LpTim1 [kernel clk: LpTim1(Variant) LPTIM ccipr2 "LPTIM1"],
569+
LpUart1 [kernel clk: LpUart1(Variant) USART ccipr3 "LPUART1"]
570570
];
571571

572572
}

0 commit comments

Comments
 (0)