ls1c_timer.h 1.8 KB
Newer Older
1 2 3 4 5 6 7 8 9
 /*
 * Copyright (c) 2006-2018, RT-Thread Development Team
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 * Change Logs:
 * Date           Author       Notes
 *                             first version
 */
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
// 硬件定时器头文件


#ifndef __OPENLOONGSON_TIMER_H
#define __OPENLOONGSON_TIMER_H


#include "ls1c_public.h"


// 硬件定时器
typedef enum
{
    TIMER_PWM0,                     // PWM0用作硬件定时器
    TIMER_PWM1,                     // PWM1用作硬件定时器
    TIMER_PWM2,                     // PWM2用作硬件定时器
    TIMER_PWM3                      // PWM3用作硬件定时器
}ls1c_timer_t;


// 硬件定时器信息
typedef struct
{
    ls1c_timer_t timer;                  // 硬件定时器
34 35
    unsigned long time_ns;          // 低定时时间
    unsigned long time_h_ns;          // 高定时时间
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
}timer_info_t;

/*
 * 初始化定时器,并开始定时
 * @timer_info 定时器和定时时间信息
 */
void timer_init(timer_info_t *timer_info);

/*
 * 判断指定定时器是否超时
 * @timer_info 定时器
 * @ret TRUE or FALSE
 */
BOOL timer_is_time_out(timer_info_t *timer_info);

/*
 * 停止定时器
 * @timer_info 定时器
 */
void timer_stop(timer_info_t *timer_info);

/*
 * 获取定时器从初始化到现在的时间(实现计时功能),单位ns
 * @timer_info 硬件定时器
 * @ret 时间,单位ns
 */
unsigned long timer_get_time_ns(timer_info_t *timer_info);

/*
 * 打印timer相关寄存器的值
 * @timer_info 硬件定时器
 */
void timer_print_regs(timer_info_t *timer_info);

70 71 72 73 74
/*
 * 定时器中断清
 * @timer_info 定时器信息
 */
void timer_int_clr(timer_info_t *timer_info);
75

76 77 78 79 80 81 82 83 84 85 86 87
/*
 * 定时器计数清
 * @timer_info 定时器信息
 */
void timer_cnt_clr(timer_info_t *timer_info);

/*
 * 初始化定时器,并开始中断定时
 * @timer_info 定时器和定时时间信息
 * @hrc 高中断 lrc 低中断 为1打开,为0关闭
*/
void timer_int_init(timer_info_t *timer_info, int hrc, int lrc);
88 89
#endif