(学习记录)使用HAL库 STM32CubeMX——GPIO引脚输入配置

news2024/11/24 19:06:47

STM32F103C8T6的GPIO引脚输入配置

时钟配置

(学习记录)使用 STM32CubeMX——配置时钟(入门)icon-default.png?t=O83Ahttps://blog.csdn.net/Wang2869902214/article/details/142423522

GPIO 引脚输出配置

(学习记录)使用 STM32CubeMX——GPIO引脚输出配置icon-default.png?t=O83Ahttps://blog.csdn.net/Wang2869902214/article/details/142436449

GPIO输入引脚选择

①:这里我们选择一个PB11作为我们本章节的输入引脚

这里引脚配置时,有些选项与上一章节有所不同:

这里我们选择:GPIO_Input

1. PB11(示例引脚,非PC13)

  • PB11:这是STM32F103C8T6微控制器上的一个GPIO(通用输入输出)引脚编号,表示端口B的第11脚。

2. Reset_State

  • Reset_State:默认状态(不使用)

3. ADC1_EXTI11, ADC1_EXTI12

  • ADC1_EXTI11, ADC1_EXTI12:ADC1和ADC2的通道11和通道12

4. I2C2_SDA

  • I2C2_SDA:表示该引脚被配置为I2C2总线的串行数据线(SDA)。I2C是一种多主机串行总线,用于连接低速外设。SDA线用于传输数据和地址。

5. TIM2_CH4

  • TIM2_CH4:表示该引脚被配置为定时器2的通道4输出。STM32的定时器可以用于生成PWM(脉冲宽度调制)信号、测量时间间隔等。

6. USART3_RX

  • USART3_RX:表示该引脚被配置为通用同步异步收发传输器(USART)3的接收(RX)引脚。USART是一种用于串行通信的协议,广泛用于微控制器与外部设备之间的数据交换。

7. GPIO_Input, GPIO_Output, GPIO_Analog

  • GPIO_Input:将引脚配置为输入模式,用于读取外部信号的状态。

  • GPIO_Output:将引脚配置为输出模式,用于控制外部设备或信号。

  • GPIO_Analog:将引脚配置为模拟输入模式,用于连接模拟信号源到ADC(模数转换器),进行模拟到数字的转换。

8. EVENTOUT

  • EVENTOUT:在某些STM32系列中,EVENTOUT功能允许用户将内部事件(如定时器更新事件、外部中断事件等)路由到指定的GPIO引脚。然而,不是所有STM32系列都支持EVENTOUT功能,且具体实现可能因型号而异。

9. GPIO_EXTI11

  • GPIO_EXTI11:这通常表示引脚被配置为外部中断线11的输入。当该引脚上的信号满足特定条件(如上升沿、下降沿或双边沿触发)时,可以生成外部中断请求。

详细GPIO 引脚 输入配置

这里我们当作按键的输入模式:选择引脚上拉Pull-up 和用户标签:KEY

1. GPIO mode (GPIO模式) - Input mode (输入模式)

  • Input mode(输入模式): 选择此模式将引脚配置为输入状态,用于读取外部电路或设备的信号。在输入模式下,引脚可以感知外部电平的变化,并将这些变化传递给微控制器的内部电路进行处理。

2. GPIO Pull-up/Pull-down (GPIO上拉/下拉)

  • No Pull-up and Pull-down(无上拉/下拉): 在此设置下,引脚处于浮空状态,没有内部电阻连接到电源或地。这意味着引脚电平将完全由外部电路决定,可能会受到噪声或干扰的影响。

  • Pull-up(上拉): 选择此选项后,引脚内部会连接一个上拉电阻,将引脚电平默认拉高到高电平(通常接近供电电压)。当外部电路将引脚拉低时,微控制器可以检测到低电平信号。上拉电阻有助于确保引脚在未被外部电路驱动时保持稳定的电平。

  • Pull-down(下拉): 选择此选项后,引脚内部会连接一个下拉电阻,将引脚电平默认拉低到低电平(接近地电平)。当外部电路将引脚拉高时,微控制器可以检测到高电平信号。下拉电阻同样有助于确保引脚在未被外部电路驱动时保持稳定的电平。

3. User Label (用户标签)

  • User Label(用户标签): 这是一个可选的字段,允许您为引脚分配一个自定义的名称或标签。这有助于在代码中更容易地识别和使用该引脚,特别是在处理多个引脚和复杂电路时。通过为引脚设置用户标签,您可以在代码中使用更具描述性的名称来引用引脚,从而提高代码的可读性和可维护性。

用途总结

  • 输入模式用于读取外部信号,是GPIO引脚的基本功能之一。

  • 上拉/下拉电阻用于确保引脚在未被外部电路驱动时保持稳定的电平,减少噪声和干扰的影响。

  • 用户标签用于为引脚分配自定义名称,提高代码的可读性和可维护性。

在配置GPIO引脚为输入模式时,请根据您的应用需求选择合适的上拉/下拉选项,并为引脚分配一个易于识别的用户标签(如果需要)。这些设置将帮助您确保引脚能够正确地读取外部信号,并在代码中轻松地引用和管理引脚。

按键输入推荐配置

  • GPIO Pull-up/Pull-down
    • 如果按键在未被按下时,其引脚通过外部电阻连接到地(GND),那么您通常需要在STM32内部选择“Pull-up”(上拉)来确保引脚在未被按键按下时保持高电平。当按键被按下时,引脚会被拉低到地电平,微控制器可以检测到这个低电平信号。
    • 如果按键在未被按下时,其引脚通过外部电阻连接到电源(如3.3V),那么您通常需要在STM32内部选择“Pull-down”(下拉),但这种情况较少见。更常见的是使用内部上拉电阻和外部下拉电阻的组合,但在这种情况下,您仍然会选择内部上拉,并在外部电路上实现下拉。
    • 如果按键电路中没有外部上拉或下拉电阻,您需要根据按键的具体电路设计和STM32的内部特性来决定是使用上拉还是下拉,或者选择“No Pull-up and Pull-down”(无上拉/下拉)并依靠外部电路的稳定性。

按键输入控制LED代码

生成代码后,我们可以继续在主函数的while循环中:
 

  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */

	// 按键被按下,翻转LED的状态   注意:这里实际上使用需要加上按键消抖逻辑 
	if (HAL_GPIO_ReadPin(KEY_GPIO_Port, KEY_Pin) == GPIO_PIN_RESET) // 按键的用户标签为 KEY
	{  
		HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin); // LED灯的用户标签为 LED
	}
	  
  }
  /* USER CODE END 3 */

这里需要加上消抖逻辑,只是演示按键输入效果

编译下载

如果点击下载后没有单片机没有反应,则可能需要复位程序才会运行
如果需要下载后程序自动运行,可以参考,其中有说明下载配置:(学习记录)使用 STM32CubeMX——GPIO引脚输出配置
 

效果演示:

章节结尾:

至此,本章节GPIO输入配置部分结束,再下一章学习笔记中,将会记录GPIO外部中断配置


 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

优青博导团队指导-组蛋白甲基化修饰、实验设计、实验结果分析、测序分析及SCI论文辅助,精准高效,为农医学科研保驾护航!

组蛋白甲基化修饰工具(H3K4me3 ChIP-seq) 组蛋白甲基化类型也有很多种,包括赖氨酸甲基化位点H3K4、H3K9、H3K27、H3K36、H3K79和H4K20等。组蛋白H3第4位赖氨酸的甲基化修饰(H3K4)在进化上高度保守,是被研究最多的组蛋白修饰之一。

相亲交友网站为不同年龄层提供的服务差异

随着互联网技术的飞速发展,相亲交友网站已经成为现代人寻找伴侣的重要途径之一。无论是年轻人还是中老年人,都可以通过相亲交友网站找到自己的另一半。然而,不同年龄层的人在使用相亲交友网站时的需求和服务体验上存在显著差异。本文将探讨这…

【视频讲解】非参数重采样bootstrap的逻辑回归Logistic应用及模型差异Python实现

全文链接:https://tecdat.cn/?p37759 原文出处:拓端数据部落公众号 分析师:Anting Li 本文将深入探讨逻辑回归在心脏病预测中的应用与优化。通过对加州大学欧文分校提供的心脏病数据集进行分析,我们将揭示逻辑回归模型的原…

思维可视化:2024年四大创新思维导图软件排行榜!

在快节奏的现代生活中,如何提高工作效率、整理繁杂信息成为许多人关注的焦点。思维导图作为一种高效的信息梳理工具,越来越受到职场人士的喜爱。今天,就为大家推荐几款优秀的思维导图软件,助您轻松应对各种工作场景。 福昕思维导…

《程序猿之设计模式实战 · 适配器模式》

📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗 🌻 CSDN入驻不久,希望大家多多支持,后续会继续提升文章质量,绝不滥竽充数…

C++(学习)2024.9.24

目录 容器 1.标准模板库STL 2.概念 3.顺序容器 (1)array数组 (2)vector向量 (3)list列表 (4)deque 队列 4.关联容器 5.迭代器 面向对象核心 继承 概念 构造函数 1.派生…

软件需求规格说明书编制模板参考(Doc原件)

1 范围 1.1 系统概述 1.2 文档概述 1.3 术语及缩略语 2 引用文档 3 需求 3.1 要求的状态和方式 3.2 系统能力需求 3.3 系统外部接口需求 3.3.1 管理接口 3.3.2 业务接口 3.4 系统内部接口需求 3.5 系统内部数据需求 3.6 适应性需求 3.7 安全性需求 3.8 保密性需…

项目实战总结-Kafka实战应用核心要点

Kafka实战应用核心要点 一、前言二、Kafka避免重复消费2.1 消费者组机制2.2 幂等生产者2.3 事务性生产者/消费者2.4 手动提交偏移量2.5 外部存储管理偏移量2.6 去重逻辑2.7 幂等消息处理逻辑2.8 小结 三、Kafka持久化策略3.1 持久化文件3.2 segment 分段策略3.3 数据文件刷盘策…

Leetcode面试经典150题-39.组合总和

给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。 candidates 中的 同一个 数字可以 无限制重复被选取 。如…

加固与脱壳01 - 环境搭建

虚拟机 VMWare 多平台可用,而且可以直接激活,需要先注册一个账号 https://support.broadcom.com/group/ecx/productdownloads?subfamilyVMwareWorkstationPro KALI 类Ubuntu系统,官方提供了 vmware 版本,直接下载就可以使用。…

【Python机器学习】NLP信息提取——提取人物/事物关系

目录 词性标注 实体名称标准化 实体关系标准化和提取 单词模式 文本分割 断句 断句的方式 使用正则表达式进行断句 词性标注 词性(POS)标注可以使用语言模型来完成,这个语言模型包含词及其所有可能词性组成的字典。然后,该…

三子棋小游戏

使用C语言编写代码,实现一个简单小游戏---三子棋 这里创建1个game.h文件,用来声明函数、宏的文件,一个game.c文件用来实现函数game(),一个play.h文件用来作为该游戏的源文件。 具体代码如下: …

利用大型语言模型轻松打造浪漫时刻

当情人节年年如约而至,每每都需费尽心思为对方营造一场令人难忘的仪式,却因缺乏创意与思路而倍感困扰。今天,我决定让大型语言模型为我们提供一些灵感和建议,让我们能够轻松实现这一目标。让我们开始行动吧!此前&#…

问卷是否要做信效度分析,5类信度与4类效度常用指标及评价标准

论文问卷进行分析时,大家是否有这样的疑惑—— 我收集的问卷是否需要进行信效度分析呢? 下面一文给大家梳理问卷信效度分析的相关内容,包括什么样的题目需要进行信效度分析、5类信度分析与4类效度分析常用指标及评价标准。 一、问卷是否需…

JW01二氧化碳传感器(串行通信 STM32)

目录 一、介绍 二、传感器原理 1.工作原理介绍 2.串口数据流格式 三、程序设计 main.c文件 usart3.h文件 usart3.c文件 四、实验效果 五、资料获取 项目分享 一、介绍 JW01-CO2检测模块是一种用于检测空气中二氧化碳浓度的传感器模块。它可以广泛应用于室内空气质量…

java算法OJ(1)位运算

目录 1.前言 2.正文 2.1位运算符号 2.1俩数相除 2.1.1题目 2.1.2示例 2.1.3题解 2.2二进制求和 2.2.1题目 2.2.2示例 2.2.3题解 2.3只出现一次的数字 2.3.1题目 2.3.2示例 2.3.3题解 2.4只出现一次的数字(进阶版) 2.4.1题目 2.4.2示例…

glb数据格式

glb数据格式 glb 文件格式只包含一个glb 文件,文件按照二进制存储,占空间小 浏览 浏览glb工具的很多,ccs,3D查看器等都可以,不安装软件的话用下面网页加载就可以,免费 glTF Viewer (donmccurdy.com) glb…

uniapp小程序中通过uni.setClipboardData实现复制功能无效的原因和解决方案

// 复制下载链接const shareFile (filePath) > {const pdfUrl 复制内容uni.showModal({title: 下载提示,content: 请复制链接到浏览器中下载,confirmColor: #eb2444,confirmText: 复制链接,success(res) {if (res.confirm) {uni.setClipboardData({data: pdfUrl, // url地…

C++: unordered系列关联式容器

目录 1. unordered系列关联式容器1.1 unordered_map1.2 unordered_set 2. 哈希概念3. 哈希冲突4. 闭散列5. 开散列 博客主页: 酷酷学 感谢关注!!! 正文开始 1. unordered系列关联式容器 在C98中,STL提供了底层为红黑树结构的一系列关联式容器,在查询时…

【笔记】自动驾驶预测与决策规划_Part4_时空联合规划

文章目录 0. 前言1. 时空联合规划的基本概念1.1 时空分离方法1.2 时空联合方法 2.基于搜索的时空联合规划 (Hybrid A* )2.1 基于Hybrid A* 的时空联合规划建模2.2 构建三维时空联合地图2.3 基于Hybrid A*的时空节点扩展2.4 Hybrid A* :时空节…