手把手教你从零开始使用Matlab联合STM32CubeMX以及Keil开发一个STM32的简单程序 您所在的位置:网站首页 jlink驱动安装包运行不了 手把手教你从零开始使用Matlab联合STM32CubeMX以及Keil开发一个STM32的简单程序

手把手教你从零开始使用Matlab联合STM32CubeMX以及Keil开发一个STM32的简单程序

2023-05-06 09:04| 来源: 网络整理| 查看: 265

开篇语:之前的时候一直使用keil单独的做STM32的程序,或者结合STM32CubeMX生成一些底层的驱动,但是这种方法应用层的代码几乎需要完全的手写,其效率和可视化程度是比较低的,正好前一段之间也在使用Matlab做一些应用层的逻辑开发,所以就想到能不能把两者结合起来,这样的话就能实现底层和应用层都能自动生成代码的目的,于是开始了这样的一个探索,经过了一天的不懈奋斗,终于把一个简单的程序调通了,有了这样的方法论的东西,后边增加功能就是小菜一碟了,这个后边会逐步的提到。

看到网上不少的朋友也遇到了很多的坑,所以今天打算把这个整理出来,供大家参考,如果觉得还不错的话,记得点赞哦!

基础环境搭建

工欲善其事必先利其器,首先我们需要准备好所有需要的软件环境,正如标题中提到的,需要安装以下的几个:

第一:Matlab,版本可以自己选择,我这边安装的是2018b,大家可以自行去网上下载,我这边也给大家提供一个可以下载的地址,有需要的可以联系;

第二:STM32CubeMX,这个软件在ST的官网就可以下载,而且可以下载任意版本的

根据自己的系统选择,再选择合适的版本即可,这里重点说明以下,如果使用的matlab2018b的版本,STM32CubeMX的版本可以使用5.3.0的版本,小编在一开始就入了这样的一个坑,STM32CubeMX使用的最新的版本,最后生成代码的时候总是有问题,后来更换了版本之后,才把问题解决。

下载的链接地址也附在这里:

https://my.st.com/content/my_st_com/en/products/development-tools/software-development-tools/stm32-software-development-tools/stm32-configurators-and-code-generators/stm32cubemx.html

第三:STM32的matlab的toolbox,这个在ST的官网上也有提供,直接下载即可,非常的方便

如果不晓得如何查找,也可以通过如下的链接直接访问:

Home - STMicroelectronics

第四:MDK开发环境,也就是Keil,相信玩过STM32单片机的朋友应该都比较熟悉这个软件,入门必备啊,当前安装的话基本都是5.0以后的版本了,就安装最新的版本就行。如果找不到资源的话可以联系小编,我有自己的私货,但是毕竟不适于广泛传播,所以有需要的朋友单独联系吧,相信你们都是可以找到资源的。

以上的四个是必须需要使用的软件,每个软件都有自己的软硬件安装要求,比如STM32CubeMX需要有java的运行环境,Matlab需要有足够的硬盘空间等等,这个大家自己探索,我这里就不详细的说了。总之,先把这四个软件准备好,不然后续的工作没有办法开展。

硬件准备

前边一个章节主要是需要准备的软件环境,玩单片机没有硬件也不行,我们今天讲解的实例所使用的硬件主要有两个:

第一:调试下载器J-Link

我用的是这一款,可以下载也可以调试,价格也不贵,淘宝上有很多的货源

我这里推荐了一款,大家也可以去淘一下,找找更便宜的产品,但是我建议不要太贪图便宜,很多时候便宜确实没好货,这个也不是正版的,估计也是自己做的,毕竟J-Link的软硬件设计网上都有公开的资料。

第二:STM32的开发板

这个是跑程序必须的硬件,开发板的等级自由选择,只要有相应的文档资料就行,我这边使用的是正点原子的精英板,因为是很早之前买的,如果想用这一款的朋友可以通过如下的链接购买

这里给点建议,如果你想要深入学习STM32就需要买一块类似于这样的功能比较丰富的开发板,为以后的使用铺好路,毕竟一块开发板用个三五年也坏不了,太过于简单的开发板会成为你后边学习道路的绊脚石,而且你可能还需要继续购买新的开发板,小编就是前前后后买了三四块板子,基于惨痛的教训,给你的经验。

当然,如果你购买的是类似于正点原子精英板这样的开发板,你也可以不买上面的调试器,他这个开发板有串口下载程序的功能,可以通过一个串口线把程序下载进去,缺点就是只能下载程序,不能调试,这个没有问题,可以在以后编写大程序的时候再购置调试器也是可以的。

正式开始

软硬件都准备到位之后,我们就进入正题

第一,打开STM32CubeMX程序,进入界面之后可以在首页通过以下任何一个方式开始创建一个工程

我一般喜欢从选择型号开始

然后会进入到如下的界面,在这个界面的左侧你需要选择大的型号是哪个,然后右侧就会出现具体的型号,你在根据自己的开发板的芯片类型,选择对应的,双击即可进入配置界面。

这里需要提醒一下,你可以选择型号的前提是,已经在STM32CubeMX里面安装了对应的package,这个可以通过help菜单下的"Embedded Software Package Manager"查看和安装,比如我的这个就只安装了F1的package

所以,在这一步我也只能选择F1的MCU型号。

进入到配置界面之后,我们首先配置一下RCC,配置成为外部时钟

然后,再配置GPIO,我这边是按照正点原子的精英板设计配置的,LED0对应的是PB5,LED1对应的是PE5

将PB5配置为GPIO_OUTPUT

将PE5也配置为GPIO_OUTPUT

在GPIO的配置界面分别对参数进行如下配置:

GPIO配置完成之后,进行时钟配置,通过上方的菜单可以自由切换

在时钟配置里,我们把外部时钟设置为开发板的晶振大小,我这里是8M,所以填写8,总线时钟配置为72M,这个可以通过中间的倍频自己调整,我的调整如下:

时钟配置结束之后进行项目的配置

项目的路径啥的自己设置就好了,但是这里要记住自己的路径哦,后边matlab设置的时候是需要的,而且需要保持一致,后边会提到。

toolchain的选择,我们就选择MDK-V5

好了,到此为止,STM32CubeMX的项目设置结束了

注意:这里不需要生成代码,这里不需要生成代码,这里不需要生成代码

把工程保存即可,保存的.ioc文件会在Matlab中使用到。

下一小章节

打开matlab,首先设置路径

通过这个菜单进入设置路径

通过添加并包含子文件夹的功能,把STM32-MAT安装路径下的所有文件添加到这里

可以看到这里需要添加的很多,但是一定要添加,需要使用。

然后将Matlab的工作路径切换到上一章节讲到的STM32CubeMX的工程路径下

打开simulink,创建一个空白的模板

打开空白模板后,首先对simulink进行配置

选择这个地方的"Mode Configration Parameter",打开如下

网上的教程一般都说先配置解释器,参数如下,可以参考这个配置一下

小编觉得这个不是特别重要,毕竟参数只影响解释器的工作频率和方式,并不影响逻辑。下面的是比较重要的

Code Generation需要选择stm32.tlc

这个通过后边的浏览就可以找到相应的选项

选完之后,下边的内容就会自动发生变化,不需要再单独设置,确认和这里展示的一样即可。

然后,设置STM32 Options,如下图所示,一定确定勾选这几项,并且保证这里的路径是你对应程序的安装路径,否则会影响后边的代码生成。

.ioc文件的路径这里如果没有也不要着急,后边会有设置。

设置完成以后,下一步,想simulink模型中添加一个STM32的MCU配置模块

通过如下菜单打开library

在library内找到相应的模块

将其直接拖拽到simulink模型中即可

双击模型中的STM32MCU配置,打开如下界面

在这里添加我们在STM32CubeMX中创建的.ioc文件,添加完成后,相应的单片机型号就会被展示在模块上

接着我们在matlab中搭建逻辑模型,需要点亮LED灯,只需要相应的IO输出低电平即可,这个是和LED的电路设计有关的,比如我使用的这个LED设计如下:

IO输出低电平的时候,LED才会亮,不过无所谓,不管是高还是低电平,都是需要向IO写状态,我们这里需要调用GPIO的write模块

还是拖拽进来,这里有可能会出现如下的错误

这个没有问题的,不需要担心,点击ok过去就可以,这里出现错误是因为还没定义IO,定义了IO就好了。

然后,我们设计一个逻辑,让数值等于1的时候写GPIO PB5,数值等于3的时候写GPIO PE5,逻辑框图如下:

可以自行搭建一下,这里不再细说。

搭建完成以后,可以在simulink内仿真一下,仿真之后如下所示:

这个和我们期望的结果是一样的,逻辑没有问题,就可以编译simulink模型,生成代码了,可以通过CTRL+B,或者菜单按钮,都是可以的

这里成功编译之后,进入到关键的一步。

再次回到STM32CubeMX软件(非常重要,我这里栽了坑,我看很多网友也遇到了这个问题)

点击右上角的生成代码

只有在这里才可以生成MDK的工程,matlab里面可以生成的只是应用层逻辑代码。

在这里生成代码以后,就有了MDK的工程,生成的文件夹结果如下:

在Keil中打开的工程文件结构如下:

在keil中编译工程,针对我使用的这一款片子,不需要做任何修改,即可编译成功。

然后下载程序到开发板,效果如下所示:

至此,一个完全自动化代码生成的程序就完成了。

遇到的最大的坑

在文中提到了一些注意事项,就是为了避免大家出现同样的问题,这其中最大的坑就是软件版本的问题。

最早的时候我使用的是Matlab2018b加上STM32CubeMX6.2.0版本,过程中没有任何问题,就是最后生成不了可以调用matlab应用层逻辑的MDK工程,自动手动添加可以不能实现功能,所以后来又把STM32CubeMX降到5.3.0版本,这个问题就解决啦!

相信很多小伙伴会遇到这个问题,遇到了之后可以尝试以下版本切换,按照小编本文的版本搭配试一下,一般应该是可以解决问题的。

码字真的好累啊!调试这个工程花费了一天的时间,把这个工程分享给大家码字也码了半天,啥时候可以自动生成这样的文章就好了,就像代码自动生成一样,准确又高效!



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有