分享

基于Matlab的STM32软件快速开发

 卤煮小鱼 2015-05-21

    学生在基于stm32的单片机程序,查到可以结合Matlab快速开发程序,有篇论文《基于Matlab的STM32软件快速开发方法》,有所介绍,但是整个过程并不是很清楚,尝试了一把,过程详细总结一下吧!

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

image

点击上图的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./learn/index.php/Learn_RapidSTM32_Home

    另外在http://www./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示波器

image

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

image

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

image

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

image

这时就变成一个接口了。

  并如下连接

image

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

image

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

image

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

image

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

image

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

image

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

image

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

image

设置完成,点击OK。

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

image

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

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

image

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

image

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

 

    以上演示了matlab与RapidSTM32模块的联合仿真,当然这只是开始,后面可以将此matlab仿真程序转化为c代码,这才是此RapidSTM32模块真正功能所在,所以在RapidSTM32模块的帮助,本来需要用c编写的程序,现在全部转化在matlab中完成了,是不是很赞!具体实现参考文献和网上资料吧!

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多