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

news2024/9/23 11:12:01

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/2157391.html

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

相关文章

Springcloud框架-能源管理系统-能源管理系统源码-能源在线监测平台-双碳平台

一、介绍 基于SpringCloud的能管管理系统-能源管理平台源码-能源在线监测平台-双碳平台源码-SpringCloud全家桶-能管管理系统源码 有需者咨询,非诚勿扰; 二、软件架构 二、功能介绍 三、数字大屏展示 四、数据采集原理 五、软件截图

macos pyenv 安装python tk 、tkinter图形库方法步骤和使用总结

在macos中, pyenv 是一款用来管理多版本python 的工具, 我们常用的tk图形库是一个独立的工具库,我们在python里面使用的tkinter模块仅是调用这个独立的tk图形库, 所以如果我们希望在python里面使用它, 就必须要先安装t…

委托的注册及注销+观察者模式

事件 委托变量如果公开出去,很不安全,外部可以随意调用 所以取消public,封闭它,我们可以自己书写两个方法,供外部注册与注销,委托调用在子方法里调用,这样封装委托变量可以使它更安全,这个就叫…

金融加密机的定义与功能

金融加密机是一种用于保护金融交易数据和信息安全的重要安全设备。它通过硬件和软件的多重保障,确保金融交易中的敏感数据不被泄露或篡改。以下是关于金融加密机的详细介绍: 一、定义与功能 金融加密机是一种硬件安全设备,通过实现各种密码算…

深度deepin初体验(一)系统详细安装过程 | 国产系统

这里写自定义目录标题 深度deepin初体验(一)系统详细安装过程1.介绍2.安装要求3.环境4.创建虚拟机/系统升级系统选择语言硬盘分区备份文件拷贝系统重启常规设置 深度deepin初体验(一)系统详细安装过程 1.介绍 深度deepin是在debi…

Python开发深度学习常见安装包 error 解决

Python Python 是一种广泛使用的高级编程语言,它以其清晰的语法和代码可读性而闻名。Python 支持多种编程范式,包括面向对象、命令式、函数式和过程式编程。由于其简洁性和强大的标准库,Python 成为了数据科学、机器学习、网络开发、自动化脚…

气膜馆:新型场馆的盈利之道—轻空间

气膜馆作为一种创新的场馆形式,凭借其先进的技术和灵活的应用,正在快速崛起,展现出广阔的市场前景与丰富的盈利潜力。通过多元化的经营模式,气膜馆为创业者提供了前所未有的商机。本文将深入分析气膜馆的盈利模式及其在市场中的竞…

气膜储煤棚:未来能源管理的新选择—轻空间

在全球对可持续发展与环保的日益重视下,传统的煤炭储存方式面临着诸多挑战。气膜储煤棚应运而生,成为现代煤炭储存的理想解决方案。本文将深入探讨气膜储煤棚的优势与应用,为企业提供新的思路。 先进的技术设计 气膜储煤棚采用创新的气膜技术…

AcWing算法基础课-790数的三次方根-Java题解

大家好,我是何未来,本篇文章给大家讲解《AcWing算法基础课》790 题——数的三次方根。本题考查算法为浮点数二分查找。本文详细介绍了一个使用二分法计算浮点数三次方根的算法。通过逐步逼近目标值,程序能够在给定的区间内精确计算出结果&…

关闭小广告【JavaScript】

在 JavaScript 中实现关闭小广告的功能&#xff0c;可以通过监听点击事件来隐藏广告元素。 实现效果&#xff1a; 代码&#xff1a; <!DOCTYPE html> <html lang"zh"><head><meta charset"UTF-8"><meta name"viewport&q…

SpringBoot框架之KOB项目 - 配置Mysql与注册登录模块(中)

修改Spring Security 登录验证模式 传统的验证登录模式 公开页面&#xff1a;输入url就可以直接访问授权页面&#xff1a;登录之后才可以访问 Jwt验证模式 容易实现跨域不需要在服务器端存储 对比于传统模式将所有的sessionId换成jwt token access token refresh token 过…

如何在Chrome最新浏览器中调用ActiveX控件?

小编最近登陆工商银行网上银行&#xff0c;发现工商银行的个人网银网页&#xff0c;由于使用了ActiveX安全控件&#xff0c;导致不能用高版本Chrome浏览器打开&#xff0c;目前只有使用IE或基于IE内核的浏览器才能正常登录网上银行&#xff0c;而IE已经彻底停止更新了&#xff…

Tile View Kanban Board平铺视图和看板

Goto 数据网格和视图入门 平铺视图&#xff08;TileView 类&#xff09;将数据记录显示为平铺。此视图类型可以以任何自定义方式排列多个元素&#xff08;bound 和 unbound&#xff09;。用户可以按如下方式编辑瓦片&#xff1a; 使用模态 Edit Form。利用 HTML-CSS 平铺模板…

VScode配置连接远程服务器configure ssh Hosts

VScode配置连接远程服务器&#xff0c;具体步骤 一、点击VScode左下脚这两个∟的按钮 二、点击完上面的按钮后&#xff0c;出现如下的下拉选项&#xff0c;选择“Connect to Host” 三、选择“Connect to Host”后&#xff0c;下拉选项会更新&#xff0c;选择“Configure SSH …

openFrameworks_如何使用ofxXmlSettings和ofxGui来创建识别界面

效果图&#xff1a; 代码及详解 1.添加两个插件的头文件: #include "ofxGui.h" #include "ofxXmlSettings/src/ofxXmlSettings.h" 2.添加GUI部分&#xff0c;然后在.h声明右边的openframeworks的UI部分&#xff0c;包括面板ofxPanel&#xff0c;按钮ofx…

【JUC并发编程系列】深入理解Java并发机制:线程局部变量的奥秘与最佳实践(五、ThreadLocal原理、对象之间的引用)

文章目录 【JUC并发编程系列】深入理解Java并发机制&#xff1a;线程局部变量的奥秘与最佳实践(五、ThreadLocal原理、对象之间的引用)1. 基本 API 介绍2. 简单用法3. 应用场景4. Threadlocal与Synchronized区别5. 内存溢出和内存泄漏5.2 内存溢出 (Memory Overflow)5.2 内存泄…

如何融合文本信息提高时序预训练模型?

今天小编给大家介绍两篇联合文本和时序数据进行预训练的文章。 UniTime: A Language-Empowered Unified Model for Cross-Domain Time Series Forecasting 文献地址&#xff1a;https://arxiv.org/pdf/2310.09751.pdf 代码地址&#xff1a;https://github.com/liuxu77/UniTim…

【永磁同步电机(PMSM)】 4. 同步旋转坐标系仿真模型

【永磁同步电机&#xff08;PMSM&#xff09;】 4. 同步旋转坐标系仿真模型 1. Clarke 变换的模型与仿真1.1 Clarke 变换1.2 Clarke 变换的仿真模型 2. Park 变换的模型与仿真2.1 Park 变换2.2 Park 变换的仿真模型 3. Simscape标准库变换模块3.1 abc to Alpha-Beta-Zero 模块3…

【COMSOL】1-1 COMSOL6.2软件安装

1.解压COMSOL软件安装包&#xff0c;以管理员身份运行Setup.exe 2.选择简体中文&#xff0c;点击下一步&#xff0c;点击新安装。 3.选择许可证文件 4.自定义安装的位置 5.取消勾选更新&#xff0c;点击下一步 6.若已安装MATLAB则自动识别文件夹&#xff0c;若未安装空着即可&a…

Linux学习笔记(2)

Linux学习笔记&#xff08;2&#xff09; 知识点&#xff1a; 1.打包、压缩——是什么、为什么、怎么做&#xff1f; 什么是打包、压缩&#xff1f; 打包&#xff1a;把文件合并。 压缩&#xff1a;通过一定算法减少体积。 为什么要进行打包、压缩&#xff1f; 打包&…