硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3394|回复: 39
收起左侧

[RTOS] 【视频教程】踩坑排雷,手把手最新版MDK5.42联合STM32CubeMX使用RTE方式创建RTX5/FreeRTOS全家桶源码工程(2025-03-10)

  [复制链接]

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116197
QQ
发表于 2025-3-10 02:42:56 | 显示全部楼层 |阅读模式
说明:
1、进入新版MDK5.41/5.42后,MDK RTE的STM32创建不再支持经典方式,导致使用非常麻烦,完全不兼容之前的用法了。所以我们之前已经发布的综合模板就没有再使用RTE创建了,而是源码创建。
     前几天发帖详细探讨了这个问题:
     最新版MDK5.41联合STM32CubeMX差点将MDK经典的RTE用法折腾完犊子,堪称2025最强坑王组合

2、经过两天的摸索,已经将新版RTE配合STM32CubeMX创建RTX/FreeRTOS全家桶源码方式摸索明白了,本贴为此而生。



视频

https://www.bilibili.com/video/BV1gxReYxET5



开发环境准备

·1、软件版本
(1) MDK5.41,自带CMSIS 6.1.0,官方下载 : https://www.keil.com/fid/gkrgo6w ... es/eval/mdk_541.exe
(2) MDK5.42,自带CMSIS 6.1.0,官方下载 : https://armkeil.blob.core.windows.net/eval/MDK542.exe
(3) RTX中间件源码V8.0.0 (MDK5.42自带,MDK5.41要单独安装):Keil.MDK-Middleware.8.0.0.pack (12.72MB)
(4) CMSIS-RTX源码V5.9.0 (MDK5.41/5.42自带)
(5) CMSIS-FreeRTOS源码 V11.1.0 :ARM.CMSIS-FreeRTOS.11.1.0.pack (4.13MB)
(6) MDK STM32H7 PACK版本V4.0.0:Keil.STM32H7xx_DFP.4.0.0.pack (12.48MB)
(7) MDK STM32F4 PACK版本V3.0.0 :Keil.STM32F4xx_DFP.3.0.0.pack (1.98MB)
(8) STM32CubeMX6.13或者最新的6.14:en.stm32cubemx-win-v6-13-0.zip (587.18MB)
(9) CubeMX使用的H7版本V1.12.1 (使用CubeMX安装)
(10) CMSIS-Toolbox版本V2.8.0 (MDK5.42自带,而MDK5.41里面是低版本,跟下面的CubeMX启动失败对应):cmsis-toolbox-windows-amd64.zip (16.85MB)
(11) CMSIS-Driver-STM32 V1.1.0:  ARM.CMSIS-Driver_STM32.1.1.0.pack (398.37KB)

2、RTE中CubeMX启动失败解决办法

Error : generator 'CubeMX' missing. Install from 'https://www.st.com/en/development-tools/stm32cubemx.html#st-get-software'

https://www.armbbs.cn/forum.php?mod=viewthread&tid=127682

3、MDK5.42安装失败解决办法

https://www.armbbs.cn/forum.php?mod=viewthread&tid=127775

123.png

视频中制作的案例下载:

方便大家对比参考

RTE RTX Template.7z (1.17MB)








回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116197
QQ
 楼主| 发表于 2025-3-10 03:07:40 | 显示全部楼层
更新完毕。
回复

使用道具 举报

24

主题

83

回帖

155

积分

初级会员

积分
155
发表于 2025-3-10 09:30:06 | 显示全部楼层

感谢硬汉,赶紧学习下
回复

使用道具 举报

4

主题

1449

回帖

1461

积分

至尊会员

积分
1461
发表于 2025-3-10 09:43:39 | 显示全部楼层
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2025-3-10 11:56:17 | 显示全部楼层
Rebuild started: Project: Test
*** Using Compiler 'V6.23', folder: 'E:\Keil_v5\MDK\ARM\ARMCLANG\Bin'
Rebuild target 'Target_1'
Error instantiating RTE components
Error #546: Required input file from generator CubeMX: 'E:/My_Workspace/RTX/Project/STM32CubeMX/Target_1/Test.cgen.yml'' is not loaded, errors by load
Target not created.
Build Time Elapsed:  00:00:00
Creating E:/My_Workspace/RTX/Project/Test.Target_1.cbuild-gen.yml
Creating E:/My_Workspace/RTX/Project/Target_1.cbuild-gen-idx.yml
Launching CubeMX
E:\Keil_v5\MDK\ARM\cmsis-toolbox\bin\cbridge.exe E:\My_Workspace\RTX\Project\Target_1.cbuild-gen-idx.yml
Launching STM32CubeMX with -s  E:\My_Workspace\RTX\Project\STM32CubeMX\Target_1\project.script
exec: "E:\\STM32CUBEMX/jre/bin/java.exe": file does not exist
请问这个是什么问题啊,怎么解决一下啊。
回复

使用道具 举报

11

主题

694

回帖

727

积分

金牌会员

积分
727
发表于 2025-3-10 14:05:52 | 显示全部楼层
请教一下,STM32F429及STM32F407都需要这样?本打算用RTE,看来还有点麻烦了。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116197
QQ
 楼主| 发表于 2025-3-11 04:50:54 | 显示全部楼层
123Q 发表于 2025-3-10 11:56
Rebuild started: Project: Test
*** Using Compiler 'V6.23', folder: 'E:\Keil_v5\MDK\ARM\ARMCLANG\Bin ...

看着像是你的STM32CubeMX没有安装。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116197
QQ
 楼主| 发表于 2025-3-11 04:52:47 | 显示全部楼层
hqgboy 发表于 2025-3-10 14:05
请教一下,STM32F429及STM32F407都需要这样?本打算用RTE,看来还有点麻烦了。

使用经典方式不需要。

不过现在新版不支持经典方式了,环境弄好后也挺方便。
回复

使用道具 举报

0

主题

3

回帖

3

积分

新手上路

积分
3
发表于 2025-3-11 11:22:50 | 显示全部楼层
楼主帮忙看看,为什么引用的地址少了一部分
rte_error.png
回复

使用道具 举报

0

主题

3

回帖

3

积分

新手上路

积分
3
发表于 2025-3-11 11:27:23 | 显示全部楼层
安装上了,前面都顺利,打开文档时,出现地址缺了一部分,进不去
rte_error.png
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116197
QQ
 楼主| 发表于 2025-3-12 08:59:47 | 显示全部楼层
ghclququ 发表于 2025-3-11 11:27
安装上了,前面都顺利,打开文档时,出现地址缺了一部分,进不去

这个没关系,可以直接进入到CMSIS安装目录里面去打开。
回复

使用道具 举报

11

主题

694

回帖

727

积分

金牌会员

积分
727
发表于 2025-3-12 09:33:45 | 显示全部楼层
eric2013 发表于 2025-3-11 04:52
使用经典方式不需要。

不过现在新版不支持经典方式了,环境弄好后也挺方便。

经典方法,发现对版本要求严格,需要一致。407,429都没标准库了,只能上HAL库了。
回复

使用道具 举报

0

主题

3

回帖

3

积分

新手上路

积分
3
发表于 2025-3-12 11:28:11 | 显示全部楼层
ghclququ 发表于 2025-3-11 11:22
楼主帮忙看看,为什么引用的地址少了一部分

发现不是单纯的RTE界面的文档链接打不开,pack installer 的链接点击也会出现can't open 提示,可能是安装哪里出现问题了
回复

使用道具 举报

0

主题

5

回帖

5

积分

新手上路

积分
5
发表于 2025-3-17 00:40:32 | 显示全部楼层
这个版本兼容性问题让人郁闷了小半年了,RTX编程也耽误了,因为一直在忙项目,所以软件都不敢动,感谢硬汉楼主辛勤排雷了!接下来抽时间按说明重装一下,有问题再请教楼主,再次真诚感激楼主砥砺前行!!!
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116197
QQ
 楼主| 发表于 2025-3-18 08:13:36 | 显示全部楼层
5.42a解决了5.42时的安装bug
回复

使用道具 举报

0

主题

5

回帖

5

积分

新手上路

积分
5
发表于 2025-3-19 08:43:11 | 显示全部楼层
eric2013 发表于 2025-3-18 08:13
5.42a解决了5.42时的安装bug

新版MDK5.42a和STM32CubeMX已安装运行正常,但先前版本CubeMX生成的带HAL库的程序在新环境下编译,又重复加载了一遍CMSIS下的HAL库,导致程序容量过大编译报错,请问这个问题应该怎么处理,让老程序在新版本环境也能正确使用?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116197
QQ
 楼主| 发表于 2025-3-19 09:40:26 | 显示全部楼层
adlai 发表于 2025-3-19 08:43
新版MDK5.42a和STM32CubeMX已安装运行正常,但先前版本CubeMX生成的带HAL库的程序在新环境下编译,又重复 ...

先前版本的程序也是MDK RTE + CubeMX生成的吗。

如果是,之前用的那个MDK版本创建的,保证用这个MDK版本打开即可。
回复

使用道具 举报

0

主题

5

回帖

5

积分

新手上路

积分
5
发表于 2025-3-19 10:42:04 | 显示全部楼层
eric2013 发表于 2025-3-19 09:40
先前版本的程序也是MDK RTE + CubeMX生成的吗。

如果是,之前用的那个MDK版本创建的,保证用这个MDK版 ...

先前版本的程序是先用CubeMX生成的配置程序框架,自己再编写控制逻辑,没有使用RTE。这样的生成的程序在新环境编译时从新的Cmsis位置又添加了一遍HAL库文件,导致程序太大报错,怎么处理才能移植到新版MDK5.42 RTE+CubeMX环境?否则只能先用MDK5.42 RTE+CubeMX生成程序框架,再手动恢复控制逻辑程序,真是这样很难保证原先程序的正确性和一致性,维护起来没有连贯性真的很头疼。我的工作电脑还得保留原先MDK5.41和CubeMX6.30.0版本不敢动!如何是好呀?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116197
QQ
 楼主| 发表于 2025-3-20 09:18:49 | 显示全部楼层
adlai 发表于 2025-3-19 10:42
先前版本的程序是先用CubeMX生成的配置程序框架,自己再编写控制逻辑,没有使用RTE。这样的生成的程序在 ...

那不行,如果你之前是CubeMX独立创建的。

不支持再使用RTE创建了,实际上这两个用法是二选一的
回复

使用道具 举报

1

主题

30

回帖

33

积分

新手上路

积分
33
发表于 2025-3-28 09:48:09 | 显示全部楼层
大佬太强了
回复

使用道具 举报

6

主题

84

回帖

102

积分

初级会员

积分
102
发表于 2025-4-7 00:27:46 | 显示全部楼层
在Pinout&Configuration 的 System core的NVIC里面,点击Code generation,在Generate IRQ Handler里面的SDMMC1 global interrupt、system_tick_time、System Sevice call、Pendable request...关掉就不会生成中断函数
cubemx.png
回复

使用道具 举报

6

主题

84

回帖

102

积分

初级会员

积分
102
发表于 2025-4-7 00:29:48 | 显示全部楼层
在配置RTX5的时候,如果编译出现Cannot link object rtx_delay.o as its attributes are incompatible with the image attributes.的话,可以参考这个链接解决https://www.cnblogs.com/Fosi/p/18593861
回复

使用道具 举报

0

主题

10

回帖

10

积分

新手上路

积分
10
发表于 2025-4-7 17:52:42 | 显示全部楼层
本帖最后由 18210325409 于 2025-4-8 09:29 编辑

大佬,为什么我的Device中只有一个CubeMX啊,将DFP和CMSIS的版本降下去后就又有了startup


回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116197
QQ
 楼主| 发表于 2025-4-8 10:14:09 | 显示全部楼层
18210325409 发表于 2025-4-7 17:52
大佬,为什么我的Device中只有一个CubeMX啊,将DFP和CMSIS的版本降下去后就又有了startup

图没有上传成功,得单独上传下




回复

使用道具 举报

0

主题

10

回帖

10

积分

新手上路

积分
10
发表于 2025-4-8 14:42:50 | 显示全部楼层
eric2013 发表于 2025-4-8 10:14
图没有上传成功,得单独上传下

回复

使用道具 举报

0

主题

10

回帖

10

积分

新手上路

积分
10
发表于 2025-4-8 14:46:44 | 显示全部楼层
eric2013 发表于 2025-4-8 10:14
图没有上传成功,得单独上传下

这个是出现的问题还有我的一些版本
111.png
222.png
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116197
QQ
 楼主| 发表于 2025-4-9 10:27:19 | 显示全部楼层
18210325409 发表于 2025-4-8 14:46
这个是出现的问题还有我的一些版本

你这个是对的,没有问题,现在新版就是只有一个CubeMX,我工程这里的Startup是武汉芯源的一个启动文件

23.png
回复

使用道具 举报

0

主题

10

回帖

10

积分

新手上路

积分
10
发表于 2025-4-9 11:35:44 | 显示全部楼层
哦哦好的,感谢大佬,这样生成工程后includePath中是空的,就是要自己手动去一个一个添加了吧
keil是可以正常跳转,但是vscode就不行了

回复

使用道具 举报

0

主题

3

回帖

3

积分

新手上路

积分
3
发表于 2025-4-10 08:46:15 | 显示全部楼层
最近有个项目想用RTX,请问大佬,使用最新的好呢,还是用经典方式好?用最新的方式是不是就意味着不再使用RTE了,完全依靠CUBEMX?那么RTE不就没有用了?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116197
QQ
 楼主| 发表于 2025-4-10 09:59:22 | 显示全部楼层
18210325409 发表于 2025-4-9 11:35
哦哦好的,感谢大佬,这样生成工程后includePath中是空的,就是要自己手动去一个一个添加了吧
keil是可以 ...

这个路径是MDK自动管理了,不需要在MDK里面再添加。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116197
QQ
 楼主| 发表于 2025-4-10 10:01:01 | 显示全部楼层
Jawey 发表于 2025-4-10 08:46
最近有个项目想用RTX,请问大佬,使用最新的好呢,还是用经典方式好?用最新的方式是不是就意味着不再使用R ...

1、要看下你用的那款芯片,F4系列的话,推荐继续用经典方式,H7系列一直都不支持经典方式,仅支持CubeMX
2、新版的,统一了,不再支持经典方式,统一仅支持RTE+CubeMX
回复

使用道具 举报

0

主题

10

回帖

10

积分

新手上路

积分
10
发表于 2025-4-10 10:23:07 | 显示全部楼层
eric2013 发表于 2025-4-10 10:01
1、要看下你用的那款芯片,F4系列的话,推荐继续用经典方式,H7系列一直都不支持经典方式,仅支持CubeMX
...

大佬你是直接用Keil开发吗,我用VSCode要怎么兼容呢,我用VScode的插件Keil Assistant打开项目后头文件都找不到,我尝试将路径添加到includePath中,但是还是有一部分找不到,而且将RTX5的cmsis_os2.h所在的文件夹绝对路径添加后,原本hal库的一些东西就全部找不到了,像__IO、uint32_t这些都找不到了

111.png
回复

使用道具 举报

0

主题

10

回帖

10

积分

新手上路

积分
10
发表于 2025-4-10 10:52:15 | 显示全部楼层
我发现如果是cubeMX生成的代码,会在Device目录下将core_cm7.h这些文件复制下来从项目中找,但是如果先启动keil,然后在keil中启动cubeMx就不会将core_cm7.h这些文件放到项目中,而是直接去keil安装目录下找了,感觉像是这种情况导致了找不到头文件
回复

使用道具 举报

0

主题

3

回帖

3

积分

新手上路

积分
3
发表于 2025-4-10 13:46:24 | 显示全部楼层
本帖最后由 Jawey 于 2025-4-10 15:24 编辑
eric2013 发表于 2025-4-10 10:01
1、要看下你用的那款芯片,F4系列的话,推荐继续用经典方式,H7系列一直都不支持经典方式,仅支持CubeMX
...

感谢,请问创建项目使用经典方式的话,F4的MDK PACK使用哪个版本的呢?昨天尝试经典方式创建工程,用了最新的3.0.0发现RTE配置界面没有STARTUP,才找到这个帖子发现PACK用的太新了,请问大佬有推荐的稳定的版本吗,目前KEIL是5.36,是不是除了KEIL和MDK_PACK以外其他的软件使用最新的版本即可?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116197
QQ
 楼主| 发表于 2025-4-11 11:12:28 | 显示全部楼层
18210325409 发表于 2025-4-10 10:23
大佬你是直接用Keil开发吗,我用VSCode要怎么兼容呢,我用VScode的插件Keil Assistant打开项目后头文件都 ...

如果你是VSCode的话,得用MDK6了,这个是套壳的VSCode,完美兼容RTE。

可以试试
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116197
QQ
 楼主| 发表于 2025-4-11 11:15:09 | 显示全部楼层
Jawey 发表于 2025-4-10 13:46
感谢,请问创建项目使用经典方式的话,F4的MDK PACK使用哪个版本的呢?昨天尝试经典方式创建工程,用了最 ...

F4用2.16或者2.17均可,MDK使用5.30,  使用5.36应该也行,MDK自带的CMSIS相关软件包切勿升级

基于STM32F429的RTX5+RL-USB+RL-FlashFS+RL-TCPnet+emWin6.x综合模板发布,含MDK AC5和AC6,,升级至V1.1(2021-03-08)
https://www.armbbs.cn/forum.php? ... 4181&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

0

主题

3

回帖

3

积分

新手上路

积分
3
发表于 2025-4-11 14:40:55 | 显示全部楼层
eric2013 发表于 2025-4-11 11:15
F4用2.16或者2.17均可,MDK使用5.30,  使用5.36应该也行,MDK自带的CMSIS相关软件包切勿升级

基于STM3 ...

非常感谢大佬,昨天折腾一天成功创建工程,软件是KEIL5.36 + 编译器V6.16+ CMSIS 5.7.0 +DFP 2.17.1。我经典方式创建成功了,初版工程是CUBEMX建立的然后RTE移植RTX5。然后我发现这个版本也可以在KEIL创建新工程之后在KEIL内打开CUBEMX进行配置和生成工程,和新方式差不多,但是这种方法不会把CUBEMX生成的硬件初始化代码给加入到我的工程里面去(如gpio.c,usart.c)。手动添加进工程后编译通过。请问新的方式,外设的配置是不是不能在RTE中配置了,因为我选了CUBEMX后就没有RTE_Device.h文件了,也就没法在keil内配置外设的参数了。
回复

使用道具 举报

0

主题

10

回帖

10

积分

新手上路

积分
10
发表于 2025-4-11 16:36:32 | 显示全部楼层
eric2013 发表于 2025-4-11 11:12
如果你是VSCode的话,得用MDK6了,这个是套壳的VSCode,完美兼容RTE。

可以试试

好的好的,非常感谢
大佬有研究过双核怎么开发吗,最近有需求stm32h747,一点头绪都没
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116197
QQ
 楼主| 发表于 2025-4-12 09:11:54 | 显示全部楼层
18210325409 发表于 2025-4-11 16:36
好的好的,非常感谢
大佬有研究过双核怎么开发吗,最近有需求stm32h747,一点头绪都没

STM32H747/H745双核调试说明
https://www.armbbs.cn/forum.php? ... 3167&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

0

主题

10

回帖

10

积分

新手上路

积分
10
发表于 2025-4-21 15:42:47 | 显示全部楼层
好的好的,感谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-6-9 21:19 , Processed in 0.639146 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表