Skip to content

Commit 39e0845

Browse files
committed
add embedded-hal v1.0.0-alpha.7 support
1 parent 6073fab commit 39e0845

File tree

3 files changed

+16
-66
lines changed

3 files changed

+16
-66
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
1010
### Fixed
1111

1212
- Fix `asm::delay()` to ensure count register is always reloaded
13+
### Changed
14+
15+
- Use new `DelayUs` trait from `embedded-hal` `v1.0.0-alpha.7`
16+
- NOTE: this removes `DelayMs` and `DelayUs` with `u64` version
1317

1418
## [v0.8.0] - 2022-04-20
1519

Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "riscv"
3-
version = "0.8.0"
3+
version = "0.9.0-alpha.1"
44
rust-version = "1.59"
55
repository = "https://github.com/rust-embedded/riscv"
66
authors = ["The RISC-V Team <[email protected]>"]
@@ -19,4 +19,4 @@ targets = [
1919
[dependencies]
2020
bare-metal = "1.0.0"
2121
bit_field = "0.10.0"
22-
embedded-hal = "0.2.6"
22+
embedded-hal = "1.0.0-alpha.7"

src/delay.rs

Lines changed: 10 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
//! Delay devices and providers
1+
use core::convert::Infallible;
2+
23
use crate::register::mcycle;
3-
use embedded_hal::blocking::delay::{DelayMs, DelayUs};
4+
use embedded_hal::delay::blocking::DelayUs;
45

56
/// Machine mode cycle counter (`mcycle`) as a delay provider
67
#[derive(Copy, Clone)]
@@ -17,71 +18,16 @@ impl McycleDelay {
1718
}
1819
}
1920

20-
impl DelayUs<u64> for McycleDelay {
21+
impl DelayUs for McycleDelay {
22+
type Error = Infallible;
23+
2124
#[inline]
22-
fn delay_us(&mut self, us: u64) {
25+
fn delay_us(&mut self, us: u32) -> Result<(), Self::Error> {
2326
let t0 = mcycle::read64();
24-
let clock = (us * (self.ticks_second as u64)) / 1_000_000;
27+
let us_64: u64 = us.into();
28+
let clock = (us_64 * (self.ticks_second as u64)) / 1_000_000u64;
2529
while mcycle::read64().wrapping_sub(t0) <= clock {}
26-
}
27-
}
2830

29-
impl DelayUs<u32> for McycleDelay {
30-
#[inline(always)]
31-
fn delay_us(&mut self, us: u32) {
32-
self.delay_us(us as u64)
33-
}
34-
}
35-
36-
// Implemented for constructions like `delay.delay_us(50_000);`
37-
impl DelayUs<i32> for McycleDelay {
38-
#[inline(always)]
39-
fn delay_us(&mut self, us: i32) {
40-
assert!(us >= 0);
41-
self.delay_us(us as u32);
42-
}
43-
}
44-
45-
impl DelayUs<u16> for McycleDelay {
46-
#[inline(always)]
47-
fn delay_us(&mut self, us: u16) {
48-
self.delay_us(us as u32)
49-
}
50-
}
51-
52-
impl DelayUs<u8> for McycleDelay {
53-
#[inline(always)]
54-
fn delay_us(&mut self, us: u8) {
55-
self.delay_us(us as u32)
56-
}
57-
}
58-
59-
impl DelayMs<u32> for McycleDelay {
60-
#[inline]
61-
fn delay_ms(&mut self, ms: u32) {
62-
self.delay_us((ms as u64) * 1000)
63-
}
64-
}
65-
66-
// Implemented for constructions like `delay.delay_ms(50_000);`
67-
impl DelayMs<i32> for McycleDelay {
68-
#[inline(always)]
69-
fn delay_ms(&mut self, ms: i32) {
70-
assert!(ms >= 0);
71-
self.delay_ms(ms as u32);
72-
}
73-
}
74-
75-
impl DelayMs<u16> for McycleDelay {
76-
#[inline(always)]
77-
fn delay_ms(&mut self, ms: u16) {
78-
self.delay_ms(ms as u32)
79-
}
80-
}
81-
82-
impl DelayMs<u8> for McycleDelay {
83-
#[inline(always)]
84-
fn delay_ms(&mut self, ms: u8) {
85-
self.delay_ms(ms as u32)
31+
Ok(())
8632
}
8733
}

0 commit comments

Comments
 (0)