1  /*
2  * Copyright (c) 2006-2018, RT-Thread Development Team
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  *
6  * Change Logs:
7  * Date           Author       Notes
8  *                             first version
9  */
10 // Ӳ����ʱ��ͷ�ļ�
11 
12 
13 #ifndef __OPENLOONGSON_TIMER_H
14 #define __OPENLOONGSON_TIMER_H
15 
16 
17 #include "ls1c_public.h"
18 
19 
20 // Ӳ����ʱ��
21 typedef enum
22 {
23     TIMER_PWM0,                     // PWM0����Ӳ����ʱ��
24     TIMER_PWM1,                     // PWM1����Ӳ����ʱ��
25     TIMER_PWM2,                     // PWM2����Ӳ����ʱ��
26     TIMER_PWM3                      // PWM3����Ӳ����ʱ��
27 }ls1c_timer_t;
28 
29 
30 // Ӳ����ʱ����Ϣ
31 typedef struct
32 {
33     ls1c_timer_t timer;                  // Ӳ����ʱ��
34     unsigned long time_ns;          // �Ͷ�ʱʱ��
35     unsigned long time_h_ns;          // �߶�ʱʱ��
36 }timer_info_t;
37 
38 /*
39  * ��ʼ����ʱ��������ʼ��ʱ
40  * @timer_info ��ʱ���Ͷ�ʱʱ����Ϣ
41  */
42 void timer_init(timer_info_t *timer_info);
43 
44 /*
45  * �ж�ָ����ʱ���Ƿ�ʱ
46  * @timer_info ��ʱ��
47  * @ret TRUE or FALSE
48  */
49 BOOL timer_is_time_out(timer_info_t *timer_info);
50 
51 /*
52  * ֹͣ��ʱ��
53  * @timer_info ��ʱ��
54  */
55 void timer_stop(timer_info_t *timer_info);
56 
57 /*
58  * ��ȡ��ʱ���ӳ�ʼ�������ڵ�ʱ��(ʵ�ּ�ʱ����)����λns
59  * @timer_info Ӳ����ʱ��
60  * @ret ʱ�䣬��λns
61  */
62 unsigned long timer_get_time_ns(timer_info_t *timer_info);
63 
64 /*
65  * ��ӡtimer��ؼĴ�����ֵ
66  * @timer_info Ӳ����ʱ��
67  */
68 void timer_print_regs(timer_info_t *timer_info);
69 
70 /*
71  * ��ʱ���ж���
72  * @timer_info ��ʱ����Ϣ
73  */
74 void timer_int_clr(timer_info_t *timer_info);
75 
76 /*
77  * ��ʱ��������
78  * @timer_info ��ʱ����Ϣ
79  */
80 void timer_cnt_clr(timer_info_t *timer_info);
81 
82 /*
83  * ��ʼ����ʱ��������ʼ�ж϶�ʱ
84  * @timer_info ��ʱ���Ͷ�ʱʱ����Ϣ
85  * @hrc ���ж� lrc ���ж� Ϊ1����Ϊ0�ر�
86 */
87 void timer_int_init(timer_info_t *timer_info, int hrc, int lrc);
88 #endif
89 
90