You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
89 lines
1.8 KiB
89 lines
1.8 KiB
/*
|
|
* Copyright (c) 2006-2018, RT-Thread Development Team
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*
|
|
* Change Logs:
|
|
* Date Author Notes
|
|
* first version
|
|
*/
|
|
// 硬件定时器头文件
|
|
|
|
|
|
#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; // 硬件定时器
|
|
unsigned long time_ns; // 低定时时间
|
|
unsigned long time_h_ns; // 高定时时间
|
|
}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);
|
|
|
|
/*
|
|
* 定时器中断清
|
|
* @timer_info 定时器信息
|
|
*/
|
|
void timer_int_clr(timer_info_t *timer_info);
|
|
|
|
/*
|
|
* 定时器计数清
|
|
* @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);
|
|
#endif
|
|
|
|
|