[STM32H7] Cube-Keil上移植RTX5实时系统

[复制链接]
 楼主| drer 发表于 2021-9-4 17:28 | 显示全部楼层 |阅读模式
一、前言
在CM内核上,RTX5好像已经无敌了。为此,学习如何在STM32H743上完成RTX5的移植。
我使用的Keil版本:
4191661333c27652ac.png
一定要使用最新的CMSIS软件包。下载地址:https://www.keil.com/dd2/pack/
6236661333c2f1f36e.png
本次实验的工程分享:
链接:https://pan.baidu.com/s/1ENtnyZYiQmdRNC6BNUdFvQ
提取码:it0u


 楼主| drer 发表于 2021-9-4 17:29 | 显示全部楼层
二、CubeMX2.1、RCC 与 Clock Configuration

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbGxhY2U4OQ==,size_16,color_FFFFFF,t_70.jpg
watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbGxhY2U4OQ==,size_16,color_FFFFFF,t_70.jpg


 楼主| drer 发表于 2021-9-4 17:30 | 显示全部楼层
2.2、SYS的配置

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbGxhY2U4OQ==,size_16,color_FFFFFF,t_70.jpg


 楼主| drer 发表于 2021-9-4 17:30 | 显示全部楼层
2.3、GPIO的配置

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbGxhY2U4OQ==,size_16,color_FFFFFF,t_70.jpg


 楼主| drer 发表于 2021-9-4 17:31 | 显示全部楼层
2.4、DEBUG的配置

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbGxhY2U4OQ==,size_16,color_FFFFFF,t_70.jpg

 楼主| drer 发表于 2021-9-4 17:32 | 显示全部楼层
2.5、Project Manager

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbGxhY2U4OQ==,size_16,color_FFFFFF,t_70.jpg
watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbGxhY2U4OQ==,size_16,color_FFFFFF,t_70.jpg


 楼主| drer 发表于 2021-9-4 17:33 | 显示全部楼层
三、Keil3.1、Target

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbGxhY2U4OQ==,size_16,color_FFFFFF,t_70.jpg


 楼主| drer 发表于 2021-9-4 17:34 | 显示全部楼层
3.2、Output

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbGxhY2U4OQ==,size_16,color_FFFFFF,t_70.jpg
接着,编译一下工程。
watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbGxhY2U4OQ==,size_16,color_FFFFFF,t_70.jpg


 楼主| drer 发表于 2021-9-4 17:35 | 显示全部楼层
3.3、模板代码(main.c)

在main.c添加用户代码,用于测试基础模板是否能正常工作。经过我的测试,板子的LED灯闪烁。
watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbGxhY2U4OQ==,size_16,color_FFFFFF,t_70.jpg


 楼主| drer 发表于 2021-9-4 17:36 | 显示全部楼层
3.4、开始移植RTX5

点击Resolve之后,最后点击OK。
watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbGxhY2U4OQ==,size_16,color_FFFFFF,t_70.jpg


 楼主| drer 发表于 2021-9-4 17:37 | 显示全部楼层
弹出启动STM32CubeMX,点击启动。
watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbGxhY2U4OQ==,size_16,color_FFFFFF,t_70.jpg
这个STM32CubeMX的工程用于生成RTX5代码,跟原来工程模板上的那个不一样的。不小心关闭的话,会导致移植RTX5失败,请注意了。
watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbGxhY2U4OQ==,size_16,color_FFFFFF,t_70.jpg
watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbGxhY2U4OQ==,size_16,color_FFFFFF,t_70.jpg
 楼主| drer 发表于 2021-9-4 17:37 | 显示全部楼层
生成代码完毕后,可以关闭这个STM32CubeMX了。
watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbGxhY2U4OQ==,size_16,color_FFFFFF,t_70.jpg
回到Keil软件,可以看到多了一些文件。
watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbGxhY2U4OQ==,size_16,color_FFFFFF,t_70.jpg
 楼主| drer 发表于 2021-9-4 17:38 | 显示全部楼层
隔离Device与STM32CubeMX:Common Source下的文件。在文件下点击右键,选择“Options for component Class “Device”。接着,取消勾选Include in target build。
6078461333e4e7684a.png
隔离如下这些文件后,继续编译工程,发现还有3个错误。

3831761333e55daad7.png

 楼主| drer 发表于 2021-9-4 17:39 | 显示全部楼层
这三个函数,每一次使用CubeMX生成工程代码后,都要重新备注,这里需要注意!至此,清除所有错误后,RTX5移植成功。接下来还需要修改代码,让RTX5运行起来。
watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbGxhY2U4OQ==,size_16,color_FFFFFF,t_70.jpg
 楼主| drer 发表于 2021-9-4 17:40 | 显示全部楼层
四、代码4.1、main.h

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbGxhY2U4OQ==,size_16,color_FFFFFF,t_70.jpg


 楼主| drer 发表于 2021-9-4 17:41 | 显示全部楼层
4.2、main.c

在int main(void)之前,定义RTX5任务的一些变量。
watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbGxhY2U4OQ==,size_16,color_FFFFFF,t_70.jpg
在int main(void)之前,定义RTX5任务的一些变量。
watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbGxhY2U4OQ==,size_16,color_FFFFFF,t_70.jpg


 楼主| drer 发表于 2021-9-4 17:41 | 显示全部楼层
最后,编写三个函数的内容。
watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbGxhY2U4OQ==,size_16,color_FFFFFF,t_70.jpg
编译,烧写代码到STM32H743里,LED灯开始闪烁!
watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbGxhY2U4OQ==,size_16,color_FFFFFF,t_70.jpg
您需要登录后才可以回帖 登录 | 注册

本版积分规则

62

主题

3317

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部