基于Matlab的STM32软件快速…

来源:互联网 发布:数据挖掘前景 知乎 编辑:程序博客网 时间:2024/05/16 12:12
原文地址:基于Matlab的STM32软件快速开发作者:我爱春秋

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

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

image

点击上图的Download Now即可。

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

How to install RapidSTM32 Blockset
=========================================================

1. Unzip rapidstm32_####.7z to any temporary directory.
   (#### represents releaseversion.)

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 yetinstalled)

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

   然后如果电脑上没有安装Keil RealView MDK for ARM,需要安装此程序,网上有破解版,按步骤正常安装就行。NETFramework 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 LibraryBrowser,新建一个模型,保存,取名为sin_boxing。然后向模型中插入如下模块

Simulink->Sinks->Scope示波器

image

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

image

RapidSTM32 Blockset->On-ChipPeripherals->Arbitrary–FunctionGenerator任意函数产生器,如下

image

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

image

这时就变成一个接口了。

  并如下连接

image

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

image

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

image

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

image

在Data for DAC1中输入刚才产生的y的所有值,由于数值比较多,可以如下操作,在matlab的CommandWindow中输入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
原创粉丝点击