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 rp2040_pac::timer::RegisterBlock}
pub const PTR: *const RegisterBlock = {0x40054000 as *const rp2040_pac::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() -> TIMER
pub unsafe fn steal() -> TIMER
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) -> &Reg<TIMEHW_SPEC>
pub fn timehw(&self) -> &Reg<TIMEHW_SPEC>
0x00 - Write to bits 63:32 of time
always write timelw before timehw
Sourcepub fn timelw(&self) -> &Reg<TIMELW_SPEC>
pub fn timelw(&self) -> &Reg<TIMELW_SPEC>
0x04 - Write to bits 31:0 of time
writes do not get copied to time until timehw is written
Sourcepub fn timehr(&self) -> &Reg<TIMEHR_SPEC>
pub fn timehr(&self) -> &Reg<TIMEHR_SPEC>
0x08 - Read from bits 63:32 of time
always read timelr before timehr
Sourcepub fn timelr(&self) -> &Reg<TIMELR_SPEC>
pub fn timelr(&self) -> &Reg<TIMELR_SPEC>
0x0c - Read from bits 31:0 of time
Sourcepub fn alarm0(&self) -> &Reg<ALARM0_SPEC>
pub fn alarm0(&self) -> &Reg<ALARM0_SPEC>
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) -> &Reg<ALARM1_SPEC>
pub fn alarm1(&self) -> &Reg<ALARM1_SPEC>
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) -> &Reg<ALARM2_SPEC>
pub fn alarm2(&self) -> &Reg<ALARM2_SPEC>
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) -> &Reg<ALARM3_SPEC>
pub fn alarm3(&self) -> &Reg<ALARM3_SPEC>
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) -> &Reg<ARMED_SPEC>
pub fn armed(&self) -> &Reg<ARMED_SPEC>
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.
Sourcepub fn timerawh(&self) -> &Reg<TIMERAWH_SPEC>
pub fn timerawh(&self) -> &Reg<TIMERAWH_SPEC>
0x24 - Raw read from bits 63:32 of time (no side effects)
Sourcepub fn timerawl(&self) -> &Reg<TIMERAWL_SPEC>
pub fn timerawl(&self) -> &Reg<TIMERAWL_SPEC>
0x28 - Raw read from bits 31:0 of time (no side effects)
Sourcepub fn dbgpause(&self) -> &Reg<DBGPAUSE_SPEC>
pub fn dbgpause(&self) -> &Reg<DBGPAUSE_SPEC>
0x2c - Set bits high to enable pause when the corresponding debug ports are active
Sourcepub fn pause(&self) -> &Reg<PAUSE_SPEC>
pub fn pause(&self) -> &Reg<PAUSE_SPEC>
0x30 - Set high to pause the timer