大概rtthread觉得直接等待的阻塞延时效率不够高,逻辑不够优美;所以它给每个thread都配置了一个rt_timer类型的thread_timer定时器; 所有定时器由定时器链表统一管理,通过对thread_timer定时器统一管理多个线程的延时,效率高,逻辑优美; 2.1 定时器结构体 //rtdef.h #defineRT_TIMER_FLAG_DEACTI...
3.3 删除定时器rt_timer_delete 删除由rt_timer_create创建的定时器。 /* src/timer.c */ rt_err_t rt_timer_delete(rt_timer_t timer) { register rt_base_t level; /* timer check */ RT_ASSERT(timer != RT_NULL); RT_ASSERT(rt_object_get_type(&timer->parent) == RT_Object_Class_Time...
在RT-Thread 操作系统中,定时器控制块由结构体 struct rt_timer 定义并形成定时器内核对象,再链接到内核对象容器中进行管理。它是操作系统用于管理定时器的一个数据结构,会存储定时器的一些信息,例如初始节拍数,超时时的节拍数,也包含定时器与定时器之间连接用的链表结构,超时回调函数等。 struct rt_timer { stru...
{RT_Object_Class_Device, _OBJ_CONTAINER_LIST_INIT(RT_Object_Info_Device), sizeof(struct rt_device)}, #endif /* initialize object container - timer */ {RT_Object_Class_Timer, _OBJ_CONTAINER_LIST_INIT(RT_Object_Info_Timer), sizeof(struct rt_timer)}, #ifdef RT_USING_MODULE /* initiali...
先来看看第一个登录后复制rt_system_timer_init: 接下来看看第二个函数登录后复制rt_system_timer_thread_init: 我们继续进入登录后复制timer线程的入口函数,来看看登录后复制timer线程具体做了什么事情,这里我们就通过放源码,看注释来分析一下: 登录后复制/* system timer thread entry */ ...
rt-thread 是通过 I/O 设备模型来管理 soc 上的外设,从上到下分为三层:I/O 设备管理层、设备驱动框架层和设备驱动层。stm32 的 HAL 库就属于设备驱动层,比如熟知的 i2c、spi 的外设驱动在用 cubemx 生成代码的时候就已经准备好。中科蓝讯的 ab32vg1 的设备驱动已经在sdk 中由蓝讯的工程师实现。而在设备...
*/#include<rtthread.h>#defineDBG_TAG"main"#defineDBG_LVLDBG_LOG#include<rtdbg.h>/*定时器结构体*/structrt_timertm1;rt_timer_t tm2;/*回调函数*/voidtim1_callback(void*parameter){inti=0;i++;rt_kprintf("tim1 callback running...!\n");if(i<10){rt_timer_control(&tm1,RT_TIMER_FLA...
rtthread定时器的定时时间以时钟一个节拍的时间为单位,创建并激活的定时器会以超时时间的大小排序,链接在rt_timer_list上,在每次硬件中断执行rt_tick_increase调用 rt_timer_check时判断是否产生超时事件。 1.2.2 rtthread定时器模式 HARD_TIMER :定时器超时函数在硬件systick中断的上下文进行,需要注意执行时间尽量短...
先来看看第一个rt_system_timer_init: 接下来看看第二个函数rt_system_timer_thread_init: 我们继续进入timer线程的入口函数,来看看timer线程具体做了什么事情,这里我们就通过放源码,看注释来分析一下: 代码语言:javascript 复制 <font color="#0033FF"><font color="#0033FF"><font color="#0033FF"><codecl...
另外,根据超时函数执行时所处的上下文环境,RT-Thread 的定时器可以分为HARD_TIMER模式(硬件定时器模式)与SOFT_TIMER模式(软件定时器模式),如下图。 1)HARD_TIMER 模式:中断上下文 HARD_TIMER 模式的定时器超时函数在中断上下文环境中执行,可以在初始化 / 创建定时器时使用参数RT_TIMER_FLAG_HARD_TIMER来指定。