1创建项目 (STM32F03ZET6)
RT-Thread项目与RT-Thread Nano 项目区别
-
RT-Thread:
- 完整版:这是RT-Thread的完整形态,适用于资源较丰富的物联网设备。
- 功能:它提供了全面的中间件组件,如文件系统、网络协议栈、GUI等,支持复杂的物联网应用开发。
- 资源占用:相对较大,因为它包含了更多的功能组件。
-
RT-Thread Nano:(个别函数也去掉了)
- 精简版:这是一个精简的硬实时内核,设计用于资源受限的微控制器,如ARM Cortex-M0。
- 功能:它去掉了完整版中的许多高级特性,保留了最核心的多线程管理和调度功能。
- 资源占用:非常小,适用于内存和存储空间有限的小型设备。
2选择板子(根据自己的板子选择)
3找到主函数
4编写代码
4-1创建必要的变量
// 定义线程控制块
static struct rt_thread thread1;
// 定义线程栈
static rt_uint8_t thread1_stack[1024];
4-2创建入口函数
// 线程入口函数
static void thread1_entry(void *parameter)
{while (1){// 线程执行的代码rt_kprintf("Thread 2 is running\n");rt_thread_delay(1000); // 线程延时,单位为毫秒}
}
4-3在主函数中启动线程
// 初始化线程rt_thread_init(&thread1, // 线程控制块"thread1", // 线程名字thread1_entry, // 线程入口函数RT_NULL, // 线程入口参数&thread1_stack[0], // 线程栈起始地址sizeof(thread1_stack), // 线程栈大小10, // 线程优先级20); // 线程时间片// 启动线程rt_thread_startup(&thread1);
4-4全部代码
/** Copyright (c) 2006-2024, RT-Thread Development Team** SPDX-License-Identifier: Apache-2.0** Change Logs:* Date Author Notes* 2024-06-26 RT-Thread first version*/#include <rtthread.h>#define DBG_TAG "main"
#define DBG_LVL DBG_LOG
#include <rtdbg.h>// 定义线程控制块
static struct rt_thread thread1;
// 定义线程栈
static rt_uint8_t thread1_stack[1024];// 线程入口函数
static void thread1_entry(void *parameter)
{while (1){// 线程执行的代码rt_kprintf("Thread 2 is running\n");rt_thread_delay(1000); // 线程延时,单位为毫秒}
}int main(void)
{int count = 1;// 初始化线程rt_thread_init(&thread1, // 线程控制块"thread1", // 线程名字thread1_entry, // 线程入口函数RT_NULL, // 线程入口参数&thread1_stack[0], // 线程栈起始地址sizeof(thread1_stack), // 线程栈大小10, // 线程优先级20); // 线程时间片// 启动线程rt_thread_startup(&thread1);while (count++){LOG_D("Hello RT-Thread!");rt_thread_mdelay(1000);}return RT_EOK;
}
其中rt_kprintf()与LOG_D()作用一样都是串口输出文本