使用RT-Thread Studio和STM32CubeMX创建新的RT-Thread项目

STM32CubeMX下载
RT-Thread Studio下载

安装好RT-Thread Studio后,先打开RT-Thread SDK管理器确认有没有自己MCU需要的SDK包,直接安装好之后里面是有STM32F1系列的SDK包,其他的需要自己安装。

之后点击文件→新建→RT-Thread项目,根据自己需要配置好后点击完成就会生成RT-Thread项目。

新建项目后点击构建,这时候应该是不会报错的,直接下载进板子里就会打印出RT-Thread的信息。
如果没有打印出信息,这个时候调试可能会发现进入rt_hw_hard_fault_exception()函数的while(1)循环中。
如果出现这种错误,可以试一下使用STM32F1系列的创建一个RT-Thread项目,应该是可以直接跑的。那么就没必要去研究为什么出现这种错误,直接更换SDK包,重新试一下,如果还是不行的话就更换一下RT-Thread Studio的版本,我本来用的是2.2.6版本的,后来换成2.2.5版本的就没有问题,新建的项目可以直接跑。

这样项目就建好了,之后可以通过STM32CubeMX来配置自己的工程,配置好之后在Project Manager界面设置不要生成main函数,因为新建的RT-Thread项目里面已经有main函数了。

在Code Generator界面不要勾选为每个外设单独生成.c和.h文件,因为通过STM32CubeMX生成的工程在RT-Thread项目中实际使用的只有stm32l4xx_hal_msp.c和stm32l4xx_hal_conf.h文件。conf.h文件用来使能外设模块,msp.c包含管脚和时钟初始化等,这样的话所有外设的设置都在一个msp.c里面,方便管理。

之后就可以生成代码了,生成之后界面如下:

STM32CubeMX生成的代码main.c中只使用了SystemClock_Config()函数来配置时钟,这个函数会在drv_clk.c里面clk_init()函数中调用。

void clk_init(char *clk_source, int source_freq, int target_freq)
{
    /*
     * Use SystemClock_Config generated from STM32CubeMX for clock init
     * system_clock_config(target_freq);
     */
    extern void SystemClock_Config(void);
    SystemClock_Config();
}

这个时候cubemx目录里面是没有SConscript文件的,这是一个脚本文件。

如果RT-Thread Studio版本是2.2.6的话,直接在STM32CubeMX里面什么都不改重新再生成一遍代码更新软件包就有了;如果RT-Thread Studio版本是2.2.5的话,重新生成代码还是没有的话就把RT-Thread Studio软件重启一下就有了;或者也可以自己创建一个。

import os
from building import *

cwd = GetCurrentDir()
src  = Glob('*.c')
# add cubemx drivers
src = Split('''
Src/stm32l4xx_hal_msp.c
Src/main.c
''')

path = [cwd]
path += [cwd + '/Inc']

group = DefineGroup('cubemx', src, depend = [''], CPPPATH = path)

Return('group')

如果在调试的时候外设寄存器里面是空的,那么就是SVD文件的路径有问题,打开调试配置(Ctrl+F5),在SVD Path下选择正确的路径。路径位置在RT-Thread Studio安装路径下:RT-ThreadStudio\repo\Extract\Chip_Support_Packages\RealThread\STM32L4\0.1.9\debug\svd。

物联沃分享整理
物联沃-IOTWORD物联网 » 使用RT-Thread Studio和STM32CubeMX创建新的RT-Thread项目

发表评论