Skip to content

Commit 0e9d83a

Browse files
committed
add embedded-hal v1.0.0-alpha.7 support
1 parent b0b0695 commit 0e9d83a

File tree

3 files changed

+17
-65
lines changed

3 files changed

+17
-65
lines changed

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,11 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
77

88
## [Unreleased]
99

10+
### Changed
11+
12+
- Use new `DelayUs` trait from `embedded-hal` `v1.0.0-alpha.7`
13+
- NOTE: this removes `DelayMs` and `DelayUs` with `u64` version
14+
1015
## [v0.8.0] - 2022-04-20
1116

1217
### Added

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 & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
1+
use core::convert::Infallible;
2+
13
use crate::register::mcycle;
2-
use embedded_hal::blocking::delay::{DelayMs, DelayUs};
4+
use embedded_hal::delay::blocking::DelayUs;
35

46
/// Machine mode cycle counter (`mcycle`) as a delay provider
57
#[derive(Copy, Clone)]
@@ -15,71 +17,16 @@ impl McycleDelay {
1517
}
1618
}
1719

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

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

0 commit comments

Comments
 (0)