【动手学电机驱动】STM32-MBD(2)将 Simulink 模型部署到 STM32G431 开发板

news2025/1/5 19:21:22

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. 点击菜单栏 “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 选择固件包的安装路径。
    在这里插入图片描述

  3. 点击 “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”,但在 STM32支持包中 “SysTick” 已经用作框架的基础时间功能,因此必须修改为 非"SysTick" 的其它定时器。否则在编译项目时会报错——非常重要!。

在这里插入图片描述

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

在这里插入图片描述

  1. 在 Pinout Configuration 视图中,搜索 PA5 管脚(在 NUCLEO 开发板中 连接LD2 灯),将其设置为 GPIO_Output。如下图所示。

在这里插入图片描述

  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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2270991.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

adb 不是内部或外部命令,也不是可运行的程序或批处理文件。

1、问题概述? 本文讲述的是在window系统中安装了Android SDK之后,adb无法使用的情况。 在cmd中执行adb devices提示如下问题: adb 不是内部或外部命令,也不是可运行的程序或批处理文件。 问题:没有配置android sdk环…

Win11+WLS Ubuntu 鸿蒙开发环境搭建(二)

参考文章 penHarmony南向开发笔记(一)开发环境搭建 OpenHarmony(鸿蒙南向开发)——标准系统移植指南(一) OpenHarmony(鸿蒙南向开发)——小型系统芯片移植指南(二&…

拟声 0.60.0 | 拟态风格音乐播放器,支持B站音乐免费播放

「拟声」是一款音乐播放器,不仅支持音视频的本地播放,还提供了账号注册功能,登录后可享受自动同步歌单、歌词等。它支持播放绝大多数音频格式,具备固定输出采样率、独占输出、内置均衡器和音调调整等功能。同时,它也支…

word文档中的文档网格——解决相同行间距当显示出不同行间距的情况

1 问题 被一个行间距调疯了,就是样式改了没用,格式刷刷了没用。就是肉眼可以看出行间距完全不一样。 2 解决方法 1)修改论文正文(即出现问题文本的样式)样式:样式>修改>格式>段落>缩进和间距>取消"如果定义了…

linux nginx maccms管理后台无法进入页面不存在和验证码不显示的问题

windows中运行maccms非常顺利,轻松搭建了。并一切正常。而我在linux中搭建缺遇到了一个非常奇怪的问题。进入管理后台,明明"admin.php"(比如重命名成a.php)的页面是存在的,访问时缺提示页面不存在!稍后就自动跳到首页了…

简单使用linux

1.1 Linux的组成 Linux 内核:内核是系统的核心,是运行程序和管理 像磁盘和打印机等硬件设备的核心程序。 文件系统 : 文件存放在磁盘等存储设备上的组织方法。 Linux 能支持多种目前浒的文件系统,如 ext4 、 FAT 、 VFAT 、 ISO9660 、 NF…

pikachu靶场--目录遍历和敏感信息泄露

pikachu靶场—目录遍历和敏感信息泄露 目录遍历 概述 在web功能设计中,很多时候我们会要将需要访问的文件定义成变量,从而让前端的功能便的更加灵活。 当用户发起一个前端的请求时,便会将请求的这个文件的值(比如文件名称)传递到后台,后台再…

MyBatis-plus sql拦截器

因为业务需求,重新写了一套数据权限。项目中用的是mybtis-plus,正好MyBatis-Plus提供了插件数据权限插件 | MyBatis-Plus,那就根据文档来实现这个需求。 实现: 实现MultiDataPermissionHandler 首先创建MultiDataPermissionHan…

硬件-射频-PCB-常见天线分类-ESP32实例

文章目录 一:常见天线1.1 PCB天线①蓝牙模块的蛇形走线-天线②倒F天线-IFA:③蛇形倒F天线-MIFA④立体的倒F天线-PIFA 1.2 实例示意图1.21 对数周期天线(LPDA):1.22 2.4GHZ的八木天线:1.23 陶瓷天线:1.24 外接天线: 二&…

Gitlab-runner 修改默认的builds_dir并使用custom_build_dir配置

gitlab-runner 修改默认的builds_dir并使用custom_build_dir配置 1. 说明2. 实操(以docker执行器为例)2.1 修改默认的builds_dir2.1.1 调整gitlab-runner的配置文件2.1.2 CI文件 2.2 启用custom_build_dir2.2.1 调整gitlab-runner的配置文件2.2.2 CI文件…

WPF+Prism View与ViewModel绑定

1、开发环境,Win10VS2022.NET8Prism.DryIoc(9.0.537)或Prism.Unity。 2、通过NuGet安装Prism.DryIoc(9.0.537)或Prism.Unity。 2.1、创建ViewModels文件夹用于存放ViewModel文件、创建Views文件夹存放View文件。 将…

av1学习笔记(一):码流的整体框架

av1学习笔记(一):码流的整体框架 目录 av1学习笔记(一):码流的整体框架1. 码流结构分析:2. OBU信息分析2.1 obu_header2.2 obu_size2.3 drop_obu2.4 sequence_header_obu2.5 temporal_delimiter…

I2C(一):存储器模式:stm32作为主机对AT24C02写读数据

存储器模式:在HAL库中,I2C有专门对存储器外设设置的库函数 I2C(一):存储器模式的使用 1、I2C轮询式写读AT24C02一页数据2、I2C轮询式写读AT24C02多页数据3、I2C中断式写读AT24C02一页数据4、I2C使用DMA式写读AT24C02一…

Ansys Discovery 中的网格划分方法:探索模式

本篇博客文章将介绍 Ansys Discovery 中可用于在探索模式下进行分析的网格划分方法。我们将在下一篇博客中介绍 Refine 模式下的网格划分技术。 了解 Discovery Explore 模式下的网格划分 网格划分是将几何模型划分为小单元以模拟系统在不同条件下的行为的过程。这是通过创建…

MySQL秘籍之索引与查询优化实战指南

MySQL秘籍之索引与查询优化实战指南 目录 MySQL秘籍之索引与查询优化实战指南相关阅读索引相关EXPLAIN 版本 1. 初级篇1.1 【练体术】基础1.1.1 库操作1.1.1 表操作创建一个表增加表字段 1.1.2 增删改插入一条数据删除一条数据更新一条数据库 1.1.3 查询查询所有数据条件查询&a…

MySQL8.0复制原理和部署配置步骤

1. mysql 主从复制原理 在从库上执行change master to;会将主库的信息保存到从库中的master.info文件中在从库执行start slave;开启io_thread, sql_thread线程;io_thread工作;io_thread通过master.info文件中主库的连接信息去连接主库;连接成…

智联视频超融合平台:电力行业的智能守护者

文章目录 一、远程实时监控与设备状态监测二、提高应急响应能力三、实现无人值守与减员增效四、保障电力设施安全与防范外部破坏五、提升电网运行管理效率与决策科学性六、助力电力企业数字化转型与智能化发展七、智联视频超融合平台 在当今数字化浪潮下,视频联网平…

上传本地项目或文件到SVN服务器(图片讲解,超简单)

上传本地项目或文件到SVN服务器(图片讲解,超简单) 1、使用TortoiseSVN2、输入SVN远程仓库地址3、添加文件或文件夹 需求:将本地的文件上传到SVN服务器上指定路径。前提:已经安装好TortoiseSVN 1、使用TortoiseSVN 右…

单周期CPU电路设计

1.实验目的 本实验旨在让学生通过设计一个简单的单周期 CPU 电路,深入理解 RISC-V 指令集的子集功能实现,掌握数字电路设计与实现的基本流程,包括指令解析、部件组合、电路设计以及功能仿真等环节,同时培养verilog HDL编程能力和…

ROS功能包开机自启动(2步解决)

为了实现小车在开机后能自动启动相关功能模块需要解决两个问题 1.准备启动脚本文件加载对应的rosnode和roslaunch,整合相关节点按需要顺序进行,防止报错 2.设置开启启动脚本相关内容 既然是自启动,不能避免USB数据传输的一些问题&#xff…