可以看到线程创建函数的返回值类型为:rt_thread_t,找到定义处(如下图),可以看到它的返回值类型是一个结构体指针变量。 2、线程定义 那么我们先定义一个结构体指针的线程th1_ptr,这样通过rt_thread_create函数创建的进程控制块的地址就能直接赋值给th1_ptr变量: rt_thread_t th1_ptr = NULL 接下来就是我们给进...
rt_err_t at_exec_cmd(at_response_t resp, const char *cmd_expr, ...); 该函数用于 AT Client 发送命令到 AT Server,并等待接收响应,其中 resp 是已经创建好的响应结构体的指针,AT 命令的使用匹配表达式的可变参输入,输入命令的结尾不需要添加命令结束符。 可参考以下代码了解如何使用以上几个 AT 命...
在RT-Thread 中,线程控制块由结构体 struct rt_thread 表示,线程控制块是操作系统用于管理线程的一个数据结构,它会存放线程的一些信息,例如优先级、线程名称、线程状态等,也包含线程与线程之间连接用的链表结构,线程等待事件集合等,详细定义如下: /* 线程控制块 */structrt_thread{/* rt 对象 */charname[RT_NA...
1rt_err_t rt_device_register(rt_device_t dev,2constchar*name,3rt_uint16_t flags)4{5if(dev ==RT_NULL)6{return-RT_ERROR; }789if(rt_device_find(name) != RT_NULL)//检查系统是否有重名,若有与name相同的设备则返回错误10{return-RT_ERROR; }111213rt_object_init(&(dev->parent), RT_...
通过打印rt_object等结构体的大小,了解了rt_object的基本构成。 基本了解到了其他内核对象,如rt_thread(线程控制块),rt_timer(定时器控制块),rt_list_t(双向链表)的RAM占用大小。 了解到rt_object的派生方式,增加其他对象的特殊属性,构成其他的对象,用链表链接起来,用于OS管理。
1 RT-Thread 介绍 1.1 RT-Thread 线程管理 调度 线程间通信(邮箱/消息队列/信号) 线程间同步(信号量/互斥量/事件集) 核心都是链表 & 定时器 1.2 3个层次 (1) 会用 API (2) 懂 内部机制 (3) 掌握代码实现细节, 能移植 前2个层次可速成: 10 几个小时足够 ...
AT组件是RT-Thread继SAL之后的又一重磅发布,解决了不同网络模块AT命令之间的差异导致的重复开发的问题,大幅度简化了MCU+无线模块方案开发。1 本文的目的和结构 1.1 本文的目的和背景 随着 AT 命令的逐渐普及,越来越多的嵌入式产品上使用了 AT 命令,一般AT 命令作为主芯片和通讯模块的协议接口,硬件接口一般为...
RT-Thread 中管理邮箱的数据结构为邮箱控制块,有结构体struct rt_mailbox表示。另外,rt_mailbox_t表示的是邮箱的句柄,即指向邮箱控制块的指针。邮箱控制块结构体定义如下: struct rt_mailbox { struct rt_ipc_object parent; /* 继承自 ipc_object 类 */ ...
在RT-Thread 中,线程控制块由结构体struct rt_thread 表示,线程控制块是操作系统用于管理线程的一个数据结构,它会存放线程的一些信息,例如优先级、线程名称、线程状态等,也包含线程与线程之间连接用的链表结构,线程等待事件集合等,详细定义如下: 代码语言:javascript ...
在RT-Thread 中,操作系统管理事件的数据结构称为事件集控制块,由结构体struct rt_event表示。另外,rt_event_t表示的是事件集的句柄,即指向事件集控制块的指针。 事件集控制块结构体定义如下: struct rt_event { /* 继承自 ipc_object 类 */ struct rt_ipc_object parent; ...