STM32 proteus + STM32Cubemx仿真教程(第一课LED教程)
文章目录
- 前言
- 一、STM32点亮LED灯的原理
- 1.1GPIO是什么
- 1.2点亮LED灯的原理
- 二、STM32Cubemx创建工程
- 三、proteus仿真电路图
- 四、程序代码编写
- 1.LED灯操作函数介绍
- HAL_GPIO_WritePin
- 函数原型
- 参数说明
- 示例代码
- HAL_GPIO_TogglePin
- 函数原型
- 参数说明
- 示例代码
- 2.代码编写
- 3.烧写程序
- 总结
前言
本篇文章开始带大家学习如何使用proteus和STM32Cubemx来完成STM32的学习,第一节课我们先来学习点亮LED灯。
proteus使用8.9版本。
STM32Cubemx使用6.3版本。
一、STM32点亮LED灯的原理
1.1GPIO是什么
GPIO(General-Purpose Input/Output,即通用输入输出)是微控制器上的一种通用引脚。GPIO引脚可以配置为输入或输出模式,用来读取外部信号(如按钮按下的状态)或控制外部设备(如点亮LED灯)。GPIO是微控制器与外部世界交互的重要接口,广泛应用于嵌入式系统中。
GPIO的基本功能
输入模式:引脚可以读取外部设备的状态,例如开关、按钮等。
输出模式:引脚可以输出高电平或低电平信号,用来控制外部设备,例如LED灯、继电器等。
中断功能:某些GPIO引脚可以配置为中断模式,当引脚状态发生变化时触发中断。
复用功能:有些GPIO引脚可以复用为其他外设功能,例如UART、SPI、I2C等。
1.2点亮LED灯的原理
1.配置GPIO引脚
首先,需要将微控制器的某个GPIO引脚配置为输出模式。以STM32为例,通常需要以下步骤:
使能GPIO时钟:在配置GPIO之前,需要使能对应的GPIO端口时钟。例如,使用GPIOA端口时,需要使能GPIOA的时钟。
配置引脚模式:将对应引脚配置为输出模式。
配置引脚类型和速度:可以选择推挽输出或开漏输出,并设置输出速度(低速、中速、高速)。
2.控制GPIO引脚输出
配置好GPIO引脚后,可以通过控制引脚的电平来点亮或熄灭LED灯。LED灯通常连接在GPIO引脚与地之间(阳极接GPIO引脚,阴极接地),或者GPIO引脚与Vcc之间(阴极接GPIO引脚,阳极接Vcc)。
点亮LED:将GPIO引脚输出低电平(0V),电流从Vcc流经LED到地,LED点亮。
熄灭LED:将GPIO引脚输出高电平(3.3V或5V),LED两端电压相同,无电流流过,LED熄灭。
3.完整流程
使能时钟:启用GPIO端口的时钟。
初始化引脚:配置GPIO引脚为输出模式。
控制电平:通过设置引脚的高低电平来控制LED灯的点亮与熄灭。
二、STM32Cubemx创建工程
1.选择芯片型号:


2.配置Debug:

3.配置时钟

4.设置时钟树
输入72双击回车即可。

5.工程配置


6.选择一个引脚作为输出引脚,用于点亮LED灯

三、proteus仿真电路图
1.创建工程





2.添加对应的元器件



3.元器件放置
这里还需要注意电阻值的大小,电阻假如太大的可能会导致LED灯无法被点亮。

4.STM32时钟主频设置
这里设置成72MHZ和STM32Cubemx中设置的保持一致

5.提供配电网



四、程序代码编写
1.LED灯操作函数介绍
在STM32 HAL库中,HAL_GPIO_WritePin和HAL_GPIO_TogglePin是两个常用的GPIO控制函数。下面详细讲解它们的功能和使用方法。
HAL_GPIO_WritePin
HAL_GPIO_WritePin函数用于设置指定GPIO引脚的电平状态。这个函数可以将GPIO引脚设置为高电平或低电平,以控制连接到该引脚的外部设备(如LED灯)。
函数原型
void HAL_GPIO_WritePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState);
参数说明
GPIOx: 指定GPIO端口基地址,具体可以是GPIOA,GPIOB,GPIOC等。GPIO_Pin: 指定GPIO引脚,使用宏定义,如GPIO_PIN_0,GPIO_PIN_1等。可以通过按位或运算指定多个引脚,例如GPIO_PIN_0 | GPIO_PIN_1。PinState: 指定引脚状态,可以是以下值之一:GPIO_PIN_RESET(低电平)GPIO_PIN_SET(高电平)
示例代码
// 将GPIOA的第5个引脚设置为低电平
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET);// 将GPIOA的第5个引脚设置为高电平
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET);
HAL_GPIO_TogglePin
HAL_GPIO_TogglePin函数用于切换指定GPIO引脚的电平状态。如果引脚当前是高电平,则切换为低电平;如果引脚当前是低电平,则切换为高电平。这个函数常用于控制需要反复切换状态的设备,例如闪烁的LED灯。
函数原型
void HAL_GPIO_TogglePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
参数说明
GPIOx: 指定GPIO端口基地址,具体可以是GPIOA,GPIOB,GPIOC等。GPIO_Pin: 指定GPIO引脚,使用宏定义,如GPIO_PIN_0,GPIO_PIN_1等。可以通过按位或运算指定多个引脚,例如GPIO_PIN_0 | GPIO_PIN_1。
示例代码
// 切换GPIOA的第5个引脚的电平状态
HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5);
2.代码编写

3.烧写程序
将对应的hex文件选择进去。

运行程序

LED灯被点亮:

总结
本篇文章就讲解到这里,大家有什么疑问都可以留言。
本篇文章代码和工程将放在微信公众号中。
回复 STM32仿真LED即可领取源码和工程。
相关文章:
STM32 proteus + STM32Cubemx仿真教程(第一课LED教程)
文章目录 前言一、STM32点亮LED灯的原理1.1GPIO是什么1.2点亮LED灯的原理 二、STM32Cubemx创建工程三、proteus仿真电路图四、程序代码编写1.LED灯操作函数介绍HAL_GPIO_WritePin函数原型参数说明示例代码 HAL_GPIO_TogglePin函数原型参数说明示例代码 2.代码编写3.烧写程序 总…...
享元模式
前言 享元模式:运用共享技术有效地支持大量细粒度的对象。 在享元对象内部并且不会随环境改变而改变的共享部分,可以称为是享元对象的内部状态,而随环境改变而改变的、不可以共享的状态就是外部状态了。事实上,享元模式可以避免大…...
R语言数据分析16-针对芬兰污染指数的分析与考察
1. 研究背景及意义 近年来,随着我国科技和经济高速发展,人们生活质量也随之显著提高。但是, 环境污染问题也日趋严重,给人们的生活质量和社会生产的各个方面都造成了许多不 利的影响。空气污染作为环境污染主要方面,更…...
Search用法Python:深入探索搜索功能的应用与技巧
Search用法Python:深入探索搜索功能的应用与技巧 在Python编程中,搜索功能是一项至关重要的技能,它能够帮助我们快速定位并处理数据。然而,对于初学者来说,如何高效地使用搜索功能可能会带来一些困惑。本文将从四个方…...
STM32的FreeRtos的学习
首先就是去官网下载一个源文件:FreeRtos官网 下载下来的是一个zip文件,解压缩了。 然后再工程文件夹中创建个文件夹: 在这个文件夹中创建3个文件夹: 然后开始把下载下来的文件夹中的文件挑选出来放到我们的工程文件夹中࿱…...
从零入手人工智能(2)——搭建开发环境
1.前言 作为一名单片机工程师,想要转型到人工智能开发领域的道路确实充满了挑战与未知。记得当我刚开始这段旅程时,心中充满了迷茫和困惑。面对全新的领域,我既不清楚如何入手,也不知道能用人工智能干什么。正是这些迷茫和困惑&a…...
Web前端指南
前言 前端开发员主要负责网站的设计、外观和感觉。他们设计引人入胜的在线用户体验,激发用户兴趣,鼓励用户重复访问。他们与设计师密切合作,使网站美观、实用、快捷。 如果您喜欢创造性思维、打造更好的体验并对视觉设计感兴趣,这将是您的理想职业道路。 探讨前端、后端以…...
AI菜鸟向前飞 — LangChain系列之十七 - 剖析AgentExecutor
AgentExecutor 顾名思义,Agent执行器,本篇先简单看看LangChain是如何实现的。 先回顾 AI菜鸟向前飞 — LangChain系列之十四 - Agent系列:从现象看机制(上篇) AI菜鸟向前飞 — LangChain系列之十五 - Agent系列&#…...
nodejs 第三方库 exiftool-vendored
exiftool-vendored 是一款可以帮助你快捷修改图片信息的第三方库。如果你想要批量修改图片信息的话,那么它是一个不错的选择。 1.导入第三方库 在控制台中执行下面代码即可。 npm install exiftool-vendored --save2.获取信息 这里给出例子。 const { exiftool …...
docker部署redis实践
1.拉取redis镜像 # 拉取镜像 sudo docker pull redis2.创建映射持久化目录 # 创建目录 sudo mkdir -p $PWD/redis/{conf,data}3. 运行redis 容器,查看当前redis 版本号 # 运行 sudo docker run --name redis -d -p 6379:6379 redis # 查看版本号 sudo docker ex…...
Web前端学习之路:深入探索学习时长与技能进阶的奥秘
Web前端学习之路:深入探索学习时长与技能进阶的奥秘 在数字化时代,Web前端技术成为了连接用户与互联网世界的桥梁。对于初学者来说,学习Web前端究竟需要多久,以及如何高效掌握相关技能,一直是困扰他们的难题。本文将从…...
如何不用命令创建用户
都有哪些操作: 1、在/etc/passwd添加一行 2、在/etc/shadow添加一行 3、在/etc/group添加一行 4、创建用户家目录 5、创建用户邮件文件 例如: 创建用户jerry 要求: uid:777 主组:hadoop(800)…...
基于Python实现可视化分析中国500强排行榜数据的设计与实现
基于Python实现可视化分析中国500强排行榜数据的设计与实现 “Design and Implementation of Visual Analysis for China’s Top 500 Companies Ranking Data using Python” 完整下载链接:基于Python实现可视化分析中国500强排行榜数据的设计与实现 文章目录 基于Python实现…...
VUE3 学习笔记(13):VUE3 下的Element-Plus基本使用
UI是页面的门面,一个好的UI自然令人赏心悦目;国人团队开发的ElementUI在众多UI中较为常见,因此通过介绍它的使用让大家更好的了解第三方UI的使用。 安装 Npm install element-plus --save 或 Cnpm install element-plus --save 配置 全局配置…...
MySql数据库安全加固
设置密码复杂度策略 查看密码策略 SHOW VARIABLES LIKE validate_password%; 设置密码策略 INSTALL PLUGIN validate_password SONAME validate_password.so; 设置登陆失败策略 安装插件(谨慎操作,可能会导致数据库卡死) install plug…...
Nginx(title小图标)修改方法
本章主要讲述Nginx如何上传网站图标。 操作系统: CentOS Stream 9 首先我们bing搜索ico网站图标在线设计,找到喜欢的设计分格并下载。 是一个压缩包 然后我们上传到nginx解压 [rootlocalhost html]# rz[rootlocalhost html]# unzip favicon_logosc.z…...
iOS 17.5中的一个漏洞
i0S 17.5中的一个漏洞 iOS 17.5中的一个漏洞会使已刚除的照片重新出现,并目此问题似乎会影响甚至已擦除并出售给他人的 iPhone 和 iPad. 在2023年9月,一位Reddit用户根据Apple的指南擦除了他的iPad,并将其卖给了一位朋友。然而,这…...
如何在 iPhone 上恢复已删除的短信
本文介绍如何检索已删除的短信和 iMessage 以及恢复丢失的消息。说明适用于 iOS 17 及更高版本。 如何在 iOS 17及更高版本中恢复文本 恢复已删除短信的最简单方法是使用 iOS 17。从删除短信到恢复它有 30 到 40 天的时间。 在“信息”的对话屏幕中,选择“过滤器”…...
矩阵练习1
73.矩阵置零 这道题相对简单。 首先我们需要标记需要置零的行和列,可以在遍历矩阵中的元素遇到0,则将其行首和列首元素置为0。在此过程中首行、首列会受影响,因此先用两个变量记录首行、首列是否需要被置0,接着遍历非首行、非首…...
【C++ | 拷贝赋值运算符函数】一文了解C++的 拷贝赋值运算符函数
😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 ⏰发布时间⏰:2024-06-09 1…...
多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度
一、引言:多云环境的技术复杂性本质 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时,基础设施的技术债呈现指数级积累。网络连接、身份认证、成本管理这三大核心挑战相互嵌套:跨云网络构建数据…...
OpenLayers 可视化之热力图
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...
springboot 百货中心供应链管理系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...
8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂
蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...
深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法
深入浅出:JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中,随机数的生成看似简单,却隐藏着许多玄机。无论是生成密码、加密密钥,还是创建安全令牌,随机数的质量直接关系到系统的安全性。Jav…...
UE5 学习系列(三)创建和移动物体
这篇博客是该系列的第三篇,是在之前两篇博客的基础上展开,主要介绍如何在操作界面中创建和拖动物体,这篇博客跟随的视频链接如下: B 站视频:s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...
linux 下常用变更-8
1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...
第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词
Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid,其中有多少个 3 3 的 “幻方” 子矩阵&am…...
聊一聊接口测试的意义有哪些?
目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开,首…...
大学生职业发展与就业创业指导教学评价
这里是引用 作为软工2203/2204班的学生,我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要,而您认真负责的教学态度,让课程的每一部分都充满了实用价值。 尤其让我…...
