RT-Thread线程构建
2021/5/4 10:56:21
本文主要是介绍RT-Thread线程构建,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
RT-Thread 操作系统的启动过程如下
main()函数作为其中的一个线程在运行。
如果想新建一个线程,和main()线程并行运行,步骤如下:
第一步:线程初始化函数申明 static void LED1_thread_init(void);
第二步:定义线程堆栈大小static rt_uint8_t RT_LED1_STACK[2048];
第三步:定义线程结构体变量 struct rt_thread LED1;
第四步:定义线程入口函数
void thread_entry_LED1(void * parameter)
{
MX_GPIO_Init(); //必不可少
while(1)
{
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_RESET); //PA0=0,LED ON
rt_thread_mdelay(300);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_SET); //PA0=1,LED OFF
rt_thread_mdelay(300);
rt_kprintf("thread %d is running ,thread %d count = %d\n", 2 , 5 , 34);
}
}
第五步:初始化线程并启动线程,类似于初始化函数和启动函数,见图。
①和第三步所构建的线程结构体名称相同
②和入口函数名称相同
③④堆栈数组名
⑤优先级
⑥时间片,如果时间片到了就重置时间片,调用rt_thread_yield()让出CPU。
⑦启动线程
⑧指示性语句,可有可无
第六步:只有执行LED1_thread_init()才会启动此线程;可在main()函数中如图2-12-8所示启动静态线程。
实验现象:主线程main()和LED1线程各自不受干扰的闪烁;串口发送不同的内容到计算机,表明main线程和LED1线程全部工作。
rt_thread_mdelay(300);是延时300ms的函数,但是这个函数并不独子占用CPU,即这个函数会被分割成很多的时间片去分别执行,而不是一直连续执行到结束。
通过类似的方法可以添加更多的线程。
这篇关于RT-Thread线程构建的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-09-28微服务架构中API版本控制的实践
- 2024-09-28AI给的和自己写的Python代码,都无法改变输入框的内容,替换也不行
- 2024-09-27Sentinel配置限流资料:新手入门教程
- 2024-09-27Sentinel配置限流资料详解
- 2024-09-27Sentinel限流资料:新手入门教程
- 2024-09-26Sentinel限流资料入门详解
- 2024-09-26Springboot框架资料:初学者入门教程
- 2024-09-26Springboot框架资料详解:新手入门教程
- 2024-09-26Springboot企业级开发资料:新手入门指南
- 2024-09-26SpringBoot企业级开发资料新手指南