#ifndef __TIMER_H__ # define __TIMER_H__ 1 #include #include #define __TIMER_NB 3 #define __TIMER_SPEED_4 0 #define __TIMER_SPEED_16 1 #define __TIMER_SPEED_64 2 #define __TIMER_SPEED_256 3 #define __TIMER_SPEED_1024 4 typedef struct timer_s { uint32_t TCOR; uint32_t TCNT; union { uint16_t WORD; struct { unsigned : 7; unsigned UNF : 1; unsigned : 2; unsigned UNIE : 1; unsigned : 2; unsigned TPSC : 3; } __attribute__((packed)); } TCR; } __attribute((packed, aligned(4))) timer_t; struct tmu_s { uint8_t TSTR; uint8_t gaps[3]; volatile timer_t TIMER[__TIMER_NB]; } __attribute((packed)); #define TMU (*(volatile struct tmu_s*)0xa4490004) int timer_start(int id, uint32_t delay, void (*f)(void)); uint32_t timer_get_time(int id); int timer_pause(int id); int timer_play(int id); int timer_quit(int id); #endif