首先,RT-Thread 中定义了一个双向链表数组rt_thread_priority_table,用来挂载就绪的线程,代码如下所示: /* Double List structure*/structrt_list_node{structrt_list_node*next;/**< point to next node. */structrt_list_node*prev;/**< point to prev node. */};typedefstructrt_list_nodert_list_t...
线程控制块(结构体)rt_thread,使用了内核对象块,是重写的。 看来,还是不要直接改基础的内核控制块。 要改rt_object的结构体大小,其他对象派生的对象,都要注意下。 总结 通过打印rt_object等结构体的大小,了解了rt_object的基本构成。 基本了解到了其他内核对象,如rt_thread(线程控制块),rt_timer(定时器控制块)...
一文详解RT-Thread自动初始化 描述 一、前言 在学RT-Thread时,经常能听到这个词:自动初始化。用起来也非常容易,一个宏就解决了,但是原理是什么呢?官网文档提及到了, (他们的文档在这里:https://www.rt-thread.org/document/site/programming-manual/basic/basic/#rt-thread_3),但是写的只是概念层面上的,看完...
RT-Thread实时操作系统核心是一个高效的硬实时核心,它具备非常优异的实时性、稳定性、可剪裁性。最小可以到3k ROM占用、1k RAM占用。 内核对象系统 实时线程操作系统内部采用面向对象的方式设计,内建内核对象管理系统,能够访问/管理所有内核对象。内核对象包含了内核中绝大部分设施,而这些内核对象可以是静态分配的静态...
如果你已经有可用的Hightec Demo工程,移植RT-Thread会更简单,本文在已有的Demo工程中,主要移植如下文件: 而libcpu文件夹中,主要在cpuport.c中实现对应的API和变量。 rt_hw_stack_init()接口实现 实现内容如下: rt_uint8_t *rt_hw_stack_init(void *tentry, ...
RT-Thread IIC设备驱动使用 习惯于MCU BSP驱动开发的玩家来说,初识RT_Thread的设备驱动可能有点蒙,原因在于RT_thread代码结构大多是面向对象的,类linux风格,学习过linux开发的小伙伴来看rt-thread一定会倍感亲切的... 接下来就以IIC设备驱动代码来看,如何使用rt-thread的IIC驱动 ...
struct rt_thread, tlist) ) { from_thread === rt_current_thread; to_thread === rt_list_entry( rt_thread_priority_table[1].next, struct rt_thread, tlist); rt_current_thread === to_thread; } else// (2) { from_thread === rt_current_thread; to_thread...
struct rt_thread { void *sp; /* 线程栈指针 */ void *entry; /* 线程入口地址 */ void *parameter; /* 线程形参 */ void *stack_addr; /* 线程起始地址 */ rt_uint32_t stack_size; /* 线程栈大小,单位为字节 */ rt_list_t tlist; /* 线程链表节点 */ ...
RT-Thread IIC设备驱动使用 1、挂载SPI设备 函数原型: 代码语言:javascript 复制 rt_err_trt_spi_bus_attach_device(struct rt_spi_device*device,constchar*name,constchar*bus_name,void*user_data) 此函数主要是用来挂载一个 SPI 设备到指定的 SPI 总线,并向内核注册 SPI 设备,并将 user_data 保存到 SPI...
🚀🚀RT-Thread 提供的引脚编号需要和芯片的引脚号区分开来,它们并不是同一个概念,引脚编号由 PIN 设备驱动程序定义,和具体的芯片相关。有3种方式可以获取引脚编号: API 接口获取、使用宏定义或者是查看PIN 驱动文件,接下来我们来介绍一下。 使用API