在RT-Thread 操作系统中,定时器控制块由结构体 struct rt_timer 定义并形成定时器内核对象,再链接到内核对象容器中进行管理。它是操作系统用于管理定时器的一个数据结构,会存储定时器的一些信息,例如初始节拍数,超时时的节拍数,也包含定时器与定时器之间连接用的链表结构,超时回调函数等。 struct rt_timer { stru...
大概rtthread觉得直接等待的阻塞延时效率不够高,逻辑不够优美;所以它给每个thread都配置了一个rt_timer类型的thread_timer定时器; 所有定时器由定时器链表统一管理,通过对thread_timer定时器统一管理多个线程的延时,效率高,逻辑优美; 2.1 定时器结构体 //rtdef.h #defineRT_TIMER_FLAG_DEACTI...
可以看见,rt_timer相关函数有很多都与rt_thread相同,如init,creat,delete,detach, control等函数。 voidrt_system_tick_init(void);rt_tick_trt_tick_get(void);voidrt_tick_set(rt_tick_ttick);voidrt_tick_increase(void);intrt_tick_from_millisecond(rt_int32_tms);voidrt_system_timer_init(void);voi...
typedef struct rt_thread *rt_thread_t;定时器初始化函数 timer.c /** * 该函数用于初始化一个...
1 rtthread_startup进行对象初始化 2 rt_application_init进行线程对象初始化 rt_thread_create 创建线程 1 调用rt_object_allocate(RT_Object_Class_Thread,name);获取线程对象并创建线程 (a) rt_object_get_information(type),根据type获取线程的对象实例。查找方法是遍历rt_object_container并找到type能匹配上的。
struct rt_timer thread_timer; /**< 内嵌的线程定时器 */ void (*cleanup)(struct rt_thread *tid); /**< 线程退出时的清除函数 */ rt_uint32_t user_data; /**< 私有用户数据 */ }; 总的来看,线程皆有由几类成员组成:object,栈相关信息,优先级信息,事件,定时器信息,私有数据指针。在RT-Thread...
rt-thread 是通过 I/O 设备模型来管理 soc 上的外设,从上到下分为三层:I/O 设备管理层、设备驱动框架层和设备驱动层。stm32 的 HAL 库就属于设备驱动层,比如熟知的 i2c、spi 的外设驱动在用 cubemx 生成代码的时候就已经准备好。中科蓝讯的 ab32vg1 的设备驱动已经在sdk 中由蓝讯的工程师实现。而在设备...
RT_Thread组件开发 一、文件系统 RT-Thread 文件系统结构图 最顶层是一套面向嵌入式系统,专门优化过的设备虚拟文件系统 POSIX 文件接口 中间层是各种文件系统的实现 比如ELM FatFS、RomFS、devfs、RamFS、Yaffs2、Uffs2、JFFS2 、NFS 等 最底层是各类存储设备驱动...
nucleo_L476 默认开启了 timer15、16、17,如果使用已经开启的 Timer,直接在 RT_Thread setting 里开启对应 timer,将官方例程里的define HWTIMER_DEV_NAME 改成对应 imer 即可。 这里我想使用未默认开启的 timer2,这里记录一下当前版本(RT-tread 4.1.0, RT-Thread Studio 2.2.6)使用 cubeMX 的操作步骤: ...
26 RT_DEBUG_NOT_IN_INTERRUPT; 27 28 /* start timer */ 29 if (timeout > 0) 30 { 31 /* reset the timeout of thread timer and start it */ 32 rt_timer_control(&(thread->thread_timer), 33 RT_TIMER_CTRL_SET_TIME, 34 &timeout); ...