Matlab&Simulink开发STM32F4

来源:在接触MATLAB的几年中,发现MATLAB在功能上越来越强大,在结合simulink上开发许多的嵌入式原型产品发挥了很大的实时仿真能力,由于平时在实验室里接触过很多开源的东西,在心里面很喜欢这样的开源文化,偶然中,在网上看见国外的Maker与Hacker爱好者用matlab开发Arduino和树莓派等开源硬件,就思考就合周边的东西试想能不能用MATLAB开发,这样也进一步让自己在实践中更好的学习MATLAB和Simulink,果然在ST官方找到有结合MATLAB进行开发的开发库。

【1】开发库选择
在网上找支持matlab的stm32开发库时,接触了三种开发库:
1.ST官方的STM32-MAT/TARGET,支持F3,F4系列:http://www2.st.com/content/st_com/en/products/development-tools/software-development-tools/stm32-software-development-tools/stm32-utilities/stm32-mat-target.html
下载页面:


2.印度的aimagin公司开发的两种开发库:
下载地址:https://www.aimagin.com/download/
2.1较老版本的RapidSTM32 Blockset


     在看英文资料的过程中,貌似说只能开发F0系列。在用RapidSTM32 Blockset进行matlab开发环境配置时,虽然后面在遇见了许多的问题后,运行开发库自带的demo历程时在simulink界面进行模型编译时没有出错,但是在把stm32f1XX的开发板在电脑上识别后,在matlab命令行里面输入命令一直未能成功识别到开发板。
    经过仔细的看官方的开发资料和进行多次配置,都未能成功。总结原因如下:1)电脑的系统毕竟不是正版,而且matlab也只是国内大家都普遍使用的破解版,可能这是主要原因(后面和这方面的爱好者交流到,有人成功过~)。2)这个开发库时公司开发的,可能要结合到该公司的开发硬件才能配合使用。在淘宝上好奇的搜到了这种开发板居然叫价一千多。(当然是没有销量咯 安静
2.2教新版本的Waijung BlockSet

aimagin公司近几年开发的这款开发库,支持F4系列的STM32的开发,但是我在用STM32 DiscoveryF407进行仿真时,只在把Model模型编译后成功通过ST-Link下载到开发板上,实现了让PA12输出高电平点亮LED,后面就一直未能成功编译并下载,MATLAB也突然的出现faile后退出,后面经过多次尝试都不成功,就转战到用官方的基于matlab的仿真开发库。

图为成功检测到电脑安装了所有必要的软件后成功安装的Waijung BlockSet的simulink开发库。
以上两个开发库都不用再电脑上安装*.exe这样的一个程序,直接在matlab环境下设置matlab的工作环境到开发库的文件路径下,在命令行下或是直接选中install**这样一个M文件,选择‘run’后就会直接安装,其中有许多要注意的软件和底层环境要注意,否则不能成功安装。
【2】重点介绍:ST官方的STM32-MAT/TARGET开发库
1.安装STM32CubeMX  --用于生成配置文件
STM32CubeMX是ST官方开发的支持快速MDK-ARM工程文件生成的软件,可以直接编译成功后下载到目标开发板,省去了手工配置底层代码的工作,利用可视化图形窗口进行高效配置。利用官方的matlab开发库进行开发工作,要首先调用这个软件生成的配置文件,下载地址:http://www.st.com/web/cn/catalog/tools/FM147/CL1794/SC961/SS1533/PF259242?icmp=pf259242_prom_stm32cube-long-promo_feb2014
STM32CubeMX支持F0,F1,F3,F4,F7系列和L0,L1等的开发。


此外还有专门开发某一个系列的软件,如开发F4系列芯片的STM32CubeF4,读者后面可以专门选一个开发。
1.1软件主界面


在这里选中引脚,设置基本的数字或模拟输入/输出。
1.2时钟选择 --可视化

2.安装STM32-MAT/TARGET
在上面的链接中下载后得到一个安装包,点击里面的exe程序安装后得到***\STM32-MAT\STM32这样一个开发库。

这里可以看见,ST官方的开发库是基于matlab的Real-Time Workshop功能进行开发,然而在MATLAB R2012以前的版本中是需要单独安装Real-Time Coder和MATLAB Coder这些工具箱,如果是用matlab r2014开发就省去了这些繁杂和痛苦的安装。
直接双击startup.bat脚本就直接打开了电脑上安装的matlab开发环境。


在第一次运行时需要在matlab中设置pathtool。


选中后,保存!!!!!


【3】基于模型编译的嵌入式开发
通过一步一步的完成这些工作后,我们就可以在simulink中新建一个模型文件,配置生成嵌入式c代码,最后得到完整的MDK-ARM工程文件。然而笔者开这一步倒弄的很久,一方面是自己的对simulink的接触不够,没有看关于simulink使用的技术文档,二是对基于模型的嵌入式代码生成之前完全没有接触过,三是对设置模型的参数不清楚,比如离散模型,连续模型,变步长等等。这也是笔者觉得应该写一篇这样的对新东西的开发进行探索的博文,可以和大家更好的交流。
打开simulink后如果没有看见左侧的库浏览栏目里面有关于STM32的开发库,那可能是没有成功安装好,或者是暂时的没有出现,尝试重启一下电脑试试。安装成功后的效果如下,


通过浏览左侧的Target Support Package -STM32 Adaper,一些如GPIO,ADC,DAC,I2C,SPI,USART,CAN都得到了matlab的支持,可以快速在物理层面上搭建嵌入式原型,可以先仿真,再下载。

3.1下面新建一个流水灯的mode文件,进行模型验证,编译,c代码生成和工程文件编译。
最终的效果如下,



3.2在STM32CubeMX中新建一个GPIOS的ioc配置文件
这里设置PA1-PA5进行数字输出

别忘了对输出模式的配置,如上拉,下拉,推挽什么的。


3.2基本模块
在左侧拖入一个MCU CONFIG模块,双击进行设置。


1:可以直接点击"New ioc file"直接打开STM32CubeMX ;  2:选择建立好的ioc文件

3.3从左侧拖入GPIO Write模块,进行端口电平输出,设置所用引脚。

其他几个引脚如是设置好,选择一个计数器作为输入源,设置大家想要的采样时间,也可以参照上面的效果图设置好。

3.4模型验证
点击run后,模型验证会出现一堆错误和警告,原因是没有设置模型的仿真参数,以下教大家一步一步设置好。
solver: 变步长 fixed-up ,离散参数


Data Import/Export:不要选择,笔者在模型验证阶段,这个细节是经常被忽略了,最后也是在这里得到解决!!!!!



Optimization下的Signals and Parameters设置:



Simulation Target:




!!!! NOTE:
Code Generation:
系统对象文件选择,因为matlab不单单支持stm32的开发,对DSP和其它以ARM为内核的微控制器都有支持,这里要选择好!!!



选择stm32.tlc这一嵌入式对象文件,其它



STM32选项设置,



1处都要选上,如果编译过程中检测不到STM32CubeMX的路径,点击2处进行更新!!!!

【4】验证、编译


1处输出都没有,观察验证的结果。




模型验证成功!!!!!

对模型进行编译,生成嵌入式目标代码,点击Build Model,
[1首先是针对模型的头文件和源代码的生成,



[2]工程文件生成



最终效果!!!!!

【5】Keil工程





Keil工程编译,零错误。




下载到开发板,现象如下,

STM32F4开发板



间隔0.4秒的流水灯效果(因为前面的采样时间为0.4秒)




笔者通过对用matlab仿真开发STM32的一个接触,感受太深。首先资料是全英文的,看得是头大,很多细节的参数怎么设置都是一步一步摸索,上面把具体的参数设置都贴图了,希望可以帮助到大家。在请教师兄时说这个开发的效率还不如手工,确实有时候是这样,但是对新知识的追求和爱倒弄东西的情怀怎能阻挡自己,这种做事情的仿真思维是非常关键,特别是做大项目,前期有一个仿真,可以预测实际中出现问题的关键所在,对于及时的解决问题可是非常有针对性,节约大量的时间和资本。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值