使用 Simulink 进行 STM32 编程

目录

介绍

所需材料

  • 步骤 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 中测试系统或模型的错误和性能。

相关推荐
scan18 小时前
单片机串口接收状态机STM32
stm32·单片机·串口·51·串口接收
Qingniu018 小时前
【青牛科技】应用方案 | RTC实时时钟芯片D8563和D1302
科技·单片机·嵌入式硬件·实时音视频·安防·工控·储能
Mortal_hhh10 小时前
VScode的C/C++点击转到定义,不是跳转定义而是跳转声明怎么办?(内附详细做法)
ide·vscode·stm32·编辑器
深圳市青牛科技实业有限公司10 小时前
【青牛科技】应用方案|D2587A高压大电流DC-DC
人工智能·科技·单片机·嵌入式硬件·机器人·安防监控
Mr.谢尔比11 小时前
电赛入门之软件stm32keil+cubemx
stm32·单片机·嵌入式硬件·mcu·信息与通信·信号处理
LightningJie11 小时前
STM32中ARR(自动重装寄存器)为什么要减1
stm32·单片机·嵌入式硬件
鹿屿二向箔11 小时前
STM32外设之SPI的介绍
stm32
西瓜籽@12 小时前
STM32——毕设基于单片机的多功能节能窗控制系统
stm32·单片机·课程设计
远翔调光芯片^1382879887214 小时前
远翔升压恒流芯片FP7209X与FP7209M什么区别?做以下应用市场摄影补光灯、便携灯、智能家居(调光)市场、太阳能、车灯、洗墙灯、舞台灯必看!
科技·单片机·智能家居·能源
极客小张15 小时前
基于STM32的智能充电桩:集成RTOS、MQTT与SQLite的先进管理系统设计思路
stm32·单片机·嵌入式硬件·mqtt·sqlite·毕业设计·智能充电桩