开启一个RT-thread线程,实现两个灯不同频率的闪烁

编写控制一个灯的闪烁的函数。和正常函数区别就是多了void *parameter

static void led1_entry(void *parameter)
{
	while(1)
	{
		LED0 = 0;
		rt_thread_mdelay(300);
		LED0 = 1;
		rt_thread_mdelay(300);
	}
}

利用rt_thread_create创建一个线程,led1_id是一个全局变量,用来接收线程创建成功后的句柄

static rt_thread_t led1_id = RT_NULL;
	led1_id = rt_thread_create("LED1_Thread",//线程名字
								led1_entry, RT_NULL,//线程入口函数,参数
								512,//线程栈的大小
								25,//优先级
								5);//时间片的大小
参数描述
name线程的名称;线程名称的最大长度由 rtconfig.h 中的宏 RT_NAME_MAX 指定,多余部分会被自动截掉
entry线程入口函数
parameter线程入口函数参数
stack_size线程栈大小,单位是字节
priority线程的优先级。优先级范围根据系统配置情况(rtconfig.h 中的 RT_THREAD_PRIORITY_MAX 宏定义),如果支持的是 256 级优先级,那么范围是从 0~255,数值越小优先级越高,0 代表最高优先级
tick线程的时间片大小。时间片(tick)的单位是操作系统的时钟节拍。当系统中存在相同优先级线程时,这个参数指定线程一次调度能够运行的最大时间长度。这个时间片运行结束时,调度器自动选择下一个就绪态的同优先级线程进行运行
返回——
thread线程创建成功,返回线程句柄
RT_NULL线程创建失败

启动一个线程 rt_thread_startup

如果创建成果,就启动线程

	if(led1_id != RT_NULL)
		rt_thread_startup(led1_id);

同理创建第二个灯的线程,所有代码如下

在main里面调用thread_sample初始化线程就可以实现2个灯以不同的频率闪闪灯了

#include <task.h>
#include <rtthread.h>
#include "led.h"
static rt_thread_t led1_id = RT_NULL;

static void led1_entry(void *parameter)
{
	while(1)
	{
		LED0 = 0;
		rt_thread_mdelay(300);
		LED0 = 1;
		rt_thread_mdelay(300);
	}
}

static rt_thread_t led2_id = RT_NULL;

static void led2_entry(void *parameter)
{
	while(1)
	{
		LED1 = 0;
		rt_thread_mdelay(1500);
		LED1 = 1;
		rt_thread_mdelay(1500);
	}
}



int thread_sample()
{
	led1_id = rt_thread_create("LED1_Thread",
								ed1_entry, RT_NULL,
								512,
								25,
								5);
	
	led2_id = rt_thread_create("LED2_Thread",
								led2_entry, RT_NULL,
								512,
								25,
								5);
	
	if(led1_id != RT_NULL)
		rt_thread_startup(led1_id);

	if(led2_id != RT_NULL)
		rt_thread_startup(led2_id);
	
	return 0;
}
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值