staticrt_uint8_tled_stack[512]; 线程栈其实就是一个预先定义好的全局数据,数据类型为rt_uint8_t,大小我们设置为 512。在 RT-Thread 中,凡是涉及到数据类型的地方, RTThread 都会将标准的 C 数据类型用 typedef 重新取一个类型名, 以“rt”前缀开头。这些经过重定义的数据类型放在rtdef.h,如: 线程控制...
rt_uint8_t type; /* 内核对象的类型 */ rt_uint8_t flag; /* 内核对象的状态 */ rt_list_t list; /* 内核对象的列表节点 */ }; typedef struct rt_object *rt_object_t; /*内核对象数据类型重定义 */ 其中的type就是用上面的枚举类型,每个对象都从rt_object派生而来。 线程也是对象,所以为了管...
void*parameter,void*stack_start,rt_uint32_tstack_size,rt_uint8_tpriority,rt_uint32_ttick);...
RT-Thread定义数据类型,使用rt前缀,如rt_uint8_t rt_uint16_t rt_uint32_t rt_size_t等 而开源代码是的大家常用,标准C库定义的uint8_t uint16_t uint32_t size_t数据类型 RT-Thread移植未改过来数据类型定义,头文件也没有加 解决方法: 添加头文件 #include <stdint.h> #include <stddef.h> 当然添...
rt_mq_t rt_mq_create(const char *name, rt_size_t msg_size, rt_size_t max_msgs, rt_uint8_t flag) 如果使用 `rt_mq_create` 创建消息队列,消息队列池自动根据消息体大小 `msg_size` 和消息队列最多容纳的消息数量 `max_msgs` 计算。
rt_uint8_ttype;/* 对象类型 */ rt_uint8_tflags;/* 标志位 */ rt_list_tlist;/* 对象列表 */ rt_list_ttlist;/* 线程列表 */ /* 栈指针与入口指针 */ void*sp;/* 栈指针 */ void*entry;/* 入口函数指针 */ void*parameter;/* 参数 */ ...
rt_uint8_t hold; /* 持有线程的持有次数 */ struct rt_thread *owner; /* 当前拥有互斥量的线程 */ }; /* rt_mutext_t 为指向互斥量结构体的指针类型 */ typedef struct rt_mutex* rt_mutex_t; 1. 2. 3. 4. 5. 6. 7. 8.
rt_uint8_tflag;/**< 内核对象的状态 */ #ifdefRT_USING_MODULE void*module_id;/**< 模块ID */ #endif rt_list_tlist;/**< 内核对象的列表节点 */ }; typedefstructrt_object*rt_object_t;/**< 内核对象数据类型重定义 */ 这个对象结构体包含的信息都是各类对象的公共部分。每类对象都有创建一...
rt_uint8_t rt_thread_ready_table[32];#else/*Maximum priority level, 32*/rt_uint32_t rt_thread_ready_priority_group;#endif 在这里,我们使用的MAX数小于等于32,所以使用的是else之后的定义。 线程优先级组是来做什么的?这里举一个荔枝:线程3准备好了,这时,优先级组的第3位就会置1,然后线程会被插入...
1typedefstructrt_list_nodert_list_t; 因为内核中对象引用方便的缘故,采用了对象内核指针作为类型定义的形式,例如: 1typedefstructrt_timer*rt_timer_t; 6.宏定义 在RT-Thread中,请使用大写英文名称作为宏定义,单词之间使用 “_” 连接,例如: 1#defineRT_TRUE 1 ...