staticstruct rt_thread thread1;//+120B 对比3和4的结果,发现在bss区增加了512B大小,是因为我们对静态线程增加了512B线程栈的结果。 静态线程和动态线程创建方式有所不同。 对于静态线程:我们使用rt_thread_init()来创建。 rt_err_trt_thread_init(struct rt_thread*thread,constchar*name,void(*)(void*par...
struct rt_thread thread_static; 线程栈可以通过定义数组的方式来分配,或者通过动态内存分配的方式来完成: /* 数组方式确定线程栈,应该定义成全局数组 */ char thread_stack[1024]; /* 动态内存申请方式,确定线程栈 */ char *thread_stack = (char *)rt_malloc(1024); ...
static rt_uint32_t cnt; void thread_entry(void *parameter) {undefined rt_uint32_t no; rt_uint32_t level; no=(rt_uint32_t)parameter;while(1){/* 关闭全局中断 */level=rt_hw_interrupt_disable();cnt+=no;/* 恢复全局中断 */rt_hw_interrupt_enable(level);rt_kprintf("protect thread[%d...
static struct rt_thread thread2; /* 线程2入口 */ static void thread2_entry(void *param) { rt_uint32_t count = 0; /* 线程2拥有较高的优先级,以抢占线程1而获得执行 */ for (count = 0; count < 10 ; count++) { /* 线程2打印计数值 */ rt_kprintf("thread2 count: %d\n", count)...
RT-Thread系统中,对象可以分为两种,一种是静态对象,一种动态对象。静态对象在编译的时候就已经分配好了内存,而动态内存,则需要在系统启动后自主地向堆区申请内存。而且对象的创建方式也不一样,动态用rt_xxx_creat(),静态用rt_xxx_init(),细看它们的区别可以发现,在静态的rt_xxx_init()中,会调用一个函数:rt...
RT-thread版本:RT-thread system 3.1.0 开发环境:MDK5 为了编程方便,创建了sample1.c文件,然后添加到工程中 话不多说,先上代码 #include"rtthread.h"#definestack_size 1024 //设置动态线程栈大小#definepriority 25 //设置优先级#definetick 10 //时间片staticrt_thread_t tid1 =NULL; //指针初始化为NUL...
栈,是一种经典的储存结构,RTThread为每个线程都分配了栈空间,来看看它是怎样定义的。 ALIGN(RT_ALIGN_SIZE)//线程栈对齐staticrt_uint8_t rt_led1_thread_stack[1024];//定义线程栈 这是一个rt_uint8_t(RTThread中的宏定义,无符号8位)类型的全局数组,第一句话是为了栈空间对齐,使得CPU对数据的访问更加高...
#include <rtthread.h> #define THREAD_PRIORITY 8 #define THREAD_TIMESLICE 5 /* 消息队列句柄 */ rt_mq_t mq_handle; /* 线程 1 入口 */ static void thread1_entry(void *parameter) { char buf = 0; rt_uint8_t cnt = 0; while (1) ...
static rt_uint32_t cnt; void thread_entry(void *parameter) {undefined rt_uint32_t no; rt_uint32_t level; no=(rt_uint32_t)parameter;while(1){/* 关闭全局中断 */level=rt_hw_interrupt_disable();cnt+=no;/* 恢复全局中断 */rt_hw_interrupt_enable(level);rt_kprintf("protect thread[%d...
struct rt_thread thread_static; 线程栈可以通过定义数组方式的来分配,或者通过动态内存分配的方式来完成: /* 数组方式确定线程栈,应该定义成全局数组 */char thread_stack[1024];/* 动态内存申请方式,确定线程栈 */char *thread_stack = (char *)rt_malloc(1024); ...