1 /* 2 * Copyright (C) 2015-2020 Alibaba Group Holding Limited 3 */ 4 #ifndef __HAL_TIMER_RAW_H__ 5 #define __HAL_TIMER_RAW_H__ 6 7 #ifdef __cplusplus 8 extern "C" { 9 #endif 10 11 #ifndef IGNORE_HAL_TIMER_RAW_API_CHECK 12 #if !(defined(ROM_BUILD) || defined(SIMU)) 13 #error "Raw timer API can only be used in rom or simulation environment!" 14 #endif 15 #endif 16 17 #include "hal_timer.h" 18 19 #define HAL_TIMER_LOAD_DELTA 1 20 21 enum HAL_TIMER_TYPE_T { 22 HAL_TIMER_TYPE_FREERUNNING = 0, 23 HAL_TIMER_TYPE_ONESHOT, 24 HAL_TIMER_TYPE_PERIODIC, 25 HAL_TIMER_TYPE_QTY 26 }; 27 28 typedef void (*HAL_TIMER_IRQ_HANDLER_T)(uint32_t elapsed); 29 30 void hal_timer_setup(enum HAL_TIMER_TYPE_T type, HAL_TIMER_IRQ_HANDLER_T handler); 31 32 #if 1 // conflict with alios things, need rename 33 void hal_timer_start_nickname(uint32_t load); 34 void hal_timer_stop_nickname(void); 35 #define hal_timer_start hal_timer_start_nickname 36 #define hal_timer_stop hal_timer_stop_nickname 37 #else 38 void hal_timer_start(uint32_t load); 39 void hal_timer_stop(void); 40 #endif 41 42 void hal_timer_continue(void); 43 44 int hal_timer_is_enabled(void); 45 46 void hal_timer_reload(uint32_t load); 47 48 uint32_t hal_timer_get(void); 49 50 uint32_t hal_timer_get_overrun_time(void); 51 52 int hal_timer_irq_active(void); 53 54 int hal_timer_irq_pending(void); 55 56 uint32_t hal_timer_get_elapsed_time(void); 57 58 #ifdef __cplusplus 59 } 60 #endif 61 62 #endif 63 64