pub struct TIMER { /* private fields */ }
Expand description
Controls time and alarms
time is a 64 bit value indicating the time in usec since power-on
timeh is the top 32 bits of time & timel is the bottom 32 bits
to change time write to timelw before timehw
to read time read from timelr before timehr
An alarm is set by setting alarm_enable and writing to the corresponding alarm register
When an alarm is pending, the corresponding alarm_running signal will be high
An alarm can be cancelled before it has finished by clearing the alarm_enable
When an alarm fires, the corresponding alarm_irq is set and alarm_running is cleared
To clear the interrupt write a 1 to the corresponding alarm_irq
Implementations§
Source§impl TIMER
impl TIMER
Sourcepub const PTR: *const RegisterBlock = {0x40054000 as *const timer::RegisterBlock}
pub const PTR: *const RegisterBlock = {0x40054000 as *const timer::RegisterBlock}
Pointer to the register block
Sourcepub const fn ptr() -> *const RegisterBlock
pub const fn ptr() -> *const RegisterBlock
Return the pointer to the register block
Sourcepub unsafe fn steal() -> Self
pub unsafe fn steal() -> Self
Steal an instance of this peripheral
§Safety
Ensure that the new instance of the peripheral cannot be used in a way that may race with any existing instances, for example by only accessing read-only or write-only registers, or by consuming the original peripheral and using critical sections to coordinate access between multiple new instances.
Additionally, other software such as HALs may rely on only one peripheral instance existing to ensure memory safety; ensure no stolen instances are passed to such software.
Methods from Deref<Target = RegisterBlock>§
Sourcepub fn timehw(&self) -> &TIMEHW
pub fn timehw(&self) -> &TIMEHW
0x00 - Write to bits 63:32 of time
always write timelw before timehw
Sourcepub fn timelw(&self) -> &TIMELW
pub fn timelw(&self) -> &TIMELW
0x04 - Write to bits 31:0 of time
writes do not get copied to time until timehw is written
Sourcepub fn timehr(&self) -> &TIMEHR
pub fn timehr(&self) -> &TIMEHR
0x08 - Read from bits 63:32 of time
always read timelr before timehr
Sourcepub fn alarm0(&self) -> &ALARM0
pub fn alarm0(&self) -> &ALARM0
0x10 - Arm alarm 0, and configure the time it will fire.
Once armed, the alarm fires when TIMER_ALARM0 == TIMELR.
The alarm will disarm itself once it fires, and can
be disarmed early using the ARMED status register.
Sourcepub fn alarm1(&self) -> &ALARM1
pub fn alarm1(&self) -> &ALARM1
0x14 - Arm alarm 1, and configure the time it will fire.
Once armed, the alarm fires when TIMER_ALARM1 == TIMELR.
The alarm will disarm itself once it fires, and can
be disarmed early using the ARMED status register.
Sourcepub fn alarm2(&self) -> &ALARM2
pub fn alarm2(&self) -> &ALARM2
0x18 - Arm alarm 2, and configure the time it will fire.
Once armed, the alarm fires when TIMER_ALARM2 == TIMELR.
The alarm will disarm itself once it fires, and can
be disarmed early using the ARMED status register.
Sourcepub fn alarm3(&self) -> &ALARM3
pub fn alarm3(&self) -> &ALARM3
0x1c - Arm alarm 3, and configure the time it will fire.
Once armed, the alarm fires when TIMER_ALARM3 == TIMELR.
The alarm will disarm itself once it fires, and can
be disarmed early using the ARMED status register.
Sourcepub fn armed(&self) -> &ARMED
pub fn armed(&self) -> &ARMED
0x20 - Indicates the armed/disarmed status of each alarm.
A write to the corresponding ALARMx register arms the alarm.
Alarms automatically disarm upon firing, but writing ones here
will disarm immediately without waiting to fire.