RT-Thread创建线程函数

一、了解 线程结构体内容
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
以下注解:

thread-> entry                   //函数的入口
thread-> parameter            // 函数的参数
thread-> stack_starrt;        // 栈的地址		
thread-> stack_size;          // 栈的大小
thread-> init_priority  = priority;// 线程的初始优先级	
thread-> current_priority =priority; 线程的当前优先级	

二、创建函数的栈

在这里插入图片描述

#ifedef  ARCH_CPU_STACK_GROWS _UPWARD

 thread -> sp =( void *) rt_hw_stack_init ( thread -> entry , thread -> parameter ,
				( void *)(char*)thread -> stack_addr),
				( void ") rt_thread_exit );

 else 
 thread ->sp =( void*) rt_hw_stack_init ( thread -> entry, thread->parameter,
                      ( rt_uint8_ t *)( char*) thread->stack_addr + thread->stack_size-sizeof(rt_ ubase_t)),
                      ( void*) rt_thread_exit );

该函数两个作用:

1.调整栈 (sp寄存器)
2.虚构栈的内容

在这里插入图片描述

在这里插入图片描述
该值 保存在栈中 之后再赋值给PC寄存器

在这里插入图片描述]

rt_uint32_t lr;    // R14
rt_uint32_t pc;    // R15
rt_uint32_t psr;    // 状态1.比较结果  
					//     2.中断相关

存在栈中的 有R0到R15 ,PSR

R13不保存 其别名为栈 保存在sp
PSR: 函数运行过程中断的开还是关
R0为参数寄存器 在函数入口时 将参数传置R0寄存器之中

在这里插入图片描述

在这里插入图片描述

如何假装

构造好这个一个栈,然后将rt-thread 的sp指针 r4 栈尾
之后运行 这个线程时 将创建的栈中的词 写入CPU寄存器中

三、总结
在这里插入图片描述

1.分配了一个RT_thread 结构体
2.分配一个栈
3.初始栈

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值