STM32开发环境构建指南:使用CubeMX与RT-Thread Studio

一、ST官方网站

1、官方网站

ST官网:https://www.st.com.cn/content/st_com/zh.html

2、芯片手册

https://www.st.com.cn/zh/microcontrollers-microprocessors/stm32f103/products.html

查找对应MCU数据手册:

或者立创商城最容易获取:

二、调试工具/驱动

1、ST-Link

ST-LINK驱动(STSW-LINK009):https://www.st.com/zh/development-tools/stsw-link009.html/

STM32 ST-LINK Utility是针对STM32全系芯片进行编程(读、写、擦除、选项字)的一款工具;

软件下载:STSW-LINK004 – STM32 ST-LINK utility – STMicroelectronics

2、JLink

JLink_Windows_V754b_x86_64 JLINK驱动,集成了多种调试下载工具,也可以单独用来下载代码,并且效率高于串口下载;支持多种芯片和市面上大多数主流IDE环境,可作为J-link驱动,可独立使用其集成的十几款调试工具,非常方便;

软件下载:SEGGER – The Embedded Experts – Downloads – J-Link / J-Trace

配置工程、Target->Production Programming:

3、CH340驱动

USB转串口芯片;

驱动下载:

Windows:https://www.wch.cn/download/CH341SER_EXE.html/

Linux:https://www.wch.cn/download/CH341SER_LINUX_ZIP.html/

4、CP2102驱动

USB转串口芯片;

驱动下载:https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers

三、CubeMX安装

1、安装Java环境

安装Java:Java Downloads for All Operating Systems

由于 STM32CubeMX 软件是基于 JAVA 环境运行的,所以需要安装 JRE (Java Runtime Environment)才能使用,记得选择64位的安装;

2、安装CubeMX

安装CubeMX:www.st.com/stm32cubemx

只需要更改安装路径,其他默认Next;

3、安装在线库

在线安装库:

Help -> Manage embedded software packages

选择芯片型号,Install安装等待完成既可

四、RT-Thread Studio安装

软件下载:rt-thread.org/studio.html

五、RT-Thread Studio文档

文档中心:https://www.rt-thread.org/document/site/#/

六、RT-Thread Studio使用

代码视图放大:Ctrl Shift +

代码视图缩小:Ctrl –

函数自动注释:

/*! 回车自动添加

七、RT-Thread Studio手册

1、手册入口

2、手册简介

八、SDK管理

SDK包含对应芯片的CMSIS、HAL库、链接文件;

九、工作空间创建/导入

1、创建新工作空间

通用项目:只包含基本的SDK,无驱动框架、内核和其他组件;

Nano版本精简版本,无驱动框架,只保留内核和必要组件(无法使用RT-Thread Settings可使用CubeMX),Flash占用低;

标准版本全功能版本,驱动框架、内核、物联网及其他组件,Flash占用高。

文件->新建->RT-Thread项目,根据需要配置好后点击完成就会生成RT-Thread项目;

(注意:RT版本和SDK版本不兼容编译会报错)

目录简介:

RT-Thread Settings:Studio为了方便开发而提供的工具合集,可以快速配置一些软件包,裸机开发时不需要,所以在轻量化的Nano版本里时无法使用上述的这些功能,初始化工程自动启用FinSH控制台;

CubeMX Settings:CubeMX在使用过后会生成一个/cubemx/cubemx.ioc的文件,这就是CubeMX对于该项目生成的可视化配置文件,可以重复配置,重复加载代码。不过需要注意的是,CubeMX在生成代码时,会生成大量文件,其中有一个文件叫做stm32fxx_hal_conf.h,这个文件在最初的工程中也有,不过在driver文件夹中,他会在代码生成时被重命名,更正为stm32fxx_hal_conf_bak.h。在文件编译时只关注最新的stm32fxx_hal_conf.h,也就是在cubemx文件夹下的文件;

二进制:存放二进制的文件,并且特指rtthread.elf文件,该文件是builid整个项目是生成的,也是DeBug和烧录的对象文件;

includes:实际上并不存在这样一个文件,属于一种映射,映射到对应的文件,本质上是一些工程生成时编译配置头文件路径;

applications:main函数所在的路径和用户需要编写的应用层程序文件;

drivers:BSP板级驱动所在的文件夹;

debug: 经过编译之后的obj文件和调试相关文件,其中就包括rtthread.elf;

libraries:芯片库及其他库文件;

linkscript:链接文件;

rt-thread:RT Thread内核文件;

已试验版本:

RT-Thread Studio 2.2.7

STM32F1:

        RT:4.0.3

        SDK:0.1.9

STM32F4:

        RT:4.0.5

        SDK:0.2.2(0.2.3会报错)

已创建工程修改调试器:

2、导入已有工作空间

文件->导入:

 -> 

十、头文件路径添加

对于自定义的文件夹需要添加头文件搜索路径:

(如applications/01_common文件夹)

 

十一、目标文件修改

设置文件格式(RT-Thread Studio编译完项目以后默认输出Bin文件格式,文件名默认为rtthread):

同时生成hex和bin文件并自动重命名:

若需要同时生成hex和bin文件,在项目构建配置-工具设置中,还是将Output file format修改为默认的Raw binary;

然后在项目构建配置的构建步骤中,添加构建后步骤命令:arm-none-eabi-objcopy -O ihex "${ProjName}.elf"  "${ProjName}.hex"

修改调试配置:

十二、调试输出

1、调试输出

使用rt_kprintf输出;

示例:

rt_kprintf("status: %d\n", 1);

日志等级封装(内部调用rt_kprintf):

LOG_D(fmt, …) // 调试

LOG_I(fmt, …) // 信息

LOG_W(fmt, …) // 警告

LOG_E(fmt, …) // 错误

2、FinSH控制台

ps:显示当前所有线程的状态

list_device:列出当前所有设备的信息

help:显示帮助信息,列出可用的命令

使用MSH_CMD_EXPORT导出命令函数:

void doCtrl(int argc, char **argv)

{

    if(argc != 3) {

        rt_kprintf("intput format:doCtrl [DOx] [ON/OFF]\n");

        return;

    }

    if(!strcmp(argv[1] , "DO1")) {

        if(!strcmp(argv[2] , "ON")) setDoStatus(DO1, true);

        else if(!strcmp(argv[2] , "OFF")) setDoStatus(DO1, false);

    } else if(!strcmp(argv[1] , "DO2")) {

        if(!strcmp(argv[2] , "ON")) setDoStatus(DO2, true);

        else if(!strcmp(argv[2] , "OFF")) setDoStatus(DO2, false);

    } else if(!strcmp(argv[1] , "DO3")) {

        if(!strcmp(argv[2] , "ON")) setDoStatus(DO3, true);

        else if(!strcmp(argv[2] , "OFF")) setDoStatus(DO3, false);

    } else if(!strcmp(argv[1] , "DO4")) {

        if(!strcmp(argv[2] , "ON")) setDoStatus(DO4, true);

        else if(!strcmp(argv[2] , "OFF")) setDoStatus(DO4, false);

    }

}

MSH_CMD_EXPORT(doCtrl, "[DOx] [ON/OFF]");

十三、代码格式化

窗口->首选项:

选中代码,鼠标右键【源】->【格式】

或者:

Ctrl+Shift+F

作者:Xiangfu DING

物联沃分享整理
物联沃-IOTWORD物联网 » STM32开发环境构建指南:使用CubeMX与RT-Thread Studio

发表回复