RT-Thread线程的创建与脱离
·
RT-Thread是一个实时操作系统(RTOS),支持嵌入式系统中的线程管理。本文介绍了如何在RT-Thread中创建和脱离线程。通过示例代码,展示了如何创建两个静态线程led0_thread和led1_thread,并分别控制LED灯的闪烁。led1_thread在执行20次后,会脱离led0_thread,使其停止闪烁。代码中详细说明了线程控制块、线程栈的初始化,以及线程的启动和调度过程。此示例展示了RT-Thread中线程管理的基本操作,适用于嵌入式开发中的多任务处理场景。
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "rtthread.h"
/****************************************
此代码创建两个静态线程led0_thread和led1_thread
线程2执行20次后会脱离线程1
******************************************/
static struct rt_thread led0_thread;//线程控制块
static struct rt_thread led1_thread;//线程控制块
ALIGN(RT_ALIGN_SIZE)
static rt_uint8_t rt_led0_thread_stack[1024];//线程栈
static rt_uint8_t rt_led1_thread_stack[1024];//线程栈
//线程LED0 led0闪烁计算闪烁次数输出
static void led0_thread_entry(void* parameter)
{
while (1)
{
LED0=0; //注意:F7不支持位带操作,LED操作请参考代码修改
rt_thread_delay(500); //延时500个tick
LED0=1;
rt_thread_delay(500); //延时500个tick
}
}
//线程LED1
static void led1_thread_entry(void* parameter)
{
rt_err_t err;
rt_uint32_t count = 0;
while (1)
{
LED1=0;
rt_thread_delay(500); //延时100个tick
LED1=1;
rt_thread_delay(500); //延时100个tick
if(count<21)
{
rt_kprintf("thread led1 count: %d\r\n", count ++); /* 打印线程计数值输出 */
}
if (count == 20)
{
err = rt_thread_detach(&led0_thread); //当线程运行20次后,脱离线程LED0,led0不在闪烁
if (err == RT_EOK)
{
rt_kprintf("led0线程已脱离\n");
}
else
{
rt_kprintf("led0线程未脱离\n");
}
}
}
}
int main(void)
{
// 创建静态线程
rt_thread_init(&led0_thread, //线程控制块
"led0", //线程名字,在shell里面可以看到
led0_thread_entry, //线程入口函数
RT_NULL, //线程入口函数参数
&rt_led0_thread_stack[0], //线程栈起始地址
sizeof(rt_led0_thread_stack), //线程栈大小
3, //线程的优先级
20); //线程时间片
rt_thread_startup(&led0_thread); //启动线程led0_thread,开启调度
// 创建静态线程
rt_thread_init(&led1_thread, //线程控制块
"led1", //线程名字,在shell里面可以看到
led1_thread_entry, //线程入口函数
RT_NULL, //线程入口函数参数
&rt_led1_thread_stack[0], //线程栈起始地址
sizeof(rt_led1_thread_stack), //线程栈大小
3, //线程的优先级
20);
rt_thread_startup(&led1_thread); //启动线程led1_thread,开启调度
}
串口运行截图入如下
openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。
更多推荐


所有评论(0)