您的位置:首页 > 新闻 > 资讯 > 苏州公司网页制作_全国最好设计培训_本周新闻热点_自建网站平台

苏州公司网页制作_全国最好设计培训_本周新闻热点_自建网站平台

2025/1/6 4:54:38 来源:https://blog.csdn.net/youcans/article/details/144917855  浏览:    关键词:苏州公司网页制作_全国最好设计培训_本周新闻热点_自建网站平台
苏州公司网页制作_全国最好设计培训_本周新闻热点_自建网站平台

STM32-MBD(1)安装 STM32 硬件支持包
STM32-MBD(2)Simulink 模型部署

【动手学电机驱动】STM32-MBD(2)Simulink 模型部署

    • 1. 软硬件条件和环境测试
      • 1.1 软硬件条件
      • 1.2 开发环境测试
    • 2. 创建基于 STM32 处理器的 Simulink 工程
      • 2.1 创建 STM32CubeMX 工程
      • 2.2 创建 Simulink 仿真模型
      • 2.3 在 STM32CubeMX 中配置外设
    • 3. Simulink 模型仿真
    • 4. 从 Simulink 模型生成代码并加载到 STM32 硬件板

通过安装MATLAB 硬件支持包,可以将 STM32 微处理器与 MATLAB/Simulink 结合使用,让开发者可以直接在MATLAB环境中进行嵌入式系统的设计和调试。
本节详细介绍将 Simulink 模型部署到基于 STM32 处理器的硬件板上,并进行调试和运行。我们的第一个 STM32-MBD 实验采用 NUCLEO-G431RB 开发板, 以 LED 点灯实验为例,使用 Matlab/Simulink 建模仿真后直接生成 STM32 项目工程代码。


1. 软硬件条件和环境测试

Simulink/STM32 代码生成对于软硬件和开发环境的要求非常严格,很容易由于版本不匹配或路径错误而失败。作者已经踩过了很多的坑,可以说是我在所有开发项目中都从未经历过的。

【动手学电机驱动】STM32-MBD(1)安装 STM32 硬件支持包详细介绍了所需的软硬件条件和安装过程,请严格按照文中介绍的步骤安装和配置。强烈建议首先严格使用推荐版本跑通本文项目。

为了帮助大家确定 Simulink/STM32 代码生成 的开发环境安装配置成功,我们首先要逐项进行检查测试。


1.1 软硬件条件

必需的硬件:

  • STM32 开发板(如:NUCLEO-G431RB 开发板,也可以选择其它 STM32 开发板,但需要安装对应的固件包)。
  • Micro-micro USB 数据线,或 USB Type-A 至 Micro-B 连接线缆,用于将STM32 Nucleo 板连接到 PC。

必需的软件:

  • STM32 开发工具(建议首先严格使用推荐版本跑通本文项目)

    • STM32CubeMX (推荐使用 V6.4.0)
    • STM32CubeProgrammer (推荐使用 V2.6.0)
    • STM32CubeIDE(或 Keil,MDK-ARM 等 IDE 工具)
    • STM32Cube_FW_G4 固件包(推荐采用 V1.5.0)
      如果使用其它 STM32 MCU,则需选择对应的固件包。例如使用 STM32F4 时则要选择STM32Cube_FW_F4_V1.26.0 固件包。
  • MATLAB/Simulink(本文使用 MATLAB R2022b,可以采用更新版本)

    • Simulink Coder:从 Simulink 模型、Stateflow 图和 MATLAB 函数生成并执行 C 和 C++ 代码,用于实时和非实时应用,包括仿真加速、快速原型构建和硬件在环测试
    • STM32 嵌入式硬件支持包,Embedded Coder Support Package for STMicroelectronics STM32 Processors,STM32 处理器的嵌入式硬件支持包

1.2 开发环境测试

  1. 运行 STM32CubeMX,菜单选择 Help–About,检查版本为 V6.4.0。

  2. 在 STM32CubeMX 菜单选择 Help–Manage embedded software packages,在弹出窗口中展开 STM32G4,检查 STM32Cube MCU Package for STM32G4 Series V1.5.0 固件包已安装。选项框为绿色表示安装成功,如下图所示。
    在这里插入图片描述

  3. 运行 STM32CubeProgrammer,并测试与 STM32 开发板的连接。
    (1)通过 ST-Link 将 STM32 微控制器与计算机连接:用 USB 连接线连接 PC 与 NUCLEO-G431RB 开发板(该开发已板集成了 ST-Link ),确保连接正常(可以从设备管理器查看端口,显示“STMicroelectronics STLink Virtual COM Port”)。
    (2)运行 STM32CubeProgrammer,此时右上角的状态灯为红色并显示 “Not connect”。
    (3)点击右上角 “Connect” 按钮连接设备,如下图所示。

在这里插入图片描述

此时:a) 右上角的状态灯为绿色并显示 “Connected”;b) 右侧信息栏 “Target information” 显示目标设备 STM32 MCU和开发板的信息;c) 在 “Device memory” 信息栏显示设备内存地址和对应的内存信息;d) 在 “Log” 信息栏显示相关信息如下。

11:31:31 : STM32CubeProgrammer API v 2.6.0
11:31:34 : ST-LINK SN  : 002B00283532510731333430
11:31:34 : ST-LINK FW  : V3J15M7
11:31:34 : Board       : NUCLEO-G431RB
11:31:34 : Voltage     : 3.28V
11:31:34 : SWD freq    : 24000 KHz
11:31:34 : Connect mode: Normal
11:31:34 : Reset mode  : Software reset
11:31:34 : Device ID   : 0x468
11:31:34 : Revision ID : Rev X
11:31:34 : UPLOADING OPTION BYTES DATA ...
11:31:34 :   Bank          : 0x00
11:31:34 :   Address       : 0x40022020
11:31:34 :   Size          : 20 Bytes
11:31:34 :   Bank          : 0x01
11:31:34 :   Address       : 0x40022070
11:31:34 :   Size          : 4 Bytes
11:31:34 : UPLOADING ...
11:31:34 :   Size          : 1024 Bytes
11:31:34 :   Address       : 0x8000000
11:31:34 : Read progress:
11:31:34 : Data read successfully
11:31:34 : Time elapsed during the read operation is: 00:00:00.002
  1. 运行 Matlab,菜单选择 主页–附加功能–管理附加功能,弹出“附加功能管理器”窗口,检查已安装 STM32 嵌入式硬件支持包 “Embedded Coder Support Package for STMicroelectronics STM32 Processors”。
    如下图所示,本文的安装版本为 V22.2.2。

在这里插入图片描述

  1. 在“附加功能管理器”窗口选中 STM32 嵌入式硬件支持包后,点击齿轮图标“设置”,弹出“Select STM32 MCUs Family” 窗口
    (1)从中选择所使用的 MCU 型号(本文为 STM32Gxx Based MCUs)。
    (2)提示必需的 STM32 工具及版本(STM32CubeMX、STM32CubeProgrammer),如尚未安装可以点击 “Download” 下载并安装。
    (3)对 STM32CubeMX 进行安装配置验证。
    点击 “Browse” 选择本机安装 STM32CubeMX 的路径。
    点击 “Validate” 进行验证,如下图所示。如果 STM32CubeMX 的版本较新,将出现软件版本兼容性提示。强烈建议严格使用推荐版本 V6.4.0。
    (4)对 STM32CubeProgrammer 进行安装配置验证。
    点击“Browse”选择本机安装 STM32CubeProgrammer 的路径。
    点击 “Validate” 进行验证,如下图所示。如果 STM32CubeProgrammer 的版本较新,将出现软件版本兼容性提示。强烈建议严格使用推荐版本 V2.6.0。
    在这里插入图片描述

2. 创建基于 STM32 处理器的 Simulink 工程

STM32 硬件支持包使开发者能够使用 Simulink 访问硬件外设,并使用 STM32CubeMX 工具在处理器上配置外围设备。

要支持在基于 STM32 处理器的板上运行 Simulink 模型,需要使用 STM32CubeMX 图形化工具。STM32CubeMX 工具采用图形界面,可用于配置 STM32 处理器的外设,并为所选的 STM32 处理器生成外设初始化代码。


2.1 创建 STM32CubeMX 工程

  1. 打开 STM32CubeMX。

  2. 选择 New Project(或Ctrl-N快捷键)新建工程,进入 New Project 界面。
    选择MCU为 STM32G431RBTx(参考开发板的 MCU 型号选择),点击 “Start Project” 建立项目。

在这里插入图片描述

  1. 选择 New Project(或Ctrl-N快捷键)新建工程,自动转入 CubeMX 的 Pinout Configuration 视图。

  2. 在 Pinout Configuration 视图中,搜索 PA5 管脚,将其设置为 GPIO_Output。如下图所示。

在这里插入图片描述

  1. 点击菜单栏 “Project Manager” 进入工程配置界面,如下图所示。
    (1)在 Project Name 输入项目名称 “STM32G431_MBD01”。
    (2)在 Toolchain/IDE 选择 IDE 工具为 “STM32CubeIDE”(也可以根据需要选择其它 IDE 工具 )。
    (3)在 “Project Manager” 继续向下拉,“在 MCU and Firmware Package” 栏中,取消选中 “Use latest available version”,根据所安装的 G4 固件版本,选择 “STM32Cube FW_G4 V1.5.0”;
    (4)如果固件包不是安装在默认路径,则要取消选中 “Use Default Firmware Location”,通过 Browse 选择固件包的安装路径。
    在这里插入图片描述

  2. 点击 “File–Save Project”,保存建立的 CubeMX 项目工程文件 STM32G431_MBD01.ioc。


2.2 创建 Simulink 仿真模型

  1. 运行 MATLAB 软件,将当前路径切换到 CubeMX 项目 .ioc 的保存路径

  2. 打开 Simulink,点击 “空白模型” 创建新的 Simulink 模型,保存为文件 STM32G431_MBD01.slx。注意仿真模型 .slx 与 CubeMX 项目 .ioc 要保存在相同的路径下。

在这里插入图片描述

  1. 在 Simulink 菜单选择 “建模” - “模型设置” (也可以用 CTRL+E),打开“配置参数”对话框。
    左侧边栏中选择“求解器”,如下图所示。
    (1)在右侧 “仿真时间” 设置为 “inf”。
    (2)在 “求解器选择” 选项设置类型为 “定步长”,“固定步长(基础采样时间)” 设为 “1e-4” (对应于 MCU 的 ADC 采样频率为 10kHz)。
    (3)可选地,在 "任务和采样周期选项"下勾选:“将每个离散速率视为单独任务”和“自动处理数据传输的速率转换”。

在这里插入图片描述

  1. 如下图所示,在“配置参数”窗口的左边栏中选择“硬件实现”,在右侧 “硬件板(Hardware board)” 选项的下拉框中选择 “STM32G4xx Based”。

在这里插入图片描述
说明:
(1)根据使用的 STM32 的型号,从 “Hardware board” 中选择适当的硬件板选项。本项目使用 STM32G431RB MCU,因此选择 “STM32G4xx Based”。
(2)推荐选择 “STM32F4xx Based”,“STM32G4xx Based”,“STM32H4xx Based”,配合 STM32CubeMX 配置外设来实现对 STM32 硬件板的支持。
(3)在 “Hardware board” 选项中,还有一些 “STM32 Nucleo ******” 的选项,这是专门针对某些型号 STM32 Nucleo 开发板提供的硬件支持,可以直接在 Simulink 中对外设进行配置。但是,随着 STM32 的发展很多 Nucleo 开发板并未被支持,而 STM32CubeMX 的应用也越来越广泛,因此作者推荐开发者按照本文的步骤,直接使用 “STM32G4xx Based”,结合 STM32CubeMX 开展基于模型的代码生成。

  1. 在右侧 “Hardware board settings” 配置 “Target hardware resources” ,点击 “Browse” 选择或点击 “Create” 创建一个STM32CubeMX 工程文件(.ioc)。
    (1)点击 “Browse” 选择 CubeMX 工程文件 STM32G431_MBD01.ioc。
    (2)如下图所示,系统识别到目标设备为 STM32G4 系列,设备 ID为 STM32G431R(6-8-B)Tx。
    (3)打开设备列表 “Device list”,并点击 “Refresh” 按钮刷新,显示连接的设备为 “STM32G43x/STM32G44x”,表明目标设备配置成功。
    点击 “确定” 保存上述配置。
    在这里插入图片描述

  2. 选择硬件在环通信串口。
    点击 “Target hardware resources–Groups–Connectivity”,将 “USART/UART" 设为 “USART3”,将 “Serial port" 设为 电脑上的 COM 端口。具体端口号可以查看电脑”设备管理器“中的”端口(COM和LPT)“。

注意:这是针对 NUCLEO-G431RB 开发板集成了 STLINK-V3E 串口一体调试器。如果使用单独的 USB 转串口模块,要注意连线正确(USART3:PB10, PB11)。

  1. 回到 Simulink 仿真窗口,搭建仿真模型。
    (1)在仿真模型中添加 “Digital Write” 模块参数。
    点击菜单栏的 “库浏览器” 打开库浏览器,展开 “Embedded Coder Support Package for STMicroelectronics STM32 Processors – STM32G4xx Based Boards”。选择 “Digital Port Write” 模块,将其拖动到右侧的模型。
    (2)设置 “Digital Write” 模块参数。如图所示,按照 CubeMX 项目中的 GPIO 管脚配置,将 Port name 设为 “GPIOA”,将 Pin number 设为 “[5]”,即将 PA5 管脚设置为 GPIO_Output。

在这里插入图片描述

(3)在仿真模型中添加 “Pulse Generator” 脉冲发生器模块。如下图所示,设置模块参数为:周期 1秒,脉冲宽度(占空比)为50%。

在这里插入图片描述

(4)完成搭建仿真模型,保存为文件 G431_MBD01.slx。注意仿真模型 .slx 与 CubeMX 项目 .ioc 要保存在相同的路径下。


2.3 在 STM32CubeMX 中配置外设

  1. 回到 STM32CubeMX,打开 STM32CubeMX 工程文件 G431_MBD01.ioc。

  2. 在 Pinout Configuration 视图进行系统配置。
    (1)选择 “System Core – SYS” 设置调试器类型,将 Debug 设为 “Serial Wire”,
    (2)选择 “System Core – SYS” 设置基础时钟源,将 Timebase Source 设为 “TIM2”——非常重要!
    Timebase Source 默认为 “SysTick”,需要留作它用,因此必须修改为其它定时器。

在这里插入图片描述

(3)选择 “System Core – RCC” 配置时钟模式,设置高速晶振为外部时钟,将 High Speed Clock (HSE) 设为 “Crystal/Ceramic Resonator”。

在这里插入图片描述

  1. 在 Clock Configuration 视图进行时钟配置,如下图所示。
    LED 点灯实验对于时钟时钟设置没有太多要求,只要设置正确即可。本例中使用外部 24MHz晶振,具体设置如下图所示,只供参考。

在这里插入图片描述

  1. 在 Project Manager 视图进行工程配置,如下图所示。
    (1)在 Project 中勾选 “Do not generate the main()”,在生成代码时不生成 main.c 文件中的 main() 函数。
    (2)在 Project 中取消选中 “Generate Under Root”。

在这里插入图片描述

(3)在 Code Generator 中,勾选 “Generate peripheral initialization as a pair of ‘.c/.h’ files per peripheral”,让每个外设生成独立的’.c/.h’文件。

在这里插入图片描述

(4)在 Advanced Settings 中,将 “Driver Selector” 全部设置为 “LL”(默认为 “HAL”),为外设选择低级 (LL) 驱动。
(5)在 Advanced Settings 中,将 “Generated Function Calls” 的 “Visibility(Static)” 勾选项全部取消,对所有外设初始化函数调用取消选择可见性(静态)。
在这里插入图片描述


  1. 完成以上配置后,使用快捷键 “CTL+S” 或点击 File–Save Project,保存 CubeMX 项目文件。
    注意:在 STM32CubeMX 中配置完成后,不要点击 “GENERATE CODE” 生成代码,而是保存 .ioc 项目文件。

3. Simulink 模型仿真

  1. 在 Simulink 打开仿真模型 STM32G431_MBD01.slx。
  2. 为输出信号添加一个示波器。
  3. 在 “仿真” 窗口点击 “运行”,观察示波器的输出波形。如下图所示,示波器显示周期为 1sec 的方波。
  4. 双击脉冲发生器模块 Pulse Generator,修改参数 “周期”、“脉冲宽度” 后再开始仿真运行,可以得到不同周期和脉宽的波形。

在这里插入图片描述


4. 从 Simulink 模型生成代码并加载到 STM32 硬件板

  1. 在 Simulink 打开仿真模型 STM32G431_MBD01.slx。

  2. 在 “硬件(Hardware)” 窗口点击 “编译、部署和启动”(Ctrl+B 快捷键),就启动模型 STM32G431_MBD01 的编译过程,为模型生成代码,并加载到 NUCLEO-G431RB 开发板。

模型编译过程的主要信息显示在 “诊断查看器” 中,编译摘要如下。
如果编译中发生错误,错误信息也将显示在 “诊断查看器” 。

 顶层模型编译  
### 正在启动 STM32G431_MBD01 的编译过程
### 正在为 '模型特定' 文件夹结构生成代码和工件
### 正在将代码生成到编译文件夹中: D:\MATLAB\SimulinkProjects\STM32G4\STM32G431_MBD01\STM32G431_MBD01_ert_rtw
### Invoking Target Language Compiler on STM32G431_MBD01.rtw
### Using System Target File: D:\Program Files\MATLAB\R2022b\rtw\c\ert\ert.tlc
### Loading TLC function libraries
### Initial pass through model to cache user defined code
.
### Caching model source code
### Writing header file STM32G431_MBD01_types.h
### Writing header file STM32G431_MBD01.h
### Writing header file rtwtypes.h.
### Writing source file STM32G431_MBD01.c
### Writing header file STM32G431_MBD01_private.h
### Writing source file STM32G431_MBD01_data.c
### Writing header file rtmodel.h
### Writing source file ert_main.c
.
...### Successful completion of build procedure for: STM32G431_MBD01
### 'STM32G431_MBD01' 的 Simulink 缓存工件是在 'D:\MATLAB\SimulinkProjects\STM32G4\STM32G431_MBD01\STM32G431_MBD01.slxc' 中创建的。
编译过程已成功完成编译摘要  
编译的顶层模型目标:模型               操作           重新编译原因     
=========================================
STM32G431_MBD01  代码已生成并完成编译。  生成的代码已过期。  编译了 1 个模型,共 1 个模型(0 个模型已经是最新的)
编译持续时间: 0h 0m 14.395s

在这里插入图片描述

  1. Simulink 通过调用 STM32CubeProgrammer 将编译的目标文件加载到 STM32 开发板,NUCLEO-G431RB 开发板上的 LD2 会闪烁,表明代码正在运行。

  2. 在 Simulink 模型中修改 Pulse Generator 模块的参数 “周期”、“脉冲宽度”,重新点击 “编译、部署和启动”,NUCLEO-G431RB 开发板上的 LD2 就以相应的周期和脉宽闪烁,表明基于 Simulink 的模型开发成功。

在这里插入图片描述


(本节完)


参考资料:

  1. 基于 STMicroelectronics STM32 处理器的板快速入门, (https://ww2.mathworks.cn/help/ecoder/stmicroelectronicsstm32f4discovery/ug/Getting-started-stm32cubemx.html?searchHighlight=STM32&s_tid=srchtitle_support_results_2_STM32)

  2. 安装 STMicroelectronics STM32 处理器的支持程序,(https://ww2.mathworks.cn/help/ecoder/stmicroelectronicsstm32f4discovery/ug/install-support-for-stm32-board-processors.html)

  3. 使用 STM32CubeMX 和 Simulink 配置基于 STM32 处理器的板,(https://ww2.mathworks.cn/help/ecoder/stmicroelectronicsstm32f4discovery/ug/STM32-CubeMX-Configuration.html?searchHighlight=STM32&s_tid=srchtitle_support_results_5_STM32)


版权声明:
youcans@xidian 原创作品,转载必须标注原文链接:(https://blog.csdn.net/youcans/article/details/144325556)
Copyright@youcans 2025
Crated:2025-01

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com