• 327查看
  • 0回复

[底层软件] 使用STM32学习Simulink-(1)点亮一颗LED实验

[复制链接]


该用户从未签到

发表于 2-3-2024 15:23:08 | 显示全部楼层 |阅读模式

汽车零部件采购、销售通信录       填写你的培训需求,我们帮你找      招募汽车专业培训老师


本次实验系统环境

Matlab版本:2021b

系统环境:Win10专业版

使用STM32学习Simulink-(1)点亮一颗LED实验w1.jpg

模型与原理图  

simulink模型如图5.1所示,实验现象PB8以0.5S周期反转,PB9以1S周期翻转闪烁,本次实验电路原理如图5.2所示,实验所使用的下载器为STLINK 2V1版本,下载器自带一个串口,完整实验电路板如图5.3所示

使用STM32学习Simulink-(1)点亮一颗LED实验w2.jpg

图5.1 两颗LED闪烁simulink模型

使用STM32学习Simulink-(1)点亮一颗LED实验w3.jpg

图5.2 LED闪烁电路图

使用STM32学习Simulink-(1)点亮一颗LED实验w4.jpg

图5.3 实验开发板



基础模型介绍与分析

“Digital Write”模型用于控制I/O口作为普通输出用,双击模型可更改引脚编号,如图5.4所示其引脚对应STM32的PB8端口,例如想使用PA5引脚时,可通过将其改为“PA_5“实现对PA5的控制,点击右侧的”View pin map“如图5.5所示可以查看可定义的引脚编号,里面的引脚定义为STM32官方开发板(型号为STM32 Nucleo F103RB)

使用STM32学习Simulink-(1)点亮一颗LED实验w6.jpg

图5.4 Digital Write模型

使用STM32学习Simulink-(1)点亮一颗LED实验w7.jpg

图5.5 Nucleo F103RB pin map图
“Pulse Generator”用于产生周期性脉冲,如果想实现不同周期下的LED闪烁,可以双击该模型更改“周期(秒)”和“脉冲宽度(周期百分比)”来实现LED的闪烁频率和控制亮和灭的时间,如图5.6所示。 使用STM32学习Simulink-(1)点亮一颗LED实验w8.jpg

图5.6 "Pulse Generator"模型设置
“Delay”模型设置如图5.7所示,可以通过修改“延迟长度”值实现不同周期翻转,其它地方这里保持默认,需要??注意??的是,这里的值跟采样时间有关系,由于本实验中在“Hardware Settings->求解器栏”中设置的信息都设置为自动,所以当图5.6中设置的参数发生变化时,采样周期也会发生相应变化。
使用STM32学习Simulink-(1)点亮一颗LED实验w9.jpg

图5.7 "Delay"模型设置
PB9 LED闪烁还用到了“NOT”模型,这里与读者所理解的not是同一个意思,即取反逻辑,当然也可以通过“运算符”栏将其更改为不同逻辑符号,相应的外观符号也会发生改变,读者朋友可以尝试更改练习。
使用STM32学习Simulink-(1)点亮一颗LED实验w10.jpg

图5.8 "NOT"模型设置



总 结

本节以控制两个LED闪烁模型为示范,介绍simulink模型的基本使用用方法,实现同样效果LED闪烁功能,可以通过搭建不同的模型来实现,非常的直观灵活,模型修改起来也比较方便。

这里给读者留个练习题,不使用本节介绍的模型方式实现同样LED闪烁功能,模型该如何搭建?

该用户已被删除
发表于 14-3-2025 20:48:00 | 显示全部楼层
回复如下:

基于STM32的学习Simulink实验环境如下:

一、软件环境:

1. Matlab版本:2021b。
2. Simulink用于建模和仿真。

二、硬件环境:

1. 系统环境:Windows 10专业版。
2. 实验电路板:包含STM32微控制器、LED灯、STLINK下载器(版本2V1)。

实验描述:

本次实验旨在通过Simulink模型控制STM32微控制器,实现LED灯的闪烁。实验现象为PB8端口LED以0.5秒周期反转,PB9端口LED以1秒周期翻转闪烁。实验电路原理简单明了,通过Simulink模型生成控制信号,通过STLINK下载器传输到STM32,进而控制LED灯的状态。

基础模型介绍与分析待续…(此处未完整提供基础模型介绍与分析内容)
回复 支持 反对

使用道具 举报

快速发帖

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|Archiver|汽车工程师之家 ( 渝ICP备18012993号-1 )

GMT+8, 19-8-2025 18:46 , Processed in 0.374994 second(s), 38 queries .

Powered by Discuz! X3.5

© 2001-2013 Comsenz Inc.