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

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.xdnf.cn/news/150335.html

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

相关文章

货代选择海运系统时要注意什么问题?

在全球贸易蓬勃发展的当下,货代企业在物流链条中起着举足轻重的作用。而一个优质的海运系统,则是货代企业提升竞争力、实现高效运营的关键利器。那么,货代企业在选择海运系统时,需要注意哪些问题呢? 一、避免过于关注价…

前端报错401 【已解决】

前端报错401 【已解决】 在前端开发中,HTTP状态码401(Unauthorized)是一个常见的错误,它表明用户试图访问受保护的资源,但未能提供有效的身份验证信息。这个错误不仅关乎用户体验,也直接关系到应用的安全性…

什么软件可以录屏?5个软件帮助你轻松进行录屏操作

什么软件可以录屏?5个软件帮助你轻松进行录屏操作 录屏软件是日常工作和学习中不可或缺的工具,广泛应用于制作教程、记录在线会议、游戏录制等场景。以下是五款功能强大且易于使用的录屏软件,能够帮助你轻松进行录屏操作。 迅捷屏幕录像工具…

从手动测试菜鸟,到自动化测试老司机,实现自动化落地

虽然许多伙伴是一个测试老人了,但是基本上所有的测试经验都停留在手工测试方面,对于自动化测试方面的实战经验少之又少。 其实,究其原因:一方面是,自动化方面不求上进,觉得会手工测试就可以了,自…

降准到底是什么?

王炸!宣布10000亿利好!跟我有啥关系? 刚刚宣布!10000亿元降准 降准到底是什么?为何央行近年来持续在降准?银行是如何创造流通货币的?降准对股市、楼市、债市、汇市、普通老百姓意味着什么&#…

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

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

深入解析SGD、Momentum与Nesterov:优化算法的对比与应用

目录 1. 梯度下降算法2. BGD、SGD、MBGD3. momentum与dampening3.1 另一种形式的momentum3.1.1 学习率固定3.1.2 学习率不固定 4. nesterov4.1 PyTorch中的Nesterov4.2 Polyak与Nesterov的比较 Ref 1. 梯度下降算法 先考虑一元情形。假设待更新的参数为 θ \theta θ&#xf…

CSP-S 2024 提高级 第一轮(初赛) 阅读程序(1)

【题目】 CSP-S 2024 提高级 第一轮&#xff08;初赛&#xff09; 阅读程序&#xff08;1&#xff09; 1 #include <iostream> 2 using namespace std; 3 4 const int N 1000; 5 int c[N]; 6 7 int logic(int x, int y) { 8 return (x & y) ^ ((x ^ y)…

常见区块链数据模型介绍

除了加密技术和共识算法&#xff0c;区块链技术还依赖于一种数据模型&#xff0c;它决定了信息如何被结构化、验证和存储。数据模型定义了账户如何管理&#xff0c;状态转换如何发生&#xff0c;以及用户和开发者如何与系统交互。 在区块链技术的短暂历史中&#xff0c;数据…

鸿蒙OpenHarmony【小型系统基础内核(进程管理调度器)】子系统开发

调度器 基本概念 OpenHarmony LiteOS-A内核采用了高优先级优先 同优先级时间片轮转的抢占式调度机制&#xff0c;系统从启动开始基于real time的时间轴向前运行&#xff0c;使得该调度算法具有很好的实时性。 OpenHarmony 的调度算法将 tickless 机制天然嵌入到调度算法中&…

分区与分桶

分区 分区字段大小写&#xff1a; 在hive中&#xff0c;分区字段名是不区分大小写的&#xff0c;不过字段值是区分大小写的。我们可以来测试一下 导入数据 load data local inpath /home/hivedata/user1.txt into table part4 partition(year2018,month03,DAy21); load data …

828华为云征文|华为云Flexus云服务器X实例Windows系统部署一键短视频生成AI工具moneyprinter

在追求创新与效率并重的今天&#xff0c;我们公司迎难而上&#xff0c;决定自主搭建一款短视频生成AI工具——MoneyPrinter&#xff0c;旨在为市场带来前所未有的创意风暴。面对服务器选择的难题&#xff0c;我们经过深思熟虑与多方比较&#xff0c;最终将信任票投给了华为云Fl…

毕设基于SSM+Vue3实现设备维修管理系统四:后台框架及基础增删改查功能实现

本章介绍后端基础框架及基础的增删改查功能实现&#xff0c;创建基础的dao、service即controller层相关的基类&#xff0c;并实现基础的增删改查相关功能。 源码下载&#xff1a;点击下载 讲解视频&#xff1a; SMMVUE3实现设备维修管理系统毕设&#xff1a;后端框架搭建及表外…

知识产权增资:如何以无形资产驱动企业价值增长?

随着国家政策的不断推动和各行业技术水平的不断提升&#xff0c;知识产权的增资不仅关乎企业的技术实力展示&#xff0c;更是企业资产增值、市场竞争力增强的关键途径。 概念与意义 知识产权增资&#xff0c;是指企业通过将自身拥有的知识产权评估作价后&#xff0c;作为注册…

Xcode报错:The request was denied by service delegate (SBMainWorkspace)

Xcode报错&#xff1a;The request was denied by service delegate (SBMainWorkspace) 造成的原因: &#xff08;1&#xff09;新的M2芯片的Mac电脑 (2) 此电脑首次安装启动Xcode的应用程序 (3&#xff09;此电脑未安装Rosetta 解决方法: &#xff08;1&#xff09;打开终端…

宠物空气净化器去浮毛哪家强?希喂、美的和米家实测分享

要说养宠物后里最让我感到幸福感飙升的家电&#xff0c;必须是宠物空气净化器&#xff0c;没有之一。很多人都喜欢宠物&#xff0c;但应该没有人喜欢清扫&#xff0c;特别是家里宠物多&#xff0c;或者一群宠物在自己家聚在一起之后&#xff0c;要疯狂清除浮毛&#xff0c;真的…

Jmeter压力测试-ServerAgent-2.2.3闪退问题解决

Jmeter压力测试-ServerAgent-2.2.3闪退问题解决 1. 问题现象描述&#xff1a;2. 原因分析3. 问题解决 1. 问题现象描述&#xff1a; 使用Jmeter进行压力测试时&#xff0c;如果需要收集被测试机器的性能参数&#xff0c;需要在被测试机中启动ServerAgent。 最近在做几个项目的…

性能测试之平均负载

平均负载 除了常见命令top外&#xff0c;常使用的命令有top rootdebian:~# uptime 15:20:25 up 20 days, 23:51, 9 users, load average: 0.62, 0.13, 0.04后面三个数字分别代表 1 分钟&#xff0c;5 分钟&#xff0c;15 分钟的平均负载。 如何理解这个平均负载。 如果数…

英伟达 Blackwell平台和ASIC芯片升级助力,预计2025年液冷散热渗透率将超20%

TrendForce集邦咨询: 英伟达 Blackwell平台和ASIC芯片升级助力&#xff0c;预计2025年液冷散热渗透率将超20% 根据TrendForce集邦咨询最新调查&#xff0c;随着NVIDIA Blackwell新平台预计于2024年第四季出货&#xff0c;将推动液冷散热方案的渗透率明显增长&#xff0c;从202…

c++ std::string初始化为nullptr的问题

一.问题描述 在c std::string或者std::wstring 中是否可以使用nullptr初始化&#xff0c;首先可以说的是是可以用nullptr初始化的&#xff0c;但是程序编译没有问题&#xff0c;运行起来就挂了&#xff0c;char*是可以初始化为nullptr的&#xff0c;为啥以char*为基础的std::…