您的位置:首页 > 编程语言 > MATLAB

基于Matlab的STM32软件快速…

2014-04-16 16:14 232 查看
原文地址:基于Matlab的STM32软件快速开发作者:我爱春秋
学生在基于stm32的单片机程序,查到可以结合Matlab快速开发程序,有篇论文《基于Matlab的STM32软件快速开发方法》,有所介绍,但是整个过程并不是很清楚,尝试了一把,过程详细总结一下吧!

首先需要安装RapidSTM32开发模块,网址为https://www.aimagin.com/download/





点击上图的Download Now即可。

下载完成后解压,文件how_to_setup.txt中详细说明了安装步骤

How to install RapidSTM32 Blockset

=========================================================

1. Unzip rapidstm32_####.7z to any temporary directory.

(#### represents release
version.)

2. Open Matlab

3. Open and run install_rapidstm32.m from Matlab environment

4. Install Keil RealView MDK for ARM (if not yet installed)

5. Install Microsoft dot NET Framework 3.5 (if not yet
installed)

第1步已经完成了,下一步打开matlab,在edit中打开install_rapidstm32.m文件运行,这将完成此模块的安装,另外还有个uninstall_rapidstm32.m文件,即如果不想用此模块了,可以运行此文件卸载模块。

然后如果电脑上没有安装Keil RealView MDK for ARM,需要安装此程序,网上有破解版,按步骤正常安装就行。NET
Framework 3.5也需要安装,不过貌似如果安装了VS,这个默认已经配置好了。

至此,模块就配置好了!

下面说说一个例子吧,此模块的官网上有不少资料,当然是英文的,但如果选择中文语言,就跳出404错误找不到网页,还是积极看英文吧,网址http://www.aimagin.com/learn/index.php/Learn_RapidSTM32_Home

另外在http://www.aimagin.com/learn/index.php/Your_First_Matlab/STM32_Program也讲了2个例子,基本也是一步一步教的,视频是在youtube上,看不了,不过最下面提供了例子和视频的下载链接,老外做东西就是厚道。

这里简单讲一个matlab协助产生正弦波的仿真例子:

首先用matlab产生正弦波的数据

clear

f=50;

w = 2*pi*f;

T = 1/f;

Ts = 1/(200*f);

t = 0:Ts:(T-Ts);

y = sin(w*t)+2;

plot(t,y)

即产生一个50Hz,时长一个周期0.02s的正弦波,采样周期0.0001s。y的值后面会用到,如何用,一会说。

matlab中输入simulink打开Simulink Library
Browser,新建一个模型,保存,取名为sin_boxing。然后向模型中插入如下模块

Simulink->Sinks->Scope示波器



RapidSTM32 Blockset->Device
Configuration->Setup System Clocks &
SysTick系统时钟,如下



RapidSTM32 Blockset->On-Chip
Peripherals->Arbitrary–Function
Generator任意函数产生器,如下



此模块只需要一个出口就够了,所以双击此模块,在属性对话框中设置Mode为Arbitrary DAC1,如下



这时就变成一个接口了。

并如下连接



然后进行仿真设置,选择菜单栏Simulation/Configuration
Parameters,选择Code
Generation,Matlab2011b是选这个,其他版本的matlab可能不同。设置Target
selection下的System target file为rapidstm32.tlc,language选为c,如下图



选择Code Generation下的RapidSTM32
Options,设置Cross-Compiler为Realview MDK,如下



下面设置加入的模块的参数,双击Arbitrary–Function
Generator,设置Sample time为0.0001



在Data for DAC1中输入刚才产生的y的所有值,由于数值比较多,可以如下操作,在matlab的Command
Window中输入y',即y的转置,复制显示的一列数值



粘贴到Data for DAC1中,点击Apply,数值自动变成如下格式



这时的数值是用;分号隔开的,这是一列,不能作为输入,需要转化为一行,方法很简单,定位到最后,在]后输入一个',即转置符



离开文本框,则自动转化为一行数据



设置完成,点击OK。

然后在空白处右击,弹出右键菜单,如下,点击Update Diagram



此后,matlab会快速更新、编译程序,编译成功后各模块变为红色。

设置工具栏上的仿真总时间为0.1,然后点击左边的三角号运行



运行结束后,双击示波器Scope,可以看到仿真结果



注意的是,在matlab的Command Window里会显示warning,不用管它,是设置的问题。

以上演示了matlab与RapidSTM32模块的联合仿真,当然这只是开始,后面可以将此matlab仿真程序转化为c代码,这才是此RapidSTM32模块真正功能所在,所以在RapidSTM32模块的帮助,本来需要用c编写的程序,现在全部转化在matlab中完成了,是不是很赞!具体实现参考文献和网上资料吧!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: