arm: async echo app
This commit is contained in:
63
arm/timer.h
Normal file
63
arm/timer.h
Normal file
@@ -0,0 +1,63 @@
|
||||
#pragma once
|
||||
|
||||
struct TimerControl {
|
||||
union {
|
||||
struct {
|
||||
uint32_t MDT0 : 1;
|
||||
uint32_t UDT0 : 1;
|
||||
uint32_t GENT0 : 1;
|
||||
uint32_t CAPT0 : 1;
|
||||
uint32_t ARHT0 : 1;
|
||||
uint32_t LOAD0 : 1;
|
||||
uint32_t ENIT0 : 1;
|
||||
uint32_t ENT0 : 1;
|
||||
uint32_t T0INT : 1;
|
||||
uint32_t PWMA0 : 1;
|
||||
uint32_t ENALL : 1;
|
||||
uint32_t CASC : 1;
|
||||
|
||||
uint32_t reserved : 20;
|
||||
};
|
||||
uint32_t raw;
|
||||
};
|
||||
};
|
||||
|
||||
struct Timer {
|
||||
volatile TimerControl TCSR0;
|
||||
volatile uint32_t TLR0;
|
||||
volatile uint32_t TCR0;
|
||||
|
||||
uint32_t _reserved;
|
||||
|
||||
volatile TimerControl TCSR1;
|
||||
volatile uint32_t TLR1;
|
||||
volatile uint32_t TCR1;
|
||||
|
||||
void EnableT1() {
|
||||
TCSR1.ARHT0 = 1;
|
||||
TCSR1.ENT0 = 1;
|
||||
}
|
||||
|
||||
uint32_t GetT1Ticks() {
|
||||
return TCR1;
|
||||
}
|
||||
|
||||
void SetupAsWdt(uint32_t timeout_ticks) {
|
||||
TLR0 = timeout_ticks;
|
||||
TCSR0.LOAD0 = 1; // reset counter
|
||||
TCSR0.UDT0 = 1; // count backwards from the load value
|
||||
TCSR0.ENIT0 = 1; // enable interrupt
|
||||
|
||||
TCSR0.LOAD0 = 0; // allow counter to run
|
||||
TCSR0.ENT0 = 1; // enable timer
|
||||
}
|
||||
|
||||
void Pet() {
|
||||
TCSR0.ENT0 = 0;
|
||||
TCSR0.LOAD0 = 1;
|
||||
TCSR0.LOAD0 = 0;
|
||||
TCSR0.ENT0 = 1;
|
||||
}
|
||||
};
|
||||
|
||||
#define timer0 ((Timer*) 0x40002000)
|
||||
Reference in New Issue
Block a user