【STM32+HAL+Proteus】系列学习教程3---GPIO输出模式(LED流水灯、LED跑马灯)

实现目标

1、掌握GPIO 输出模式控制

2、学会STM32CubeMX软件配置GPIO

3、具体目标:1、开发板4个LED实现流水灯;2、开发板4个LED实现跑马灯灯。


一、STM32 GPIO 概述

1、GPIO定义

      GPIOGeneral-purpose input/output)是通用输入输出端口的英文简写,是STM32可控制的引脚。GPIO的引脚与外部硬件设备连接,可实现与外部通讯、控制外部硬件或者采集外部硬件数据的功能。
        STM32单片机的GPIO被分为很多组,每组有16个引脚,不同型号的MCU的GPIO个数是不同的,比如STM32F103C6T6只有PA、PB以及个别PC引脚而STM32F103ZET6拥有PA~PG的全部112个引脚。所有的GPIO都有基本的输入输出功能,同时GPIO还可以作为其它的外设功能引脚。
        STM32的大部分引脚除了当GPIO使用之外,还可以复用为外设功能引脚(比如串口、PWM、ADC等)。

2、GPIO硬件结构框图

 关键器件解析:
1、保护二极管:防止I/O引脚外部过高、过低的电压输入,当引脚电压高于VDDIOx时,上方的二极管导通;当引脚电压低于VSS时,下方的二极管导通,防止不正常电压引入芯片导致芯片烧毁。
2、开关:开关为TTL肖特基触发器,将模拟信号转化为0和1的数字信号,但当GPIO作为ADC采集电压通道时,此时信号不再经过触发器进行TTL电平转换。
3、P-MOS、N-MOS:单元电路使得GPIO具有“推挽输出”和“开漏输出”的功能。

3、GPIO工作模式

         STM32的GPIO共有8种工作模式:输入模式的模拟输入、上拉输入、下拉输入和浮空输入以及输出模式的推挽输出、开漏输出、推挽复用输出和开漏复用输出。同时,GPIO还支持三种最大翻转速度(2MHz、10MHz、50MHz)。

GPIO_Mode_AIN              // 模拟输入
GPIO_Mode_IN_FLOATING   // 浮空输入
GPIO_Mode_IPD               // 下拉输入
GPIO_Mode_IPU               // 上拉输入
GPIO_Mode_Out_OD        // 开漏输出
GPIO_Mode_Out_PP        // 推挽输出
GPIO_Mode_AF_OD         // 复用开漏输出
GPIO_Mode_AF_PP          // 复用推挽输出

4、GPIO每种工作模式的应用方式

二、原理图设计

说明:四个LED都是低电平点亮。开发板上管脚对应LED1--PB9,LED2--PB8,LED3--PB5,LED4--PB4.

三、STM32CubeMX 配置

1.4个LED配置

配置1:(1)上电初始电平为  High ,LED先不点亮;(2) 4个LED配置为推挽输出模式(OutPut Push Pull );(3)不需要上拉,下拉;(4)输出速度为Low  2MHz; (5)设置管脚标号 LED1--LED4

四、主要函数说明

1、GPIO外设库的文件:            
stm32f10xx_hal_gpio.h、
stm32f10xx_hal_gpio.c
2、操作GPIO常用HAL库函数
(1)功能:读取一个引脚的电平。
GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);

(2)功能:写一个引脚的电平,可写高电平,也可以是低电平。
void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState);

(3)功能:翻转一个引脚的电平
void HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);

五、程序设计

1、流水灯

	HAL_GPIO_WritePin(GPIOB, LED1_Pin, GPIO_PIN_RESET);	//LED1亮  
	HAL_Delay(200);  //延时200m	  
	HAL_GPIO_WritePin(GPIOB, LED2_Pin, GPIO_PIN_RESET);	//LED2亮  
	HAL_Delay(200);  //延时200m	  
	HAL_GPIO_WritePin(GPIOB, LED3_Pin, GPIO_PIN_RESET);	//LED3亮  
	HAL_Delay(200);  //延时200m	  
	HAL_GPIO_WritePin(GPIOB, LED4_Pin, GPIO_PIN_RESET);	//LED4亮  
	HAL_Delay(200);  //延时200m	  	  
	HAL_GPIO_WritePin(GPIOB, LED4_Pin|LED3_Pin|LED2_Pin|LED1_Pin, GPIO_PIN_SET);//关闭4个灯 
	HAL_Delay(200);  //延时200m	

2、跑马灯

	HAL_GPIO_WritePin(GPIOB, LED1_Pin, GPIO_PIN_RESET);	//LED1亮  
	HAL_Delay(200);  //延时200m	
	HAL_GPIO_WritePin(GPIOB, LED1_Pin, GPIO_PIN_SET);	//LED1灭	  
	HAL_GPIO_WritePin(GPIOB, LED2_Pin, GPIO_PIN_RESET);	//LED2亮  
	HAL_Delay(200);  //延时200m	  
	HAL_GPIO_WritePin(GPIOB, LED2_Pin, GPIO_PIN_SET);	//LED2灭	  
	HAL_GPIO_WritePin(GPIOB, LED3_Pin, GPIO_PIN_RESET);	//LED3亮  
	HAL_Delay(200);  //延时200m	  
	HAL_GPIO_WritePin(GPIOB, LED3_Pin, GPIO_PIN_SET);	//LED3灭	  
	HAL_GPIO_WritePin(GPIOB, LED4_Pin, GPIO_PIN_RESET);	//LED4亮  
	HAL_Delay(200);  //延时200m	  	  
	HAL_GPIO_WritePin(GPIOB, LED4_Pin|LED3_Pin|LED2_Pin|LED1_Pin, GPIO_PIN_SET);//关闭4个灯 
	HAL_Delay(200);  //延时200m	

六、实验效果

七、仿真实现


总结

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

牛客NC238 加起来和为目标值的组合【中等 DFS C++、Java、Go、PHP】

题目 题目链接: https://www.nowcoder.com/practice/172e6420abf84c11840ed6b36a48f8cd 思路 本题是组合问题,相同元素不同排列仍然看作一个结果。 穷经所有的可能子集,若和等于target,加入最终结果集合。 给nums排序是为了方便…

Ai-WB2 系列模组SDK接入亚马逊云

文章目录 前言一、准备二、亚马逊云物模型建立1. 注册亚马逊账号,登录AWS IoT控制台,[注册地址](https://aws.amazon.com/cn/)2. 创建好之后点击登录3. 创建物品以及下载证书 三、连接亚马逊云demo获取以及配置1. 下载源码2. 按照顺序执行下面指令3. 修改…

IDEA 2021.3.3最新激活破解教程(可激活至2099年,亲测有效)

1、ja-netfilter-all Windows 系统,点击运行 install-current-user.vbs 脚本,为当前用户安装破解补丁 截图是window环境下的激活方式 运行此补丁大约花费几分钟,点击 确定, 等待 Done 完成提示框出现,到这里&#xf…

HarmonyOS ArkUI实战开发-页面跳转(Router、Ability)

页面跳转可以分为页面内跳转和页面间跳转,页面内跳转是指所跳转的页面在同一个 Ability 内部,它们之间的跳转可以使用 Router 或者 Navigator 的方式;页面间跳转是指所跳转的页面属与不同的 Ability ,这种跳转需要借助 featureAbi…

51单片机数字温度报警器_DS18B20可调上下限(仿真+程序+原理图)

数字温度报警器 1 **主要功能:*****\*资料下载链接(可点击):\**** 2 **仿真图:**3 **原理图:**4 **设计报告:**5 **程序设计:**主函数外部中断函数DS18B20驱动 6 讲解视频7 **资料清…

完美运营版商城/拼团/团购/秒杀/积分/砍价/实物商品/虚拟商品等全功能商城

源码下载地址:完美运营版商城.zip 后台可以自由拖曳修改前端UI页面 还支持虚拟商品自动发货等功能 挺不错的一套源码 前端UNIAPP 后端PHP 一键部署版本

Linux 终止进程命令—sudo kill -9 <进程号>

一、查找占用端口的进程&#xff1a;使用以下命令找到占用了该端口的进程&#xff1a; sudo lsof -i :<端口号> 该命令将显示占用该端口的进程的详细信息。 二、结束占用端口的进程&#xff1a;根据上一步得到的进程信息&#xff0c;使用以下命令结束该进程&#xff1a…

CSS-vminvmax单位

vmin 和 vmax 单位 vmin 是相对于视口宽度和高度中较小值进行计算&#xff0c;它的值为视口宽度和高度中的较小值的百分比。 例如&#xff0c;如果视口宽度为 800px&#xff0c;高度为 1000px&#xff0c;那么 1vmin 等于 8px&#xff08;800px 的 1%&#xff09;。 vmax 是…

【Linux】权限(shell运行原理、概念,Linux权限)

&#x1f308;个人主页&#xff1a;秦jh__https://blog.csdn.net/qinjh_?spm1010.2135.3001.5343&#x1f525; 系列专栏&#xff1a;https://blog.csdn.net/qinjh_/category_12625432.html 目录 shell命令以及运行原理 创建和删除用户 创建新普通用户 删除用户 Linux权…

【bug】使用mmsegmentaion遇到的问题

利用mmsegmentaion跑自定义数据集时的bug处理&#xff08;使用bisenetV2&#xff09; 1. ValueError: val_dataloader, val_cfg, and val_evaluator should be either all None or not None, but got val_dataloader{batch_size: 1, num_workers: 4}, val_cfg{type: ValLoop}, …

Elasticsearch单机部署(Linux)

1. 准备环境 本文中Elasticsearch版本为7.12.0&#xff0c;JDK版本为1.8.0&#xff0c;Linux环境部署。 扩展&#xff1a; &#xff08;1&#xff09;查看Elasticsearch对应的常用的jdk版本如下&#xff1a;&#xff08;详情可看官网的支持一览表&#xff09; Elasticsearch a…

CTF网络安全大赛详情

网络安全已成为现代社会的一个关键挑战&#xff0c;随着互联网技术的飞速发展&#xff0c;从个人隐私保护到国家安全&#xff0c;网络安全的重要性日益突显。为了应对这一挑战&#xff0c;CTF&#xff08;Capture The Flag&#xff0c;中文&#xff1a;夺旗赛&#xff09;应运而…

03-JAVA设计模式-命令模式

命令模式 什么是命令模式 命令模式&#xff08;Command Pattern&#xff09;是一种行为设计模式&#xff0c;它将请求封装为对象&#xff0c;从而使你可用不同的请求把客户端与请求的处理者解耦,也称动作模式或事物模式。 在命令模式中&#xff0c;命令对象封装了接收者对象…

Hive架构原理

Hive Hive 的架构是设计用于在大数据环境下进行数据仓库操作和分析的系统。它建立在 Hadoop 生态系统之上&#xff0c;利用 Hadoop 的存储&#xff08;HDFS&#xff09;和计算&#xff08;MapReduce、Tez、Spark 等&#xff09;能力。 1. 元数据存储&#xff08;Metastore&am…

计算机网络-IS-IS链路状态数据库同步

在建立IS-IS邻接关系之后&#xff0c;路由器开始发送LSP报文进行链路状态数据库进行同步。 一、链路状态数据库同步 LSP&#xff08; Link State PDU&#xff0c;链路状态报文&#xff09; 用于交换链路状态信息。LSP分为两种&#xff1a;Level–1 LSP和Level–2 LSP。Level–1…

前端入门:HTML(列表和边框案例)

1.列表知识&#xff1a; list-style-position有两个值&#xff0c;分别是inside&#xff0c;outside&#xff0c;分别表示在标签里面和在标签外面。 2.案例&#xff1a; 源代码&#xff1a; html: <body> <div class"bigBox"> <div>在线解答问题…

基于Springboot+Mybatis-Plus+mysql+html旅游网站

博主介绍&#xff1a; 大家好&#xff0c;本人精通Java、Python、C#、C、C编程语言&#xff0c;同时也熟练掌握微信小程序、Php和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我有丰富的成品Java、Python、C#毕设项目经验&#xff0c;能够为学生提供各类…

【Spring进阶系列丨最终篇】一文详解Spring中的事务控制

0、说明 本篇文章是【Spring进阶系列】专栏的最后一篇文章&#xff0c;至此&#xff0c;我们对Spring的学习就告一段落&#xff0c;接下来我会持续更新【SpringSpringMVCMyBatis整合】专栏&#xff0c;欢迎免费订阅&#xff01; 文章目录 0、说明 一、Spring事务控制1、事务的环…

PDPS16.0单机版及许可证服务器授权安装教程分享

此前小编做过PDPS15(Tecnomatix_15.0)安装包及安装教程分享&#xff0c;此次分享是PDPS16(Tecnomatix_16.0)单机版安装结合SPLMLicenseServer许可证服务器授权安装的教程。服务器型是完整的pdps&#xff0c;单机版只装了个ps&#xff0c;ps的功能一样&#xff0c;仿真需求没要求…

iPerf 3 测试UDP和TCP方法详解

文章目录 前言一、What is iPerf / iPerf3 ?二、功能1. TCP and SCTP2. UDP3. 其他 三、 Iperf的使用1.Iperf的工作模式2. 通用指令3. 服务端特有选项4. 客户端特有选项5. -t -n参数联系 四、Iperf使用实例1. 调整 TCP 连接1. 1TCP 窗口大小调节1. 2 最大传输单元 (MTU)调整 2…