使用STM32CubeMX生成rt thread工程

本文内容为本人公众号文章,更多内容,欢迎关注!

声明:此文为笔记,参考rt-thread官方文档,第四项配置说明为rt-thread网站复制。

一、安装 Nano pack

a)要使用STM32CubeMX生成包含rt-thread源码的工程需要先装RT-Thread Nano首先需要在 CubeMX 中添加 https://www.rt-thread.org/download/cube/RealThread.RT-Thread.pdsc 

b)具体步骤:进入打开 CubeMX,从菜单栏 help 进入 Manage embedded software packages 界面,点击 From Url 按钮,进入 User Defined Packs Manager 界面,其次点击 new,填入上述网址,然后点击 check,如下图所示:

c)验证成功后链接后面会多个下图绿色图标,点击 OK

d)选中RealThread,点击 OK

e)回到 Manage embedded software packages 界面,就会发现 RT-Thread Nano 3.1.5 软件包,选择该软件包,点击 Install Now,如下图所示:

f)安装完成后对应版本前面选框会填充颜色

二、创建工程选择 Nano组件

点击 Softwares Packages->Select Components,进入组件配置界面,选择 RealThread, 然后根据需求选择 RT-Thread 组件,然后点击 OK 按钮,如下图所示:

a)RT-Thread Nano 软件包中包含 kernel, shell 和 device 三个部分,仅选择 kernel 表示只使用 RT-Thread 内核,工程中会添加内核代码;选择 kernel 与 shell 表示在使用 RT-Thread Nano 的基础上使用 FinSH Shell 组件,工程中会添加内核代码与 FinSH 组件的代码,FinSH 的移植详见 《在 RT-Thread Nano 上添加控制台与 FinSH》。再选择 device 表示使用 rt-thread 的 device 框架,用户基于此框架编写外设驱动并注册后,就可以使用 device 统一接口操作外设。

三、配置Nano

a)选择组件之后,对组件参数进行配置。在工程界面 Pinout & Configuration 中,进入所选组件参数配置区,按照下图进行配置

b)RT-Thread 操作系统重定义 HardFault_Handler、PendSV_Handler、SysTick_Handler 中断函数,为了避免重复定义的问题,在生成工程之前,需要在中断配置中,代码生成的选项中,取消选择三个中断函数(对应注释选项是 Hard fault interrupt, Pendable request, Time base :System tick timer),最后点击生成代码,具体操作如下图 所示:

c)获取代码,提示警告(因上一步操作),直接选择Yes

d)此时编译会报错(因为上面选中了Shell,需要配置使能FinSH,配置工程时要配置开启UART2)

e)使能FinSH

f)因开启FinSH,未配置USART2导致报错

g)配置开启UART2

h)此时即可编译通过,到此就完成了,可以开始使用rt-thread

四、RT-Thread Nano 配置说明

RT-Thread Nano 的配置在 rtconfig.h 中进行,通过开关宏定义来使能或关闭某些功能,接下来对该配置文件中的宏定义进行说明。

基础配置

1、设置系统最大优先级,可设置范围 8 到 256,默认值 32,可修改。

#define RT_THREAD_PRIORITY_MAX  32 

2、设置 RT-Thread 操作系统节拍,表示多少 tick 每秒,如默认值为 100 ,表示一个时钟节拍(os tick)长度为 10ms。常用值为 100 或 1000。时钟节拍率越快,系统的额外开销就越大。

#define RT_TICK_PER_SECOND  1000 

3、字节对齐时设定对齐的字节个数,默认 4,常使用 ALIGN(RT_ALIGN_SIZE) 进行字节对齐。

#define RT_ALIGN_SIZE   4 

4、设置对象名称的最大长度,默认 8 个字符,一般无需修改。

#define RT_NAME_MAX    8 

5、设置使用组件自动初始化功能,默认需要使用,开启该宏则可以使用自动初始化功能。

#define RT_USING_COMPONENTS_INIT 

6、开启 RT_USING_USER_MAIN 宏,则打开 user_main 功能,默认需要开启,这样才能调用 RT-Thread 的启动代码;main 线程的栈大小可修改。

#define RT_USING_USER_MAIN
#define RT_MAIN_THREAD_STACK_SIZE     512

内核调试功能配置

定义 RT_DEBUG 宏则开启 debug 模式。若开启系统调试,则在实现打印之后可以打印系统 LOG 日志。请在代码开发与调试过程中打开该项,帮助调试定位问题,在代码发布时关闭该项。

//#define RT_DEBUG                 // 关闭 debug
#define RT_DEBUG_INIT 0            // 启用组件初始化调试配置,设置为 1 则会打印自动初始化的函数名称

//#define RT_USING_OVERFLOW_CHECK  // 关闭栈溢出检查

钩子函数配置

设置是否使用钩子函数,默认关闭。

//#define RT_USING_HOOK                         // 是否 开启系统钩子功能

//#define RT_USING_IDLE_HOOK                    // 是否 开启空闲线程钩子功能

软件定时器配置

设置是否启用软件定时器,以及相关参数的配置,默认关闭。

#define RT_USING_TIMER_SOFT       0             // 关闭软件定时器功能,为 1 则打开
#if RT_USING_TIMER_SOFT == 0
#undef RT_USING_TIMER_SOFT
#endif

#define RT_TIMER_THREAD_PRIO        4           // 设置软件定时器线程的优先级,默认为 4

#define RT_TIMER_THREAD_STACK_SIZE  512         // 设置软件定时器线程的栈大小,默认为 512 字节

IPC 配置

系统支持的 IPC 有:信号量、互斥量、事件集、邮箱、消息队列。通过定义相应的宏打开或关闭该 IPC 的使用。

#define RT_USING_SEMAPHORE         // 设置是否使用 信号量,默认打开

//#define RT_USING_MUTEX           // 设置是否使用 互斥量

//#define RT_USING_EVENT           // 设置是否使用 事件集

#define RT_USING_MAILBOX           // 设置是否使用  邮箱

//#define RT_USING_MESSAGEQUEUE    // 设置是否使用 消息队列

内存配置

RT-Thread 内存管理包含:内存池、内存堆、小内存算法。通过开启相应的宏定义使用相应的功能。

//#define RT_USING_MEMPOOL      // 是否使用 内存池

#define RT_USING_HEAP           // 是否使用 内存堆

#define RT_USING_SMALL_MEM      // 是否使用 小内存管理

//#define RT_USING_TINY_SIZE    // 是否使用 小体积的算法,牵扯到 rt_memset、rt_memcpy 所产生的体积

FinSH 配置

当系统加入 FinSH 组件源码后,需要在 rtconfig.h 中开启以下项

#include "finsh_config.h" 

该头文件中包含了对 FinSH 组件的配置。如下是该头文件中包含的 FinSH 组件的配置项:

/* 打开 FinSH 组件 */
#define RT_USING_FINSH

/* 使用 MSH 模式 */
#define FINSH_USING_MSH
#define FINSH_USING_MSH_ONLY

/* tshell 线程的优先级与线程栈大小 */
#define FINSH_THREAD_PRIORITY       21   // 请检查系统最大优先级的值,该值必须在系统支持的优先级范围之内
#define FINSH_THREAD_STACK_SIZE     1024

/* 使用符号表,使用命令描述 */
#define FINSH_USING_SYMTAB
#define FINSH_USING_DESCRIPTION 

注意:若未加入 FinSH 组件源码,请勿开启此项。

DEVICE 框架配置

当系统中加入 device 框架源码时,则需要在 rtconfig.h 中开启以下项

#define RT_USING_DEVICE 

开启该项则将加入 device 框架源码。

注意:若未加入 device 源码,请勿开启此项。

版权声明:本文为CSDN博主「记忆中的美丽瞬间」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yangyongqiang1101/article/details/122994162

本文内容为本人公众号文章,更多内容,欢迎关注!

声明:此文为笔记,参考rt-thread官方文档,第四项配置说明为rt-thread网站复制。

一、安装 Nano pack

a)要使用STM32CubeMX生成包含rt-thread源码的工程需要先装RT-Thread Nano首先需要在 CubeMX 中添加 https://www.rt-thread.org/download/cube/RealThread.RT-Thread.pdsc 

b)具体步骤:进入打开 CubeMX,从菜单栏 help 进入 Manage embedded software packages 界面,点击 From Url 按钮,进入 User Defined Packs Manager 界面,其次点击 new,填入上述网址,然后点击 check,如下图所示:

c)验证成功后链接后面会多个下图绿色图标,点击 OK

d)选中RealThread,点击 OK

e)回到 Manage embedded software packages 界面,就会发现 RT-Thread Nano 3.1.5 软件包,选择该软件包,点击 Install Now,如下图所示:

f)安装完成后对应版本前面选框会填充颜色

二、创建工程选择 Nano组件

点击 Softwares Packages->Select Components,进入组件配置界面,选择 RealThread, 然后根据需求选择 RT-Thread 组件,然后点击 OK 按钮,如下图所示:

a)RT-Thread Nano 软件包中包含 kernel, shell 和 device 三个部分,仅选择 kernel 表示只使用 RT-Thread 内核,工程中会添加内核代码;选择 kernel 与 shell 表示在使用 RT-Thread Nano 的基础上使用 FinSH Shell 组件,工程中会添加内核代码与 FinSH 组件的代码,FinSH 的移植详见 《在 RT-Thread Nano 上添加控制台与 FinSH》。再选择 device 表示使用 rt-thread 的 device 框架,用户基于此框架编写外设驱动并注册后,就可以使用 device 统一接口操作外设。

三、配置Nano

a)选择组件之后,对组件参数进行配置。在工程界面 Pinout & Configuration 中,进入所选组件参数配置区,按照下图进行配置

b)RT-Thread 操作系统重定义 HardFault_Handler、PendSV_Handler、SysTick_Handler 中断函数,为了避免重复定义的问题,在生成工程之前,需要在中断配置中,代码生成的选项中,取消选择三个中断函数(对应注释选项是 Hard fault interrupt, Pendable request, Time base :System tick timer),最后点击生成代码,具体操作如下图 所示:

c)获取代码,提示警告(因上一步操作),直接选择Yes

d)此时编译会报错(因为上面选中了Shell,需要配置使能FinSH,配置工程时要配置开启UART2)

e)使能FinSH

f)因开启FinSH,未配置USART2导致报错

g)配置开启UART2

h)此时即可编译通过,到此就完成了,可以开始使用rt-thread

四、RT-Thread Nano 配置说明

RT-Thread Nano 的配置在 rtconfig.h 中进行,通过开关宏定义来使能或关闭某些功能,接下来对该配置文件中的宏定义进行说明。

基础配置

1、设置系统最大优先级,可设置范围 8 到 256,默认值 32,可修改。

#define RT_THREAD_PRIORITY_MAX  32 

2、设置 RT-Thread 操作系统节拍,表示多少 tick 每秒,如默认值为 100 ,表示一个时钟节拍(os tick)长度为 10ms。常用值为 100 或 1000。时钟节拍率越快,系统的额外开销就越大。

#define RT_TICK_PER_SECOND  1000 

3、字节对齐时设定对齐的字节个数,默认 4,常使用 ALIGN(RT_ALIGN_SIZE) 进行字节对齐。

#define RT_ALIGN_SIZE   4 

4、设置对象名称的最大长度,默认 8 个字符,一般无需修改。

#define RT_NAME_MAX    8 

5、设置使用组件自动初始化功能,默认需要使用,开启该宏则可以使用自动初始化功能。

#define RT_USING_COMPONENTS_INIT 

6、开启 RT_USING_USER_MAIN 宏,则打开 user_main 功能,默认需要开启,这样才能调用 RT-Thread 的启动代码;main 线程的栈大小可修改。

#define RT_USING_USER_MAIN
#define RT_MAIN_THREAD_STACK_SIZE     512

内核调试功能配置

定义 RT_DEBUG 宏则开启 debug 模式。若开启系统调试,则在实现打印之后可以打印系统 LOG 日志。请在代码开发与调试过程中打开该项,帮助调试定位问题,在代码发布时关闭该项。

//#define RT_DEBUG                 // 关闭 debug
#define RT_DEBUG_INIT 0            // 启用组件初始化调试配置,设置为 1 则会打印自动初始化的函数名称

//#define RT_USING_OVERFLOW_CHECK  // 关闭栈溢出检查

钩子函数配置

设置是否使用钩子函数,默认关闭。

//#define RT_USING_HOOK                         // 是否 开启系统钩子功能

//#define RT_USING_IDLE_HOOK                    // 是否 开启空闲线程钩子功能

软件定时器配置

设置是否启用软件定时器,以及相关参数的配置,默认关闭。

#define RT_USING_TIMER_SOFT       0             // 关闭软件定时器功能,为 1 则打开
#if RT_USING_TIMER_SOFT == 0
#undef RT_USING_TIMER_SOFT
#endif

#define RT_TIMER_THREAD_PRIO        4           // 设置软件定时器线程的优先级,默认为 4

#define RT_TIMER_THREAD_STACK_SIZE  512         // 设置软件定时器线程的栈大小,默认为 512 字节

IPC 配置

系统支持的 IPC 有:信号量、互斥量、事件集、邮箱、消息队列。通过定义相应的宏打开或关闭该 IPC 的使用。

#define RT_USING_SEMAPHORE         // 设置是否使用 信号量,默认打开

//#define RT_USING_MUTEX           // 设置是否使用 互斥量

//#define RT_USING_EVENT           // 设置是否使用 事件集

#define RT_USING_MAILBOX           // 设置是否使用  邮箱

//#define RT_USING_MESSAGEQUEUE    // 设置是否使用 消息队列

内存配置

RT-Thread 内存管理包含:内存池、内存堆、小内存算法。通过开启相应的宏定义使用相应的功能。

//#define RT_USING_MEMPOOL      // 是否使用 内存池

#define RT_USING_HEAP           // 是否使用 内存堆

#define RT_USING_SMALL_MEM      // 是否使用 小内存管理

//#define RT_USING_TINY_SIZE    // 是否使用 小体积的算法,牵扯到 rt_memset、rt_memcpy 所产生的体积

FinSH 配置

当系统加入 FinSH 组件源码后,需要在 rtconfig.h 中开启以下项

#include "finsh_config.h" 

该头文件中包含了对 FinSH 组件的配置。如下是该头文件中包含的 FinSH 组件的配置项:

/* 打开 FinSH 组件 */
#define RT_USING_FINSH

/* 使用 MSH 模式 */
#define FINSH_USING_MSH
#define FINSH_USING_MSH_ONLY

/* tshell 线程的优先级与线程栈大小 */
#define FINSH_THREAD_PRIORITY       21   // 请检查系统最大优先级的值,该值必须在系统支持的优先级范围之内
#define FINSH_THREAD_STACK_SIZE     1024

/* 使用符号表,使用命令描述 */
#define FINSH_USING_SYMTAB
#define FINSH_USING_DESCRIPTION 

注意:若未加入 FinSH 组件源码,请勿开启此项。

DEVICE 框架配置

当系统中加入 device 框架源码时,则需要在 rtconfig.h 中开启以下项

#define RT_USING_DEVICE 

开启该项则将加入 device 框架源码。

注意:若未加入 device 源码,请勿开启此项。

版权声明:本文为CSDN博主「记忆中的美丽瞬间」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yangyongqiang1101/article/details/122994162

生成海报
点赞 0

记忆中的美丽瞬间

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

使用STM32CubeMX生成rt thread工程

本文内容为本人公众号文章,更多内容,欢迎关注! 声明:此文为笔记,参考rt-thread官方文档,第四项配置说明为rt-thread网站复制。 一、安装 Na

ESP32S2+ES8388移植过程及问题

电路图如下, 有点小瑕疵ES8388_VMID PIN10/19/20电容没有忘加,查资料应该不影响语言输出,可能噪音大,如果能导致不输出请告诉我一下。 ESP32S2管脚映射 这里主

基于STM32的LoRa无线通信(AS32—TTL-1W)

目录 无线串口简介 项目简介 发送端代码 接收端代码 项目总结 前些天接触到一个小项目,需要使用无线传输的功能,不仅如此还需要远距离的通信,搜索资料后最终选择了泽耀科技的LoRa&#xff08