2021-08-15 08:10:39 +10:00
|
|
|
//! Timer Peripheral
|
2021-01-26 07:42:43 +11:00
|
|
|
// See [Chapter 4 Section 6](https://datasheets.raspberrypi.org/rp2040/rp2040_datasheet.pdf) for more details
|
2021-08-15 08:10:39 +10:00
|
|
|
|
|
|
|
use crate::pac::TIMER;
|
|
|
|
|
|
|
|
/// Timer peripheral
|
|
|
|
pub struct Timer {
|
|
|
|
timer: TIMER,
|
|
|
|
}
|
|
|
|
|
|
|
|
impl Timer {
|
|
|
|
/// Create a new [`Timer`]
|
|
|
|
pub fn new(timer: TIMER) -> Self {
|
|
|
|
Self { timer }
|
|
|
|
}
|
|
|
|
|
|
|
|
/// Get the current counter value.
|
|
|
|
pub fn get_counter(&self) -> u64 {
|
|
|
|
// latched read, low before high
|
|
|
|
let lo = self.timer.timelr.read().bits();
|
|
|
|
let hi = self.timer.timehr.read().bits();
|
|
|
|
(hi as u64) << 32 | lo as u64
|
|
|
|
}
|
|
|
|
}
|