打印
[开发工具]

MATLAB与STM32CubeMX联合

[复制链接]
2286|21
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
MATLAB与STM32CubeMX联合

使用特权

评论回复
沙发
goodluck09876|  楼主 | 2019-9-19 14:05 | 只看该作者
利用专门的软件STM32CubeMX与MATLAB进行嵌入式建模与仿真,仿真成功后,在编译器中将其翻译为高效的MDK C语言代码,大大提高了嵌入式程序的开发效率,缩短了开发周期,并且可以同时利用MATLAB的代码优化工具箱,提高代码质量。实验结果表明,利用MATLAB与STM32CubeMX生成的代码在目标系统中运行良好,在设计效率和易维护性方面优于手工编写的代码。

使用特权

评论回复
板凳
goodluck09876|  楼主 | 2019-9-19 14:06 | 只看该作者
2014年ST公司推出了官方的STM32CubeMX工具,为基于STM32所有系列的上百种芯片的嵌入式开发提供了强大的技术支持,使开发人员能够快速地完成STM32的开发和维护工作。传统的嵌入式开发主要有两种方法,一种是使用ST公司提供的固件库函数来配置CPU,建立工程后调用芯片内的各种功能;另一种是通过直接操作寄存器的方式使用STM32系列芯片。两种方法均要求开发者熟悉固件库函数或者能够准确地掌握众多寄存器结构及其定义,使开发者将大量精力花费在芯片本身的操作上,而不能有效地进行控制程序的算法设计。MATLAB是美国Mathworks公司开发的一款基于矩阵计算的高性能计算机软件,其包含众多的Simulink控制模块,让使用者能够在短时间内开发出理想的控制程序。MATLAB2015B版本更是集成了最新的Embeddedcoder功能,能够自动生成在嵌入式芯片运行的C语言代码,同时还能够对代码的结构和芯片的RAM使用效率进行优化,可以大大提高用户的开发效率,降低开发费用。本文介绍针对ST公司STM32CubeMX所支持的芯片与MATLAB进行联合开发,并通过实例介绍基于MATLAB控制的STM32嵌入式快速开发方法。

使用特权

评论回复
地板
goodluck09876|  楼主 | 2019-9-19 14:06 | 只看该作者
STM32-Matlab工具箱是ST公司推出的使用MATLAB的工具套件,使用STM32-Matlab工具箱能够快速为STM32芯片开发出基于MATLAB和Simulink的应用模型,通过USB数据线连接芯片串口后可以进行PIL(处理器循环)实时仿真,同时生成仿真报告并给出优化建议,大量节约开发时间与成本。该工具箱含有ADC、CAN、GPIO、SPI、USART等STM32芯片所有外设模块,并且能过通过MCU CONFIG模块设置任意一款STM32CubeMX所支持的芯片与MATLAB所自带的控制、函数模块(如高通滤波、PID控制等)进行联合编程,然后使用Embedded coder生成基于STM32Cube HAL libraries的C语言代码,而无需具体了解底层设备配置,不用手工编写C语言代码,能够同时满足对控制要求高而又有嵌入式编程需求的用户。

使用特权

评论回复
5
goodluck09876|  楼主 | 2019-9-19 14:07 | 只看该作者
为了保证软件的兼容性、可操作性和版本的连续性以
及计算机程序运行的流畅性,需要合理配置相关软件和硬
件。经过实验验证,在Microsoft Windows 7 下使用
STM32-Matlab模块的最低软硬件配置如下:
 MATLAB2015B     Version 8.6
 Simulink        Version 8.6
 MATLABCoder     Version 3.0
 MATLABCompiler    Version 6.1
 MATLABCompilerSDK  Version 6.1
 MATLABReportGenerator Version 4.2
 Microsoft.NetFramework Version 4.0
配置完成后,可在意法半导体公司的官方网站下载
STM32CubeMX和STM32-Matlab软件,下载完成后分别
安装好即可。

使用特权

评论回复
6
goodluck09876|  楼主 | 2019-9-19 14:07 | 只看该作者


当成功安装了STM32-Matlab工具箱后,新建一个
Simulink mode,进入Model configuration parameters模
式,找到Code Generation中的System target file并将其设
置更改为stm32.tlc,然后保存,打开系统仿真库(Simulink
library),找到Target support package-STM32Adapter中
的MCU CONFIG 模块,并将其添加到Simulink model
中,如图1所示

使用特权

评论回复
7
goodluck09876|  楼主 | 2019-9-19 14:08 | 只看该作者
双击该图标,在弹出的Block parameters对话框中,单击select STM32configuration file,选择通过STM32CubeMX已设置好外设的硬件目标板芯片型号(本文选择的是STM32F103ZET6,如图2所示)并保存,然后根据设计需要,在Target support package-STM32Adapte中合理地选择功能模块(比如GPIO、USART等)进行设计。对于应用于实际系统,在Simulink环境中可用多个子模块建立嵌入系统的软件模型。

使用特权

评论回复
8
goodluck09876|  楼主 | 2019-9-19 14:08 | 只看该作者

使用特权

评论回复
9
goodluck09876|  楼主 | 2019-9-19 14:08 | 只看该作者
在MATLAB/Simulink环境中建模并完成系统仿真的模
型,选择Simulink model中code命令中的子命令C/C++
code,并在利用Embedded coder功能后,会生成C语言代
码,其中包含用于建立工程的多个.c文件和.h文件。选
择Keil vision5作为目标嵌入式系统的软件编译环境。
在STM32CubeMX软件中,把已经设置好外设的目
标板芯片文件(IOC文件)进行C语言自动转换,将会得到
该型号芯片的底层硬件设备配置文件及驱动程序,最后将
Embedded coder 生成的main.c 代码移植到
STM32CubeMX生成的main.c文件中,对软件程序工程
进行编译,将编译结果下载到目标系统中执行,即可完成
设计工作。

使用特权

评论回复
10
goodluck09876|  楼主 | 2019-9-19 14:08 | 只看该作者
实际工程中经常需要对芯片进行GPIO接口的操作,
而且需要产生满足一定要求的信号波形,下面的实例说明
如何利用Simulink自带的函数发生器,快速操作I/O接
口并通过DAC 模块转换成需要的波形。本设计中让
STM32的DAC分别产生正弦信号(y=sin(0.5×x))以及
单位脉冲信号波形。

使用特权

评论回复
11
goodluck09876|  楼主 | 2019-9-19 14:09 | 只看该作者

使用特权

评论回复
12
goodluck09876|  楼主 | 2019-9-19 14:09 | 只看该作者
在Simulink中运行Embedded code将会生成一个模型名_STM32文件夹,该文件中包含一系列.c及.h文件,将该文件夹中.c文件移动到Src文件夹,.h文件文件移动到Inc文件夹中,并将main.c中的代码移植到MKDARM文件夹中的main.c文件中。将工程编译好后,下载到目标开发板中并用示波器测量DAC1(见图4)、DAC2(见图5)端口输出波形。

使用特权

评论回复
13
goodluck09876|  楼主 | 2019-9-19 14:10 | 只看该作者

使用特权

评论回复
14
goodluck09876|  楼主 | 2019-9-19 14:10 | 只看该作者
利用MATLAB与STM32CubeMX可以同时实现复杂的控制算法与嵌入式代码编程,与传统的开发方式相
比,无论在质量上还是效率上均有较大提高,特别适合于
对控制算法要求较高的嵌入式编程环境

使用特权

评论回复
15
幸福至上| | 2019-10-2 10:52 | 只看该作者
有趣,这就是基于模型的嵌入式开发设计,matlab和cubeIDE都在用,这个上手难度还是不低。做带UI界面,LWIP联网加机器控制的应用,这种开发方式可行吗?

使用特权

评论回复
16
磨砂| | 2019-10-15 12:07 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
17
晓伍| | 2019-10-15 12:10 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
18
八层楼| | 2019-10-15 12:12 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
19
观海| | 2019-10-15 12:39 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
20
guanjiaer| | 2019-10-15 12:43 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

220

主题

5843

帖子

21

粉丝