使用 Simulink 进行 STM32 编程

2023-11-03

目录

介绍
所需材料

  • 步骤 1:在MATLAB中设置STM32-MAT软件路径
  • 步骤 2:在STM32CubeMX中创建一个项目
  • 步骤 3:配置时钟和 GPIO 引脚
  • 步骤 4:项目经理并生成代码
  • 步骤 5:在 Simulink 中创建模型
  • 步骤 6:在模型中插入 STM32_Config 模块
  • 步骤 7:创建模型
  • 步骤 8:编译并生成代码
  • 步骤 9:将代码上传到硬件中

介绍

欢迎读者,在本博客中,我们将逐步介绍使用 Simulink 进行 STM32 编程的过程。在直接进入步骤之前,我们先讨论一下为什么需要使用Simulink对STM32进行编程?STM32采用ARM cortex M架构。由于其较低的成本和良好的性能,它被用于许多应用。使用 Arduino IDE 对 STM32 进行编程非常简单,因为人们开发了许多库。但是,当您开始开发复杂的嵌入式或控制系统时,使用 Arduino IDE 编写裸机代码是一件忙碌的事情。Simulink 的出现使这个过程变得更加容易。您可以使用块开发复杂的系统,并使用 Simulink 功能对其进行测试,然后生成可编译并生成二进制文件的“c”代码,以便该二进制文件可以直接闪存到 STM32 中。现在就完成了,复杂的系统已部署在物理层面。 在本博客中,我们将使用 Simulink 开发模型和嵌入式编码器,以生成同一模型 STM32CubeMX 的“c”代码,用于开发配置文件 (.ioc) 和 Keil 的 MDK-ARM 来构建项目并将其闪存到控制器中。我们将使用 STM32f103c8t6(也称为 Blue Pill)作为目标 MCU。

所需材料

让我们看一下所需的软件和软件包:

来自 MATLAB:

  • MATLAB 编码器(附加组件)

  • Simulink Coder(附加组件)

  • 嵌入式代码(附加)
    来自意法半导体:

  • STM32CubeMX
    用于开发 STM32 应用程序的 STM32-MAT/TARGET 工具包

  • STM32-MAT/TARGET 已从相应网站中删除。

以下任一工具链:

  • STMicroElectronics 的 STM32CubeIDE
  • 来自 Keil 的 MDK-ARM
  • IAR 的 EWARM

所需硬件:

  • STM32F103C8T6(蓝丸)微控制器
  • STLink v2
  • 面包板
  • 4 × 跳线

让我们逐步完成该过程。

  • Step-1:在MATLAB中设置STM32-MAT软件路径
    安装完所有软件和附加组件后,打开 MATLAB,选择“设置路径”选项,然后选择安装 STM32-MAT/TARGET 期间在位置“c:/MATLAB/STM32-MAT/STM”创建的文件夹工具包。

设置STM32-MAT文件的路径

在 MATLAB 中设置 STM32-MAT 文件的路径


选择STM32-MAT软件文件

注意:如果您在上述指定路径中没有找到 STM32 文件夹,请确保 STM32-MAT/TARGET 工具包已正确安装。单击此处下载该实用程序。

  • 步骤2:在STM32CubeMX中创建一个项目
    现在打开 STM32cubeMX 并通过选择“ACCESS TO MCU SELECTOR”创建一个新项目。

在STM32CubeMX中创建一个项目

在MCU/MPU选择器中,输入部件号“STM32F103C8T6”,并在列表中选择“STM32F103C8TX”选项,然后单击开始项目。

选择单片机

步骤 3:配置时钟和 GPIO 引脚
单击开始项目后,您将获得引脚分配视图。现在设置时钟。在系统核心中,选择“ RCC ”选项,然后在“ High-Speed Clock ”部分选择“ Crystal/Ceramic Resonator ”。

将时钟设置为水晶/陶瓷谐振器

现在设置 GPIO。选择“PC13”并将其设置为“GPIO_Output”。


选择 GPIO 并设置为输出

现在,在“系统核心”部分中选择“GPIO”选项,然后选择“GPIO”并选中修改后的复选框。现在更改引脚配置,如下图所示。

修改GPIO配置

第 4 步:项目经理并生成代码
现在打开项目管理器,如图所示编辑详细信息,然后单击生成代码。

关闭单击“代码生成”选项卡后弹出的打开的对话框,然后打开 MATLAB。

步骤 5:在 Simulink 中创建模型
在保存“ blink.ioc ”文件的同一文件夹中创建一个空白模型,如下图所示。

创建空白 Simulink 模型

现在从模拟选项卡打开模型设置并更改求解器部分中的参数,如下图所示。

配置求解器参数

打开“代码生成”选项卡,然后使用浏览选项选择“STM32.tlc”选项作为系统目标文件。现在选择“代码生成”部分下的“STM32 选项”。

更改系统目标文件

选中“STM32CubeMx路径更新”复选框并选择“更新安装路径”选项。现在应用更改并关闭“模型设置”对话框。

更新STM32CubeMX路径

步骤 6:在模型中插入 STM32_Config 模块

现在打开“Library Browser”并选择“STM32_Config”块,将此块添加到模型中。

选择STM32_Config模块

注意:如果您没有找到“Target Support Package – STM32 Adapter”选项,请确保 STM32-MAT/TARGET 工具包已正确安装。单击此处下载并正确安装。

双击“STM32_Config”块,在打开的对话框中选择“选择STM32配置文件”选项。现在选择在步骤 4 中创建的“.ioc”文件。

选择STM32配置文件

第 7 步:创建模型
通过选择并排列相同的块来完成建模,如下图所示。

选择 GPIO 和脉冲发生器模块

以下是脉冲块参数。

脉冲发生器块

Step-8:编译并生成代码
完成建模后,通过选择“建模”选项卡下的“更新模型”选项来编译模型。

编译模型

编译完成后,进入“APPS”部分并选择Embedded Coder。

启动嵌入式编码器应用程序

现在构建项目(可能需要一些时间)。下图第二个框中是Embedded coder生成的代码报告。

构建模型

步骤9:将代码上传到硬件中
代码报告生成后,打开“STM32CubeMx”并选择“生成代码”选项,现在出现一个对话框选项。选择“打开项目”选项。

生成代码

在打开 MDK-Keil IDE 之前,我们先来了解一下硬件。

STM32F103C8T6

STLINK-V2

在将二进制文件写入 STM32 之前,将 STM32 的“Boot0”引脚切换为“HIGH”。如下图所示连接 STM32 和 STLink v2 之间的连接。

STM32与STLink之间的连接

现在打开 MDK-Keil IDE 并构建项目。此后,您将收到“0”错误和“0”警告。现在将模型加载到 STM32 中。您将在控制台中收到“完成加载”消息。

构建项目并将代码加载到STM32中

现在将“Boot0”切换回“LOW”并按下重置按钮,如下图所示。

切换回“boot0”引脚

现在内置 LED 开始闪烁。

结论

“ Simulink ” 和 “ Embedded Coder ”使复杂嵌入式系统和控制系统的原型设计变得更加容易。在将模型的二进制文件部署到硬件中之前,我们可以在 Simulink 中测试系统或模型的错误和性能。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Simulink 进行 STM32 编程 的相关文章

  • 程序员必知的23种设计模式之观察者模式

    文章目录 1 模式引出 天气预报项目需求 1 1 天气预报普通设计方案 1 2 代码实现 2 观察者模式原理 3 观察者模式解决天气预报需求 4 观察者模式的好处 5 观察者模式在Jdk1 8的应用 1 模式引出 天气预报项目需求 天气预报
  • 均值与方差

    均值是指一组数的平均数值 可以分为 算术平均值 一组数求和再除以总个数 它主要表示一组数的平均水平 几何平均值 平方平均值 均方根平均值 调和平均值 加权平均值等 方差 指各个数据与平均数之差的平方和的平均数 方差和标准差都是对一组 一维
  • UGUI改图片:位置、尺寸(踩坑)

    另外一篇博客 UGUI图片 代码修改尺寸 锚定方式为父物体的四条边时 请见 https blog csdn net weixin 42935398 article details 107044335 目录 我的代码 问题 解决 总结 我的代

随机推荐

  • 抽奖组件lucky-canvas

    https 100px net usage wx html 次组件可以画轮盘和九宫格 老虎机抽奖画面
  • 微软必应Bing搜索引擎这几天无法访问!

    微软必应Bing搜索引擎这几天无法访问 一 用必应 Bing 临时域名 www2 bing com 或者 www4 bing com 临时域名博主验证有效 二 修改hosts文件 用户只需要暂时修改下host然后坐等微软服务器恢复后再删除即
  • c#winform使用WebBrowser 大全

    C WinForm WebBrowser 一 MSDN资料 1 主要用途 使用户可以在窗体中导航网页 2 注意 WebBrowser 控件会占用大量资源 使用完该控件后一定要调用 Dispose 方法 以便确保及时释放所有资源 必须在附加事
  • 微信分享链接标题和小图片-不通过公众号接口开发

    方法一 不通过公众号接口开发 在boby 和head之间添加下面的代码即可 图片路径自行修改 注意这个图片必须是大于300px300px的 div style margin 0 auto width 1px height 1px img s
  • 把字符串转换成整数(最详细解答)

    题目要求 分析 把一个一个字符以整数的形式来进行输出 需要考虑相互转化的问题 不能使用库函数 首尾会有空格 进行去空格操作 可以减少不必要的判断 区分正负正数 结果可能会越界 题目给的是Integer类型 当超过最大范围或者小于最小范围 有
  • hihoCoder #1000: A+B

    时间限制 1000ms 单点时限 1000ms 内存限制 256MB 描述 求两个整数A B的和 输入 输入包含多组数据 每组数据包含两个整数A 1 A 100 和B 1 A 100 输出 对于每组数据输出A B的和 样例输入 1 2 3
  • 单元测试(二)—— Jest结合Vue-test-utils入门实战

    文章目录 前言 介绍 语法实战 Shallow Rendering DOM结构 测试Props 总结 前言 公共组件 在我们编写测试用例之前 首先需要确认我们的目标组件到底是什么 我的理解为 在我们的项目中通常会分为两种类型的组件 一种为业
  • JAVA学习路线,面试复习方向指引

    前言 好久没有沉下心学习一波了 总结了一份简单的java学习内容 包含java开发大概的技术栈 后续每个部分寻找一些面试题专项学习 本篇先写一个大概的知识概括 后面逐渐加内容 慢慢丰满 有一起学习的朋友欢迎交流 共同进步 学问须学 不学则殆
  • 二、Xshell如何连接虚拟机

    Xshell如何连接虚拟机 安装Vmware时 会自动在windows安装虚拟网卡 在Vmware中设定虚拟交换机网段 圈定主机能使用的ip地址 虚拟网卡会自动获取一个ip地址 创建linux服务器时 选定网络模式为NAT ip地址为该网段
  • 05JWT实现微服务鉴权

    05 JWT 实现微服务鉴权 5 1 什么是微服务鉴权 我们之前已经搭建过了网关 使用网关在系统中比较适合进行权限校验 那么我们可以采用JWT的方式来实现鉴权校验 5 2 JWT JSON Web Token JWT 是一个非常轻巧的规范
  • STM32 USB AUDIO教程——导读

    STM32 USB AUDIO教程 基于正点原子的STM32F407探索者开发板 通过CUBEMX 移植等方式实现USB音频播放speaker和USB音频录制mic等功能 资料篇 主要是X CUBE USB AUDIO资料的概述和翻译 基础
  • 阿里云赵明山:详解灵活可插拔的渐进式发布框架OpenKruise Rollout

    嘉宾 赵明山 随着K8s及云原生理念的普及 尤其是在持续部署流水线出现后 渐进式交付为互联网应用提供了基础设施和实现方法 2022年7月27日 在由开放原子开源基金会主办的 2022开放原子全球开源峰会 上 阿里云技术专家 OpenKrui
  • 基于ISO13400(DoIP)实现车辆刷写,你知多少?

    近年来 基于以太网实现车辆高带宽通讯无疑是整车研发中人们热议的话题 无论是车内基于车载以太网减少线束成本 实现ADAS 信息娱乐系统等技术 还是基于新的电子电气架构以及远程诊断需求 为实现以太网诊断 DoIP 各家OEM都投入大量人力 物力
  • 【100天精通python】Day35:GUI界面编程_一文掌握Tkinter基本操作

    目录 专栏导读 1 GUI 编程概述 1 1 为什么需要GUI 1 2 常见的GUI编程工具和库 1 3 GUI应用程序的组成和架构 2 使用Tkinter 库 进行GUI编程 2 1 使用Tkinter库进行GUI编程的基本流程 2 2
  • 虚拟机网络适配器的三种模式详解及其配置

    VMWare中网络适配器的三种模式详解 关于虚拟机下Linux下ping www baidu com 出现 ping unknown host www baidu com问题的解决 有可能是因为网络适配器未正常配置 本文参照文章 https
  • Linux应用编程(系统信息与系统资源)

    在应用程序当中 有时往往需要去获取到一些系统相关的信息 譬如时间 日期 以及其它一些系统相关信息 本章将向大家介绍如何通过 Linux 系统调用或 C 库函数获取系统信息 譬如获取系统时间 日期以及设置系统时间 日期等 除此之外 还会向大家
  • Nacos介绍以及使用

    目录 一 概述 1 1 Nacos是什么 能干嘛 1 2 去哪下载 1 3 各个注册中心比较 二 Nacos作为服务注册中心 2 1 基于Nacos的服务提供者 2 2 基于Nacos的服务消费者 三 Nacos作为服务配置中心 3 1 N
  • 基于深度学习的海上雷达数据质量管控自动化技术

    文章作者Rune Gangeskar任职于Miros公司 目标是设计一套Wavex传感器系统 如何精准测量波浪 洋流 以及对水航速 并使用深度学习网络来自动辨识测量下取得的雷达数据 进一步提升Wavex系统的表现与可靠度 一 总体简介 对海
  • Java实现不规则软件版本号比较大小

    背景 最近由于需要比较两个版本号 从网上寻找的例子出现了问题 因此单独写一个不规则的版本号比较方法 代码 如果version1大于等于version2就返回true 可以根据自己需要进行调整 public static boolean co
  • 使用 Simulink 进行 STM32 编程

    目录 介绍 所需材料 步骤 1 在MATLAB中设置STM32 MAT软件路径 步骤 2 在STM32CubeMX中创建一个项目 步骤 3 配置时钟和 GPIO 引脚 步骤 4 项目经理并生成代码 步骤 5 在 Simulink 中创建模型