使用Simulink进行stm32开发2

2023-11-03


基于对模型开发的学习,在这里用simulink搭建小车电机的控制模块。因为一直犹豫到底是直接使用stm32的驱动包进行开发还是直接做完模块合成到软件中,所以准备用两种方式搭建这个简单的模块,本章主要使用stm32的驱动包来开发,下一章再直接使用simulink生成集成到工程中。

配置工程文件

基本上配置方式和之前文章使用simulink进行stm32开发1里一样也是先使用Cubemx对引脚进行配置。这次为了控制4个电机,需要4路PWM通道,以及用于控制驱动引脚的8路GPIO口(每个电机由2个接口控制电机转动方向),此外,因为使用的配置项大概如图(其他一些预留引脚是为了后面功能服务的,此处不赘述)在这里插入图片描述
主要使用的是TIM3通道,这里为了节省资源,4路pwm波全部由TIM3配置,配置如图所示
在这里插入图片描述
然后配置8路gpio通道用于控制l298驱动,每个电机由两路控制,配置如下

引脚 定义功能 标识
GPIOE.7 左前轮电机控制引脚1 MOTOR_CONTROL1_1
GPIOE.8 左前轮电机控制引脚2 MOTOR_CONTROL1_2
GPIOE.9 右前轮电机控制引脚1 MOTOR_CONTROL2_1
GPIOE.10 右前轮电机控制引脚2 MOTOR_CONTROL2_2
GPIOE.11 左后轮电机控制引脚1 MOTOR_CONTROL3_2
GPIOE.12 左后轮电机控制引脚2 MOTOR_CONTROL3_2
GPIOE.13 右后轮电机控制引脚1 MOTOR_CONTROL4_2
GPIOE.14 右后轮电机控制引脚2 MOTOR_CONTROL4_2

在这里插入图片描述

simulink 模块搭建

stm32驱动模块

接着开始搭建simulink的模块,因为配置了simulink模块与cubemx的连接(使用Simulink进行stm32开发1),可以拉出模块tim和gpio模块并配置如下:
在这里插入图片描述
上面是pwm的驱动模块,要记得设置为占空比控制
在这里插入图片描述

下面是gpio的控制模块。
gpio是为了控制L298n驱动板的,逻辑如下
在这里插入图片描述

配置数据字典

为了使用一些需要的变量类型和变量名称,需要配置数据字典
在这里插入图片描述
点击这个按钮进入新建一个sldd文件,我这里放在了和工程的文件夹内,在进行一些模块移植的时候可以进行添加。
在这里插入图片描述
配置的几个变量如下
在这里插入图片描述
主要是TRUE和FALSE这种布尔值,另外加了一个motion的枚举类型,小电机的动作类型根据逻辑分类不多,一共也就主要为了把motion的几个值都放在一起管理,另外要注意的是为了让这些变量类型在生成代码的时候能够在代码里生成,,要把数据存储的类型选为exported或exportedGlobal。
在这里插入图片描述

配置电机控制函数

根据控制l298的逻辑,需要建立一个控制gpio的函数,这里我设置了一个simulink function叫 MotorCtrl如下
在这里插入图片描述
在这里插入图片描述
这里用了一个switch case的逻辑区分停止,顺时针转动,逆时针转动几种小电机的运行模式,然后输出控制的两个引脚的值,在这里设置的几个引脚的赋值类型都是布尔值boolean,case内部执行如下(例:电机停止)
在这里插入图片描述
然后,通过function caller的方式调用该函数在这里插入图片描述

模块封装

上面的gpio的控制块加上控制pwm波占空比(电机速度)的块就可以封装为一个建议的小车电机控制模块了(由于小车的满载转速还不确定,因此这里控制速度的变量暂时没有加增益进行匹配)
小车电机控制块
最后把该模块封装为了如下的形式
在这里插入图片描述

加入输入并生成代码

为了验证该模型的正确性,这里测试4个电机的速度和转动方向,设置不同的pwm占空比,其中两个电机正转,两个为反转,如图
在这里插入图片描述
其中控制转动方向的变量用我们设置的数据字典里的值进行代替,即
在这里插入图片描述
然后为了能在程序里用全局变量表示四个电机的占空比(速度),这里设置了4个signal 的名字
在这里插入图片描述
设置为全局输出
在这里插入图片描述
接着,生成代码
在这里插入图片描述
得到代码,这里本人发现有一个ert_main的文件和本身的main文件冲突了,然后又回到simulink设置
在这里插入图片描述
将generate an example那个选项的√去掉,再生成,over
在这里插入图片描述
这里用一个逻辑分析仪看几个通道的pwm控制是否成功,补张图
在这里插入图片描述

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

使用Simulink进行stm32开发2 的相关文章

  • Python做简单小项目,Python如何赚钱项目

    Python都可以做哪些副业 1 兼职处理数据Excel整理数据功能虽然很强大 但在Python面前 曾经统治职场的它也的败下阵来 因为Python在搜集数据整理分析数据的过程中更加便捷 通过几行代码还可以实现自动化操作 如果你学会Pyth
  • 将输入的一行字符中的大写字符改为小写字符。(C语言)

    代码 include
  • 基于javaweb的留学生信息交流论坛

    该在线留学生交流网站 是一款主要以留学生交流为主题的交流性质的论坛网站 采用了SSH框架技术开发 利用mysql作为数据库 主要展示了留学新闻和论坛交流的功能 方便了交流和对澳洲那边生活的了解 面对面和去过的人交流 系统是一款简单毕业设计学
  • Linux中ELF格式文件介绍

    ELF Executable and Linkable Format 即可执行连接文件格式 是一种比较复杂的文件格式 但其应用广泛 与linux下的其他可执行文件 a out cof 相比 它对节的定义和gnu工具链对它的支持使它十分灵活
  • 最近忙了些啥

    最近自己忙忙叨叨 忙忙叨叨的 不知道都干了些啥 一直在围绕网站SNS建设的规划 讨论来讨论去 这个礼拜最终已经确定 虽然不是我想要的结果 但是我想时间已经不能再等人了 总要人做出牺牲 网站在排名方面一直没有太多的变化 SNS还是准备采用di
  • java日期和时间戳相互转换(实际项目开发总结)

    第一步 改变数据库中字段类型 我这里用的是bigint类型 第二步 编写转换代码 由于项目中用的都是时间戳 直接抽成工具类了 工具类最下面有测试的main方法 代码都一样 package com anjiplus template gaea
  • 深度学习常用单词

    深度学习英文单词表 英文 缩写 汉语 Absolute value rectification 绝对值整流 Activation Function 激活函数 Accumulated error backpropagation 累积误差反向传
  • proxy代理配置 goproxy 代理配置

    1 百度上搜索 goproxy 2 下载 proxy linux amd64 tar gz 2 1 直接下载地址 该版本 不限制默认数量 调整默认的每秒最大连接数 由默认20改为默认0无限制 https github com snail00
  • Maven配置了junit依赖,jar包已经导入,但是在使用Test测试时报错

    Maven配置了junit依赖 jar包已经导入 但是在使用Test测试时报错 作用域问题 每一个依赖都有一个scope标签标示这个依赖可以在哪里使用 如果作用域为test 那么只能在测试 Test Resource Root 包下使用 一
  • 存储器、运算器、控制器基本结构以及一条指令的执行

    Abstract 此篇文章讲述的是计算机存储器 控制器 运算器的基本结构组成以及指令的具体执行顺序 CPU包括运算器和控制器 而主机主要包括CPU和存储器 内容参考于 哈工大计算机组成原理 刘宏伟 存储器的基本组成 如下图所示 主存由存储体
  • Android获取APP的Package和Activity

    在使用android自动化测试工具中启动应用时 需要填写被测程序的包名和启动的Activity 以下是查看应用包名package和入口activity名称的方法 aapt 使用aapt aapt是sdk自带的一个工具 在sdk builds
  • 糖酵解反应动力学方程的微分方程建模

    糖酵解反应动力学方程的微分方程建模 题目 对于下面的糖酵解反应 设其满足如下动力学方程 d d
  • 服务器卡顿了该如何处理

    服务器卡顿了该如何处理 当Windows系统的服务器出现卡顿问题时 以下是一些常见的故障排除步骤 1 检查网络连接 确保服务器的网络连接正常 检查网络设备 交换机 防火墙等设备 确保它们正常运行 尝试通过其他计算机访问服务器 以确定是否存在
  • jdbc连接MySQL数据库(完整文件+详细说明)

    使用jdbc连接数据库 可以直接在方法中定义url user psd等信息 也可以读取配置文件 但是在web项目中肯定是要使用第二种方式的 为了统一 只介绍第二种方式 步骤 1 创建配置文件db properties 无论是eclipse还
  • VB ListView控件各种操作详解

    Private Sub Form Load ListView1 SmallIcons ImageList1 Object 把ImageList1图标列表控件绑定到 ListView1列表控件中来 ListView1 ListItems Cl
  • nodejs面试官:如何实现jwt鉴权机制?说说你的思路

    一 是什么 JWT JSON Web Token 本质就是一个字符串书写规范 如下图 作用是用来在用户和服务器之间传递安全可靠的信息 在目前前后端分离的开发过程中 使用token鉴权机制用于身份验证是最常见的方案 流程如下 服务器当验证用户
  • 游戏服务器被攻击了怎么办?

    随着互联网的发展 网民数量激增 电子游戏的普及 庞大的玩家数量必然推动游戏市场发展 游戏受到攻击是游戏开发者的痛点 DDOS攻击是流量攻击的一个总称 还包括SYN Flood ACK Flood UDP Flood TCP Flood IC
  • Java按一行一行进行文件的读取或写入

    测试代码 import org junit jupiter api Test import java io import java util Arrays public class FileTest 一行一行读取文件 适合字符读取 若读取中
  • Android 生态消息推送平台介绍

    一 手机厂商平台 华为消息推送服务 华为推送 Push 是为开发者提供的消息推送平台 建立了从云端到手机端的消息推送通道 使应用可以将最新信息及时通知用户 从而构筑良好的用户关系 提升用户的感知和活跃度 推送透传消息 以透传方式将自定义的内

随机推荐

  • Python中“from docx import Document“报错问题以及怎么提取.docx文档中所有的红色字体

    1 Python中 from docx import Document 报错问题 Pycharm中 当我们输入 from docx import Document 报错问题 在Pycharm中 我们若是想要操作word文件 我们就必须要使用
  • 广度优先搜索(1)之树的层序遍历

    文章目录 零 导言 一 例子引入 1 题目描述 2 题目分析 3 算法实现与解释 二 概念定义 1 定义 2 深入理解 3 相关知识 三 相关习题 零 导言 这一系列博客的创作初衷是为了记录自己在刷题过程中对于一些比较经典的并且很哇塞的题型
  • 苹果cmsV10采集插件&&一键配置定时任务采集

    苹果cmsV10采集插件 下载地址 https pan baidu com s 1NuY0sTQbp CjGaXYH2fdsg 支持断点采集 支持添加播放器自定义解析接口 支持批量修改播放器接口 支持全网搜索资源 支持一键配置定时任务 安装
  • 介绍8421码,5421码,2421码

    8421码 5421码 2421码都是用编码中的bcd码组成的 而bcd码是用 4 位二进制来表示 1 位十进制 即使用 4 个位来存储一个十进制的值 使二进制和十进制之间得到快速转换 bcd码又可分为有权码和无权码两类 无权码包括了余3码
  • 一周AIGC丨国内首个估值 100 亿级大模型独角兽诞生,腾讯混元、蚂蚁金融大模型亮相...

    成立于 2019 年的智谱 AI 晋升为国内首个估值超 100 亿人民币的大模型领域独角兽 早一个月把电灯泡拿出来 不重要 的腾讯 最终还是免不了随大流 腾讯混元大模型正式推出 但用户还要排队申请 蚂蚁金融大模在外滩大会亮相 宣称解决产业真
  • C语言必背代码大全

    对于刚学计算机编程的同学来说 每一个编程知识都觉得很重要 下面小编为大家整理了c语言必背代码 希望大家喜欢 1 输出9 9口诀 共9行9列 i控制行 j控制列 include stdio h main int i j result for
  • 2014传智播客C++第三期基础班+就业班至9月份 完整版

    课程简介 第一阶段C语言10天 此阶段兼顾基础班升级学员与直接报就业班学员 突出面试辅导为主 1 常量与变量 数据类型 数据类型转换 数据输入与输出 面试辅导 2 C语言运算符 C语言操作符 C语言表达式 表达式优先级 面试辅导 3 C语言
  • 图的深度优先遍历DFS (邻接矩阵实现) c语言

    图的遍历是指从图中的某一顶点出发 按照一定的策略访问图中的每一个顶点 每个顶点有且只能被访问一次 深度优先遍历也叫深度优先搜索 Depth First Search 它的遍历规则 先选择一个初始顶点 再规定一个方向 例如往右边一直遍历 于是
  • canvas基本用法

    首先创建canvas元素
  • 在Windows下编译扩展OpenCV 3.4.2 + opencv_contrib

    请参考 https www cnblogs com jliangqiu2016 p 5597501 html 这里主要说一下注意点 1 编译过程中会提示缺少以下文件 vgg generated 48 i vgg generated 64 i
  • 欧拉角的详解

    转自 https blog csdn net schrodinger1900 article details 52734568 关于旋转永远是做游戏的难点和混乱点 我们知道表示一个旋转有多种方式 简单的欧拉角 复杂点的四元数 再复杂点的矩阵
  • PS 2023 24.7 Beta Ai 如何解决橙色错误弹窗问题?

    距离Adobe软件公司首次将图像编辑及数字绘画软件Photoshop推出到大众面前已经过去35年 最近该公司又再次书写了属于Photoshop的历史新篇章 Adobe 发布的 Photoshop Beta 新增 创意填充 Generativ
  • Linux操作系统shell指令详解

    shell指令基本概念 命令行提示符 ubuntu 用户名 分隔符 ubuntu 主机名 家目录 当前所在的路径 普通用户权限 root 切换用户 su 用户名 gt 切换到指定用户 su gt 默认切换到超级用户 sudo 加在指令前 g
  • 【Hyperledger Fabric 开发学习1】 环境搭建

    1 概览 准备工作 1 系统环境准备 Ubuntu 20 02 LTC 2 apt 更换镜像源 3 辅助工具安装 4 安装go 5 安装容器docker和docker compose Hyperledger Fabric安装 方法1 以bo
  • Unity常见平台汇总

    UNITY EDITOR Unity编辑器 UNITY EDITOR WIN Windows 操作系统 UNITY EDITOR OSX macos操作系统 UNITY STANDALONE OSX 专门为macos 包括Universal
  • std::atomic和std::mutex区别

    std atomic介绍 模板类std atomic是C 11提供的原子操作类型 头文件 include
  • (附源码)node.js蒲公英旅游系统 毕业设计15565

    nodejs 蒲公英旅游系统 摘 要 随着社会的发展 社会的各行各业都在利用信息化时代的优势 计算机的优势和普及使得各种信息系统的开发成为必需 蒲公英旅游系统设计 主要的模块包括查看后台首页 轮播图 轮播图管理 公告管理 公告 资源管理 旅
  • 华为鸿蒙电脑操作系统测试版,华为鸿蒙OS测试

    软件介绍 华为鸿蒙OS测试平台是一款华为测试手机新系统的测试平台 这里可以让申请的用户最新体验华为的最新鸿蒙系统 让数百万用户去发现华为系统的不足 然后华为官方进行优化 我相信很多人都愿意做这个小白鼠 快来关注吧 华为鸿蒙OS测试软件简介
  • 【满分】【华为OD机试真题2023 JAVA&JS】Excel单元格数值统计

    华为OD机试真题 2023年度机试题库全覆盖 刷题指南点这里 Excel单元格数值统计 知识点递归循环数组 时间限制 2s 空间限制 256MB 限定语言 不限 题目描述 Excel工作表中对选定区域的数值进行统计的功能非常实用 仿照Exc
  • 使用Simulink进行stm32开发2

    使用Simulink进行stm32开发2 小车直流电机控制 1 配置工程文件 simulink 模块搭建 stm32驱动模块 配置数据字典 配置电机控制函数 模块封装 加入输入并生成代码 基于对模型开发的学习 在这里用simulink搭建小