新建工程
这里以rt thread 5.0以及stm32F411CEU6芯片为例,创建工程
先建一个工作空间



.metadata是建工作空间自己生成的。
这时候,工作空间是空的,没有项目:

新建项目

首先下载RT-thread源文件和芯片支持包:

2023.05.02:5.0版本可能没法识别c文件,可以换4.11
下载rt thread的SDK和stm32芯片支持库:





在资源浏览器看,就是这些内容:

查看磁盘上的文件:

配置cubeMX



先定义外部时钟:

再打开系统RTC时钟:

配置时钟树:

系统默认生成的时钟配置

修改后的时钟配置
配置SYS:

配置USART1:

上面的配置是进行调试时用的
配置项目信息:



点击生成代码就可以自动生成模板文件
cubeMX配置完之后会自动生成下面的文件夹:

现在可以编译一下:

编译完,就有上面的Debug文件夹,文件夹有bin的下载程序:

配置ulog
这个组件做程序调试很有用。

点击图标,打开功能

鼠标右键打开配置项

不然报错:
配置tk_printf


配置segger rtt
开启串口框架:

安装软件包:

保存后,配置rtconfig.h:

原来名称是USART1
在drivers/board.c对segger rtt进行初始化:

extern int rt_hw_jlink_rtt_init(void);
 rt_hw_jlink_rtt_init();
这样就能用segger rtt直接向PC输出调试信息,省一个串口

使用示例及msh命令
在applications/main.c中定义:
#define DBG_TAG "main"
#define DBG_LVL DBG_LOG
#include <rtdbg.h>
#include <rtthread.h>
#include <sys/time.h>
void my_hello(void)
{
     rt_kprintf("hello world\n");
}
 MSH_CMD_EXPORT(my_hello, msh cmd test);
int main(void)
{
     int count = 1;
     //ds3231初始化
     //rt_hw_ds3231_init();
     while (count++)
     {
         LOG_D("Hello RT-Thread!");
         rt_thread_mdelay(1000);
         /* 获取时间 */
     }
     return RT_EOK;
}
这里定义了一个交互命令,在rtt中可以进行使用:




带形参的函数加入MSH命令
在 RT-Thread 中,带参数的函数可以通过在 MSH 命令中使用空格来传递参数。例如,如果你有一个带有两个整数参数的函数 test_func:
static void test_func(int arg1, int arg2)
 {
     rt_kprintf("The first argument is %d, and the second argument is %d.\n", arg1, arg2);
 }
则可以在 MSH 中使用以下方式来调用该函数:
test_func 123 456
在函数名和参数之间必须有一个空格。如果参数是字符串类型,则需要用引号将其括起来。
内置的MSH命令












![「OceanBase 4.1 体验」|快速安装部署[OBD方式]](https://img-blog.csdnimg.cn/fc511c8d9aa44f289a0bd3357c36f33c.png)







