当前位置: 首页 > news >正文

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_WritePinHAL_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个文件夹: 然后开始把下载下来的文件夹中的文件挑选出来放到我们的工程文件夹中&#xff1…...

从零入手人工智能(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&#xff09…...

基于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…...

【网络】每天掌握一个Linux命令 - iftop

在Linux系统中,iftop是网络管理的得力助手,能实时监控网络流量、连接情况等,帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...

装饰模式(Decorator Pattern)重构java邮件发奖系统实战

前言 现在我们有个如下的需求,设计一个邮件发奖的小系统, 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其…...

在rocky linux 9.5上在线安装 docker

前面是指南,后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...

pam_env.so模块配置解析

在PAM(Pluggable Authentication Modules)配置中, /etc/pam.d/su 文件相关配置含义如下: 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块,负责验证用户身份&am…...

【AI学习】三、AI算法中的向量

在人工智能(AI)算法中,向量(Vector)是一种将现实世界中的数据(如图像、文本、音频等)转化为计算机可处理的数值型特征表示的工具。它是连接人类认知(如语义、视觉特征)与…...

【HTTP三个基础问题】

面试官您好!HTTP是超文本传输协议,是互联网上客户端和服务器之间传输超文本数据(比如文字、图片、音频、视频等)的核心协议,当前互联网应用最广泛的版本是HTTP1.1,它基于经典的C/S模型,也就是客…...

安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲

文章目录 前言第一部分:体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分:体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...

Java数值运算常见陷阱与规避方法

整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...

Qemu arm操作系统开发环境

使用qemu虚拟arm硬件比较合适。 步骤如下: 安装qemu apt install qemu-system安装aarch64-none-elf-gcc 需要手动下载,下载地址:https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x…...

根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要

根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分: 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...