PASII/CandeII_1.4/Lib/softtimer.h

138 lines
3.8 KiB
C
Raw Normal View History

#ifndef _TIMER_HANDLER_H_
#define _TIMER_HANDLER_H_
#include "config.h"
#define TIMER_NUM 5
typedef void (* TIMER_IRQ_CALLBACK_TYPE)(void);
typedef enum {
TIMER_0 = 0,
TIMER_1,
TIMER_2,
TIMER_3,
TIMER_4,
} TIMER_ID;
struct SYD_HISTORY_SETTING {
uint32_t SYD_timeSeconds;
};
extern struct SYD_HISTORY_SETTING syd_history_setting_str;
#define EVT_ENABLE_MODE ((uint8_t) 0x01)
#define EVT_DISABLE_MODE ((uint8_t) 0x00)
#define EVT_MAX_NUM ((uint8_t) 0x1F)//<2F><>ʱ<EFBFBD><CAB1><EFBFBD>¼<EFBFBD><C2BC><EFBFBD>
#define RTCEVT_ENABLE_MODE ((uint8_t) 0x01)
#define RTCEVT_DISABLE_MODE ((uint8_t) 0x00)
#define RTCEVT_MAX_NUM ((uint8_t) 0x1F)//<2F><>ʱ<EFBFBD><CAB1><EFBFBD>¼<EFBFBD><C2BC><EFBFBD>
//0x80000000 <20><>Ϊϵͳ<CFB5><CDB3>ʱ<EFBFBD>¼<EFBFBD>ʹ<EFBFBD><CAB9>
struct Array_Node
{
uint32_t evt_id;
};
struct SYD_sysTimer {
struct Array_Node Evt_Array_Node;
void (*Timer_Evt_Handle)(void);//void<69>Ǻ<EFBFBD><C7BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD>ط<EFBFBD><D8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD>*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint32_t Evt_Array_Iterval;
uint8_t Evt_Array_On_Off_Mode;
uint32_t Evt_Array_Trigger_Loop;
uint32_t Evt_Loop_Start_Point;
};
extern void SYD_Timer_Init(uint8_t event_num, struct SYD_sysTimer p_sysTimer[]);
extern void Timer_Evt_Init(void);
extern void Timer_Evt_Start(uint32_t evt_id_para);
extern void Timer_Evt_Stop(uint32_t evt_id_para);
extern void Timer_Evt_Clr(uint32_t evt_id_para);
extern uint8_t Timer_Get_State(uint32_t evt_id_para);
extern void Timer_Evt_Creat(uint32_t evt_id_para,uint32_t evt_interval_para,void *evt_handle_para,uint8_t evt_mode_para);
typedef enum {
RTC_INT_CMP0 = 1,
RTC_INT_CMP1 = 2,
RTC_INT_TICK = 4,
RTC_INT_SECOND = 8,
RTC_INT_ALL = 0xF,
RTC_INT_NUM = 4,
} RTC_INT_TYPE;
typedef void (* RTC_IRQ_CALLBACK) (RTC_INT_TYPE type);
#pragma pack(push, 1)
typedef union {
struct {
uint8_t second;
uint8_t minute;
uint8_t hour;
uint8_t day;
} decimal_format;
uint8_t u8[4];
uint32_t u32;
} RTC_TIME_TYPE;
#pragma pack(pop)
struct RTC_Array_Node
{
uint32_t RTCEVT_id;
};
struct SYD_sysRtc {
struct RTC_Array_Node RTCEVT_Array_Node;
void (*RTC_Evt_Handle)(void);//void<69>Ǻ<EFBFBD><C7BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD>ط<EFBFBD><D8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD>*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint32_t RTCEVT_Array_Iterval;
uint8_t RTCEVT_Array_On_Off_Mode;
uint32_t RTCEVT_Array_Trigger_Loop;
uint32_t RTCEVT_Loop_Start_Point;
};
extern uint32_t RTC_RUN(void);
extern void RTC_SET(uint32_t Iterval);
extern void SYD_RTC_Init(uint8_t event_num, struct SYD_sysRtc p_sysTimer[]);
extern void RTC_EVT_Init(void);
extern void RTC_EVT_Start(uint32_t RTCEVT_id_para);
extern void RTC_EVT_Stop(uint32_t RTCEVT_id_para);
extern void RTC_EVT_Clr(uint32_t RTCEVT_id_para);
extern uint8_t RTC_Get_State(uint32_t RTCEVT_id_para);
extern void RTC_EVT_Creat(uint32_t RTCEVT_id_para,uint32_t RTCEVT_interval_para,void *RTCEVT_handle_para,uint8_t RTCEVT_mode_para);
extern void rtc_set_interrupt_callback(RTC_IRQ_CALLBACK cb);
extern void rtc_int_clear(RTC_INT_TYPE type);
extern void rtc_int_enable(RTC_INT_TYPE type);
extern void rtc_int_disable(RTC_INT_TYPE type);
extern void rtc_start(void);
extern void rtc_stop(void);
extern void rtc_clear(void);
extern void rtc_set_prescaler(uint32_t tick, bool adjust_seconds_bit);
extern void rtc_set_seconds_bit(uint32_t order);
extern RTC_TIME_TYPE rtc_get_compare(int id);
extern void rtc_set_compare(int id, RTC_TIME_TYPE *time);
extern RTC_TIME_TYPE rtc_get_calendar(void);
extern void rtc_set_calendar(RTC_TIME_TYPE *time);
extern bool rtc_status(void);
extern uint32_t rtc_interrupt_status(void);
extern void rtc_init(uint32_t tick,RTC_IRQ_CALLBACK cb);
extern void RTC_EVT_whole_minute_setid(uint32_t RTCEVT_id_para);
extern void RTC_EVT_whole_minute_adj(void);
extern struct SYD_sysTimer syd_sysTimer[EVT_NUM];
extern void Timer_Evt_List(void);
extern struct SYD_sysRtc syd_rtc[RTCEVT_NUM];
extern void RTC_Evt_List(void);
extern uint32_t TIMER_EVT;
extern uint32_t RTC_EVT;
#endif