分析如何编写一个timer程序(以blt_soft_timer为例)

本文详细介绍了如何编写一个基于系统滴答时钟的timer程序,从定义、时钟来源分析到整体设计思路,包括初始化系统时钟、定义超时服务函数类型、timer结构体、增删timer操作以及超时查询。通过代码例程展示了timer排序、增加和删除过程,并对比了与Nordic app timer的差异,强调理解设计思路的重要性。
摘要由CSDN通过智能技术生成

一.timer的定义

timer的功能就是定时,在某一时刻启动一个 timer并设定超时时间,超时时间一到,timer就会回调timeout handler,然后执行你需要的工作。

二.timer的时钟来源

时钟来源有两种来源
a.硬件定时器:优点是时间精确,缺点是功耗高。
b.系统滴答时钟:一般为1ms进一次中断,所以定时时间必须大于1ms,优点是功耗低。timer采用的系统的滴答时钟。
Nordic的app timer使用的RTC1也是来自系统的滴答时钟。

三.整体的设计思路

3.1. 初始化系统时钟
配置系统时钟,在中断中配置全局变量,用于时间的比较,具体参考https://blog.csdn.net/qq_36753518/article/details/104657501。

3.2. 定义超时服务函数类型

typedef int (*blt_timer_callback_t)(void);

返回值处理
a、返回值小于0,该任务执行完后会被自动删除,实现单次定时任务
b、返回值等于0,使用之前的定时时间来定时。
c、返回值大于0,使用该返回值作为新的定时周期,实现可变时长的定时任务

3.3. timer的结构体

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值