linux ktime_set

/*
 * timer:
 *  hrtimer指针,
 *
 * clock_id:
 *  CLOCK_REALTIME //实时时间,如果系统时间变了,定时器也会变
 *  CLOCK_MONOTONIC //递增时间,不受系统影响
 *
 * mode:
 *  HRTIMER_MODE_ABS = 0x0, 绝对模式
 *  HRTIMER_MODE_REL = 0x1,          相对模式
 *  HRTIMER_MODE_PINNED = 0x02,      和CPU绑定
 *  HRTIMER_MODE_ABS_PINNED = 0x02,  第一、三种的结合
 *  HRTIMER_MODE_REL_PINNED = 0x03,  第二、三种的结合
 */

void hrtimer_init(struct hrtimer *timer, clockid_t clock_id, enum hrtimer_mode mode);

/*
 * timer:
 *  hrtimer指针
 *
 * tim:
 *  时间,可以使用ktime_set()函数设置时间,
 *
 * mode:
 *  和初始化的mode参数一致
 */
hrtimer_start(struct hrtimer *timer, ktime_t tim, const enum hrtimer_mode mode);


/*
 * 单位为秒和纳秒组合
 *
 * secs:
 *  秒
 *
 * nsecs:
 *  纳秒
 */
ktime_t ktime_set(const long secs, const unsigned long nsecs);


# 项目中用来拉高一个引脚

static struct hrtimer g_hrtimer_io_trigger = {0};

static ktime_t get_kernel_timestamp(void)
{
    ktime_t ktime = ktime_get();        // 获取当前时间
    u64 timestamp = ktime_to_ns(ktime); // 将ktime转换为纳秒时间戳
 
    printk(KERN_INFO "Current timestamp: %llu nanoseconds\n", timestamp);

    return ktime;
}

static enum hrtimer_restart timer_isr_io_trigger(struct hrtimer *timer)
{
    rtk_trigger(RTK_TRIGGER_ON);
    return HRTIMER_NORESTART;
}

/* hrt */
hrtimer_init(&g_hrtimer_io_trigger, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
g_hrtimer_io_trigger.function = timer_isr_io_trigger;
hrtimer_cancel(&g_hrtimer_io_trigger);

hrtimer_start(&g_hrtimer_io_trigger, ktime_set(0, timerdelayus*1000), HRTIMER_MODE_REL);

  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值