50 lines
1.1 KiB
C
50 lines
1.1 KiB
C
#ifndef HW_TIMER_H
|
|
#define HW_TIMER_H
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#define US_TO_RTC_TIMER_TICKS(t) \
|
|
((t) ? \
|
|
(((t) > 0x35A) ? \
|
|
(((t)>>2) * ((APB_CLK_FREQ>>4)/250000) + ((t)&0x3) * ((APB_CLK_FREQ>>4)/1000000)) : \
|
|
(((t) *(APB_CLK_FREQ>>4)) / 1000000)) : \
|
|
0)
|
|
|
|
#define FRC1_ENABLE_TIMER BIT7
|
|
#define FRC1_AUTO_LOAD BIT6
|
|
|
|
//TIMER PREDIVED MODE
|
|
typedef enum {
|
|
DIVDED_BY_1 = 0, //timer clock
|
|
DIVDED_BY_16 = 4, //divided by 16
|
|
DIVDED_BY_256 = 8, //divided by 256
|
|
} TIMER_PREDIVED_MODE;
|
|
|
|
typedef enum { //timer interrupt mode
|
|
TM_LEVEL_INT = 1, // level interrupt
|
|
TM_EDGE_INT = 0, //edge interrupt
|
|
} TIMER_INT_MODE;
|
|
|
|
typedef enum {
|
|
FRC1_SOURCE = 0,
|
|
NMI_SOURCE = 1,
|
|
} FRC1_TIMER_SOURCE_TYPE;
|
|
|
|
|
|
void hw_timer_arm(u32 val);
|
|
void hw_timer_set_func(void (* user_hw_timer_cb_set)(void));
|
|
void hw_timer_init(FRC1_TIMER_SOURCE_TYPE source_type, u8 req);
|
|
//void ICACHE_RAM_ATTR blink_gpio(void);
|
|
//volatile bool state;
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* HW_TIMER_H */
|
|
|