Timer

更新时间:2022-11-24 09:20:23下载pdf

API 列表

函数名称 功能描述
hardware_timer_enable 启动定时器
timer_hardware_start_with_id 创建定时器
timer_hardware_stop_100us 取消定时器
dev_current_millisecond_ticks_get 获取当前系统时钟ticks(ms)

API 说明

hardware_timer_enable

函数原型

void hardware_timer_enable(void);

timer_hardware_start_with_id

函数原型

void timer_hardware_start_with_id(TIMER_ID_T i, uint32_t t, TIMER_RELOAD_FLAG_T flag, hardware_timer_func_t func);

参数说明

参数名称 参数类型 说明
i TIMER_ID_T TIMER_ID_T 枚举中的值
flag TIMER_RELOAD_FLAG_T TIMER_RELOAD_FLAG_T 枚举中的值,只是否重载定时器
func hardware_timer_func_t 回调函数

timer_hardware_stop_100us

函数原型

void timer_hardware_stop_100us(TIMER_ID_T id);

参数说明

参数名称 参数类型 说明
id TIMER_ID_T TIMER_ID_T 枚举中的值

dev_current_millisecond_ticks_gets

函数原型

uint32_t  dev_current_millisecond_ticks_get(void);

参数说明

参数名称 参数类型 说明
id TIMER_ID_T TIMER_ID_T 枚举中的值

硬件定时器使用

本节介绍 Systick Timer 的使用方法, hal_systick_timer.h 有详细的接口定义,下面是 Systick Timer 的使用例子:

void __hardware_timer_func_t(TIMER_ID_T timer_id)
{
    static uint8_t test_times = 100;
    
    switch(timer_id) {
        case V_TIMER0: { ///< 1000ms 调用一次, 周期进来
            if((--test_times) == 0) {
                timer_hardware_stop_100us(timer_id); ///< 执行100次后关闭
            }
            if(timer_hardware_is_active(timer_id)) {
                //TODO: 定时有效
            }
            else {
                //TODO: 定时器无效
            }
            
            //TODO:
            break;
        }
        
        case V_TIMER1: { ///< 500ms 调用一次,一次性
            break;
        }
    }
}
 
static void systick_timer_demo()
{
    hardware_timer_enable();
    
    timer_hardware_start_with_id(V_TIMER0, 10000, HARDWARE_TIMER_AUTO_RELOAD_ENABLE, __hardware_timer_func_t);
    timer_hardware_start_with_id(V_TIMER1, 5000, HARDWARE_TIMER_AUTO_RELOAD_DISABLE, __hardware_timer_func_t);
}