本文内容为本人公众号文章,更多内容,欢迎关注!
声明:此文为笔记,参考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
暂无评论