RT-thread创建线程并且启动

一. 简介

创建线程有两种方式,根据是否由rt分配内存,分为静态创建线程和动态创建线程。默认是静态分配线程,如果需要使用动态创建线程的话,则需要开启宏定义RT_USING_HEAP,并设置heap相关函数。

二. 静态创建线程

rt_err_t rt_thread_init(struct rt_thread* thread,
                        const char* name,
                        void (*entry)(void* parameter), void* parameter,
                        void* stack_start, rt_uint32_t stack_size,
                        rt_uint8_t priority, rt_uint32_t tick);

thread : 线程句柄
name :线程名字
parameter :线程入口函数
stack_start: 线程栈起始地址
stack_size : 线程栈的大小
priority: 线程的优先级
tick: 线程的时间片大小

	rt_thread_init(&thread_led,
					"thread1",
					thread_led_On,
					RT_NULL,
					thread_Led_stack,
					sizeof(thread_Led_stack),
					30,5);

三. 动态创建线程

调用这个函数,会返回线程句柄。

rt_thread_t rt_thread_create(const char* name,
                            void (*entry)(void* parameter),
                            void* parameter,
                            rt_uint32_t stack_size,
                            rt_uint8_t priority,
                            rt_uint32_t tick);

在使用这个函数的时候,需要先在rtconfig.h中开启
#define RT_USING_HEAP
宏定义(默认是注释掉了的)
然后在board.c里面设置RT_HEAP_SIZE的大小就可以了。
在这里插入图片描述

四. 启动线程

启动线程非常简单,只需要调用这个函数即可。参数是线程句柄。
rt_thread_startup(&thread_led);

五. PS

优先级等级默认为8(然后它这里注释的是为32),如果初始化线程的时候,优先级大于8了的话,线程就不会启动了。优先级等级可以在rtconfig.h修改。
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FPGA之旅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值