parent
c77b0614d0
commit
db8a5912b7
@ -57,6 +57,10 @@ harness = false
|
|||||||
name = "get_time"
|
name = "get_time"
|
||||||
harness = false
|
harness = false
|
||||||
|
|
||||||
|
[[test]]
|
||||||
|
name = "delay"
|
||||||
|
harness = false
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
cfg-if = "1.0.0"
|
cfg-if = "1.0.0"
|
||||||
critical-section = "1.1.2"
|
critical-section = "1.1.2"
|
||||||
|
|||||||
80
hil-test/tests/delay.rs
Normal file
80
hil-test/tests/delay.rs
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
//! Delay Test
|
||||||
|
|
||||||
|
#![no_std]
|
||||||
|
#![no_main]
|
||||||
|
|
||||||
|
use defmt_rtt as _;
|
||||||
|
use embedded_hal::delay::DelayNs;
|
||||||
|
use esp_backtrace as _;
|
||||||
|
use esp_hal::{clock::ClockControl, delay::Delay, peripherals::Peripherals, system::SystemControl};
|
||||||
|
|
||||||
|
struct Context {
|
||||||
|
delay: Delay,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Context {
|
||||||
|
pub fn init() -> Self {
|
||||||
|
let peripherals = Peripherals::take();
|
||||||
|
let system = SystemControl::new(peripherals.SYSTEM);
|
||||||
|
let clocks = ClockControl::boot_defaults(system.clock_control).freeze();
|
||||||
|
|
||||||
|
let delay = Delay::new(&clocks);
|
||||||
|
|
||||||
|
Context { delay }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
#[embedded_test::tests]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[init]
|
||||||
|
fn init() -> Context {
|
||||||
|
Context::init()
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
#[timeout(1)]
|
||||||
|
fn delay_ns(mut ctx: Context) {
|
||||||
|
let t1 = esp_hal::time::current_time();
|
||||||
|
ctx.delay.delay_ns(600_000_000);
|
||||||
|
let t2 = esp_hal::time::current_time();
|
||||||
|
|
||||||
|
assert!(t2 > t1);
|
||||||
|
assert!((t2 - t1).to_nanos() >= 600_000_000u64);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
#[timeout(1)]
|
||||||
|
fn delay_700millis(ctx: Context) {
|
||||||
|
let t1 = esp_hal::time::current_time();
|
||||||
|
ctx.delay.delay_millis(700);
|
||||||
|
let t2 = esp_hal::time::current_time();
|
||||||
|
|
||||||
|
assert!(t2 > t1);
|
||||||
|
assert!((t2 - t1).to_millis() >= 700u64);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
#[timeout(2)]
|
||||||
|
fn delay_1_500_000us(mut ctx: Context) {
|
||||||
|
let t1 = esp_hal::time::current_time();
|
||||||
|
ctx.delay.delay_us(1_500_000);
|
||||||
|
let t2 = esp_hal::time::current_time();
|
||||||
|
|
||||||
|
assert!(t2 > t1);
|
||||||
|
assert!((t2 - t1).to_micros() >= 1_500_000u64);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
#[timeout(5)]
|
||||||
|
fn delay_3_000ms(mut ctx: Context) {
|
||||||
|
let t1 = esp_hal::time::current_time();
|
||||||
|
ctx.delay.delay_ms(3000);
|
||||||
|
let t2 = esp_hal::time::current_time();
|
||||||
|
|
||||||
|
assert!(t2 > t1);
|
||||||
|
assert!((t2 - t1).to_millis() >= 3000u64);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -19,8 +19,8 @@ use esp_hal::{
|
|||||||
gpio::{GpioPin, Input, Io, Output, OutputPin, PullDown, PushPull, Unknown},
|
gpio::{GpioPin, Input, Io, Output, OutputPin, PullDown, PushPull, Unknown},
|
||||||
macros::handler,
|
macros::handler,
|
||||||
peripherals::Peripherals,
|
peripherals::Peripherals,
|
||||||
timer::TimerGroup,
|
|
||||||
system::SystemControl,
|
system::SystemControl,
|
||||||
|
timer::TimerGroup,
|
||||||
};
|
};
|
||||||
|
|
||||||
static COUNTER: Mutex<RefCell<u32>> = Mutex::new(RefCell::new(0));
|
static COUNTER: Mutex<RefCell<u32>> = Mutex::new(RefCell::new(0));
|
||||||
|
|||||||
@ -15,9 +15,9 @@ use esp_hal::{
|
|||||||
clock::ClockControl,
|
clock::ClockControl,
|
||||||
gpio::Io,
|
gpio::Io,
|
||||||
peripherals::{Peripherals, UART0},
|
peripherals::{Peripherals, UART0},
|
||||||
|
system::SystemControl,
|
||||||
uart::{config::Config, TxRxPins, Uart, UartRx, UartTx},
|
uart::{config::Config, TxRxPins, Uart, UartRx, UartTx},
|
||||||
Async,
|
Async,
|
||||||
system::SystemControl,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct Context {
|
struct Context {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user