RT-Thread入门(三) 定时器

本文详细介绍了RT-Thread操作系统中的定时器,包括HARD/SOFT_TIMER的区别,如何使用rt_timer_create、rt_timer_start、rt_timer_stop和rt_timer_control等函数进行操作。此外,通过编程实践展示了如何创建周期性软定时器timer1和单次硬定时器timer2,以及定时器1在执行5次后如何改变定时长度。在实践中遇到的疑问和问题也进行了探讨。
摘要由CSDN通过智能技术生成

RT-Thread入门之定时器

        上一篇文章我们学习了RT-Thread建立线程相关函数,这次我们将学习系统中一个很重要的功能:定时器。系统提供的软件定时器可以为我们提供无限个定时器使用,但定时时间必须是系统节拍的整数倍。RT-Thread 中,时钟节拍的长度可以根据 RT_TICK_PER_SECOND 的定义来调整,我们使用的工程设置的为100,这里我们就使用他的默认设置,所以我们可以设置的定时时间只能为10ms的整数倍。

一、HARD/SOFT_TIMER区别

        HARD_TIMER 模式的定时器超时函数在中断上下文环境中执行,在中断上下文环境中执行时,对于超时函数的要求与中断服务例程的要求相同:执行时间应该尽量短,
执行时不应导致当前上下文挂起、等待。
        SOFT_TIMER 模 式 可 配 置, 通 过 宏 定 义RT_USING_TIMER_SOFT 来 决 定 是 否 启 用 该 模式,该宏定义在rtconfigs.h中定义,默认为不使用。该模式被启用后,系统会在初始化时创建一个 timer 线程,然后SOFT_TIMER 模式的定时器超时函数在都会在 timer 线程的上下文环境中执行。
       总结起来就是:hard_timer中断服务程序不能被打断,soft_timer中断服务程序和线程一样参与任务的调度。
       除此之外,定时器也有两种创建方式:动态方式和静态方式。额我认为大多数时间使用动态方式就可以了,他们的区别和进程类似,代码空间的分配方式不同,这篇文章主要使用动态方式进行实验。

二、相关函数介绍

1.rt_timer_create 通过这个函数可以设置定时器的定时时间,超时函数入口和定时器模式等一些参数。

rt_timer_t rt_timer_create(const char* name,
							void (*timeout)(void* parameter),
							void* parameter,
							rt_tick_t time,
							rt_uint8_t flag);

2.rt_timer_start 设置完成定时器的参数之后定时器不会立即启动,只有调用rt_timer_start函数之后定时器才开始计时。

rt_err_t rt_timer_start(rt_timer_t timer);

3.rt_timer_stop 启动定时器以后,若想使它停止,可以使用下面的函数接口:

rt_err_t rt_timer_stop(rt_timer_t timer
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值