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

学习总结:(学习总结)STM32CubeMX HAL库 学习笔记撰写心得icon-default.png?t=O83Ahttps://blog.csdn.net/Wang2869902214/article/details/142435481
 

STM32F103C8T6的GPIO引脚输出配置

时钟配置

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

GPIO引脚选择

①:在 “输出与配置”页面下

②:大部分STM32F103C8T6最小系统板上自带一个板载PC13引脚的LED灯
这里引脚选择可以按照自己的情况去选择对应的引脚,我这里就选择了PC13引脚

然后点击PC13引脚后,可以发现他会弹出很多个选项,而这些选项就是该引脚(PC13)能够复用的所有引脚功能:

  1. PC13-TAMPER-RTC:
    • 这是指PC13引脚可以被配置为与实时时钟(RTC)的篡改检测(TAMPER)功能相关联。TAMPER引脚通常用于检测外部对系统的物理篡改,当检测到篡改时,可以触发特定的安全响应。
  2. Reset_State:
    • 这个选项表示初始状态(未使用)
  3. RTC_OUT:
    • 这表示PC13引脚可以配置为输出RTC的某些信号,如秒脉冲、闹钟信号等。具体功能取决于RTC的配置。
  4. RTC_TAMPER:
    • 与“PC13-TAMPER-RTC”类似,这是指该引脚可以作为RTC的篡改检测输入。
  5. GPIO_Input:
    • 将PC13配置为通用输入引脚,用于读取外部信号的状态。
  6. GPIO_Output:
    • 将PC13配置为通用输出引脚,用于控制外部设备或信号。
  7. GPIO_Analog:
    • 将PC13配置为模拟输入模式,通常用于连接模拟信号源,如传感器的输出,到ADC(模数转换器)。
  8. EVENTUT:
    • 这个选项可能是指该引脚可以配置为事件输出(EVENT OUT),用于生成特定的事件信号,这些信号可以触发其他硬件模块或中断。
  9. GPIO_EXTI13:
    • 这表示PC13引脚可以配置为外部中断源(EXTI,External Interrupt)。当该引脚上的信号发生变化(如上升沿、下降沿或双边沿触发)时,可以触发中断,从而执行特定的中断服务程序。

选择GPIO_Output模式

①:这里我们选择GPIO_Output模式

②:这里打开GPIO选项

③:点击对应的PC13 PIN 

④:下方有个 User Lable :这里相当于用户标签(重命名),生成代码后会帮你宏定义此引脚名字
使用用户标签的好处:如果设置了用户标签,然后在后续如果需要变换此LED引脚,只需要将变更后的引脚的用户标签改为之前的用户标签,即可不需要修改代码,重新生成代码后即可使用,因为这里的原理就是宏定义修改,所以不用代码中修改具体的引脚是哪个。于是这里我设置为:LED


详细GPIO  Pin配置

  1. GPIO output level (输出电平):
    • LOW: 设置引脚初始输出电平为低电平(0V)。
    • High: 设置引脚初始输出电平为高电平(通常接近供电电压,如3.3V或5V)。
  2. GPIO mode (GPIO模式):
    • Output Push-Pull (推挽输出): 这是最常见的输出模式,适用于大多数数字信号输出。在此模式下,引脚可以主动输出高电平或低电平。
    • Output Open Drain (开漏输出): 在此模式下,引脚只能主动输出低电平。当引脚被设置为高电平时,它实际上是被置为高阻态(Z态),允许外部电路(如上拉电阻)将引脚拉高到高电平。开漏输出通常用于需要多个输出共享同一总线的场景,如I2C总线。
  3. GPIO Pull-up/Pull-down (上拉/下拉):
    • No Pull-up and Pull-down (无上拉/下拉): 引脚在未被驱动时保持浮空状态,易受外部干扰。
    • Pull-up (上拉): 在引脚内部连接一个上拉电阻,使引脚在未被驱动时默认保持高电平。
    • Pull-down (下拉): 在引脚内部连接一个下拉电阻,使引脚在未被驱动时默认保持低电平。
  4. Maximum output speed (最大输出速度):
    • LOW: 设置引脚输出信号的最大速度为低速。
    • Medium: 设置引脚输出信号的最大速度为中速。
    • High: 设置引脚输出信号的最大速度为高速。
    • 输出速度的选择通常取决于所连接外设的要求以及系统时钟的配置。
  5. User Label (用户标签):
    • 这是一个可选的字段,允许您为引脚分配一个自定义的名称或标签,以便在代码中更容易地识别和使用它。

这些配置选项使您能够灵活地配置GPIO引脚以满足特定的应用需求。例如:

  • 如果您需要控制一个LED,您可能会选择“Output Push-Pull”模式,并根据LED的极性设置初始输出电平为“High”或“Low”。
  • 如果您需要与其他设备通信并使用开漏输出模式(如I2C),则应选择“Output Open Drain”模式。
  • 如果您希望引脚在未被驱动时保持稳定的电平,则应使用上拉或下拉电阻。
  • 如果您需要快速切换引脚状态以匹配高速外设的要求,则应选择较高的输出速度。
     

LED推荐配置:

  • GPIO output level: 根据您的LED连接方式和期望的初始状态,选择“High”或“Low”。如果LED正极接GPIO引脚,负极接地,则通常选择“Low”以点亮LED。
  • GPIO mode: 选择“Output Push Pull”以启用推挽输出模式。
  • GPIO Pull-up/Pull-down: 对于推挽输出模式,通常选择“No Pull-up and Pull-down”,因为上拉/下拉电阻在此模式下不适用。
  • Maximum output speed: 根据需要选择“LOW”、“Medium”或“High”。对于大多数LED控制应用,“LOW”或“Medium”速度通常足够。

代码生成

点击右上角的代码生成后,打开Keil5工程的main.h中可以看见:

这里有我们刚刚在STM32CubeMX中配置的用户标签,他会再以一种特定的格式帮我组装一下

控制LED代码

在main.c的主函数while循环中:
 

  /* USER CODE BEGIN WHILE */while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_SET);HAL_Delay(500);HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_RESET);HAL_Delay(500);}/* USER CODE END 3 */

HAL库对比标准库来说,很多函数都是HAL开头的,函数的命名也是非常容易理解的
这里通过代码让用户标签为LED的引脚(PC13)周期500ms翻转电平(LED闪烁)

在选择引脚的参数时,有一个初始化电平状态,此选项会在代码运行初始化GPIO引脚时改变GPIO状态,所以需要更具硬件设置来选择对应的初始化电平状态:例如LED灯是低电平点亮,那么如果初始化为低电平,单片机一上电后LED灯就会点亮

编译下载

每次编译下载后代码都不会自动运行,需要复位才会运行代码,我们进行如下操作即可下载后自动运行

①:选择上方的 魔术棒

②:选择Debug

③:点击Settings

①:选择Flash Download 

②:勾选 Reset and Run

如果有此选项:“Pack”就继续操作,如果没有的话就不用继续修改了,也可以自动运行

①:选择Pack

②:取消勾选Enable

编译后下载到STM32F103C8T6的开发板中,就能发现对应的引脚上的LED灯正在每500ms进行闪烁
 

效果演示

STM32CubeMX GPIO输入LED测试视频

章节结尾:

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

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

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

相关文章

原子结构与电荷

1.原子结构与电荷 1.1 物质到底是由什么构成的 阴极射线 电磁波 电磁波 我们生活中的物质。究竟是由什么构成的呢?这个问题其实困扰了人们很久。 1.提出“原子”的概念 早在2400年前,古希腊哲学家德莫克里特就提出了原子的概念。当时他就认为&…

鸿蒙操作系统(HarmonyOS)生态与机遇

HarmonyOS技术特点 鸿蒙操作系统(HarmonyOS)是华为公司开发的一款面向全场景的分布式操作系统。 架构特点: 分布式架构:这是鸿蒙系统的显著特点之一。它支持跨设备无缝协同体验,使不同设备能够快速连接、能力互助和资…

Qt --- 常用控件的介绍 --- 其他控件

一、QPushButton QWidget中设计到的各种属性/函数/使用方法,针对接下来要介绍的Qt的各种控件都是有效的。 使用QPushButton表示一个按钮,这也是当前我们最熟悉的一个控件了。这个类继承了QAbstractButton,这个类是一个抽象类,是…

逆元 P3811

【模板】模意义下的乘法逆元 - 洛谷 费马太典了。 ax py 1 (mod p) 所求 x 即逆元 exgcd. 递推: 转自zjp_shadow 由整除性得 -p/i p-p/i; 故有代码&#xff08;只用了递推 #include<bits/stdc.h> #define int long long using namespace std; int exgcd(int a,…

代码随想录算法训练营第58天|卡码网 117. 软件构建、47. 参加科学大会

1. 卡码网 117. 软件构建 题目链接&#xff1a;https://kamacoder.com/problempage.php?pid1191 文章链接&#xff1a;https://www.programmercarl.com/kamacoder/0117.软件构建.html 思路&#xff1a;使用BFS BFS的实现思路&#xff1a; 拓扑排序的过程&#xff0c;其实就两步…

win11永久关闭Windows Defend

# Win11 Microsoft Defender 防病毒 彻底关闭 Win11 Microsoft Defender 防病毒关闭 **WinR****——输入 gpedit.msc &#xff0c;打开本地组策略编辑器——计算机配置——管理模板——Windows组件——Microsoft Defender 防病毒——关闭 Microsoft Defender 防病毒策略——设置…

大厂面试真题:SpringBoot的核心注解

其实理解一个注解就行了&#xff20;SpringBootApplication&#xff0c;我们的启动类其实就加了这一个 但是这么答也不行&#xff0c;因为面试官要的答案肯定不止这一个 我们打开SpringBootApplication的源码&#xff0c;会发现上面加了一堆的注解 相对而言比较重要是下面三个…

《Learning Interactive Real-World Simulators》论文导读

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl引言与背景 为了构建一个能够真实反映现实世界并允许智能体进行交互的模拟器,《Learning Interactive Real-World Simulators》这篇论文提出了一种通过学习生成模型来创建交互式现实世界模拟器的…

C++--模板(template)详解—— 函数模板与类模板

目录 1.泛型编程 2.函数模板 2.1 函数模板概念 2.2 函数模板格式 2.3 函数模板的原理 2.4 函数模板的实例化 2.5 模板参数的匹配原则 3.类模板 3.1 类模板的定义格式 3.2 类模板的实例化 1.泛型编程 在C中如果让你写一个交换函数&#xff0c;应该怎么做呢&#xff1f…

Leetcode990.等式方程的可满足性

题目 原题链接 等式方程的可满足性 思路 定义一个长度为26&#xff08;变量为小写字母&#xff09;的数组充当并查集&#xff0c;并将数组中的元素初始化为 -1判断“”并合并元素&#xff0c;将相等的放在一个集合中判断“!”&#xff1b;不等的如果在一个集合中&#xff0c;则…

2021世界人工智能大会召开 百度展示量子技术影响力

姓 名&#xff1a;王芷若 学 号&#xff1a;19020100180 学 院&#xff1a;电子工程学院 转载自&#xff1a;钥成网 原文链接&#xff1a; https://baijiahao.baidu.com/s?id1704906954970597725&wfrspider&forpc&searchword2021%E4%B8%9…

intellij idea 控制台运行java出现中文乱码的解决方法

原因&#xff1a; 字符编码不一致&#xff1a; 当你在intellij idea使用了UTF-8编码&#xff0c;而在控制台使用了其他编码&#xff08;比如gbk&#xff09;&#xff0c;就可能导致乱码。 文件读写编码问题&#xff1a; 如果读取文件时使用的编码与文件实际编码不一致&#xf…

AtCoder Regular Contest 156 C. Tree and LCS(思维题 构造 数学归纳法)

题目 构造一个排列p&#xff0c; 使得对于任意树上路径&#xff0c; 求该路径上的点(x1,...,xk)和对应排列上的点(Px1,...,Pxk)的最长公共子序列都得到一个值&#xff0c; 称为相似值 现在想令任意树上路径的相似值的最大可能长度最小&#xff0c; 最小化前提下&#xff0…

Redis笔记(基本操作+Java实现)

Redis是什么 一种数据库&#xff0c;但是不是mysql那样的表格&#xff0c;而是key-value的形式存储&#xff0c;而且它存在内存里&#xff0c;所以读写速度更快。 Redis常用数据类型 Redis常用命令简单使用 字符串操作 set name x get name 哈希操作 列表操作 集合操作 有…

自己开发了一个电脑上滚动背单词的软件

在这个快节奏的时代&#xff0c;我们每天都在忙碌中度过&#xff0c;手机虽然方便&#xff0c;但往往难以找到一整块时间来专心背单词。然而&#xff0c;你是否意识到&#xff0c;每天坐在电脑前的时间远比使用手机的时间要长&#xff1f;现在我们来介绍一个新型的学习软件灵思…

windows 驱动实例分析系列-COM驱动案例讲解

COM也被称之为串口,这是一种非常简单的通讯接口,这种结构简单的接口被广泛的应用在开发中,几乎所有系统都能支持这种通讯接口,它有RS232和RS485等分支,但一般我们都会使用RS232作为常见的串口,因为它足够简单和高效。 几乎所有的开发板,都会提供用于烧录、调试、日志的…

汽车总线之----FlexRay总线

Introduction 随着汽车智能化发展&#xff0c;车辆开发的ECU数量不断增加&#xff0c;人们对汽车系统的各个性能方面提出了更高的需求&#xff0c;比如更多的数据交互&#xff0c;更高的传输带宽等。现如今人们广泛接受电子功能来提高驾驶安全性&#xff0c;像ABS防抱死系统&a…

Nginx-HTTP和反向代理web服务器

概述 Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器 &#xff0c;同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔赛索耶夫为俄罗斯访问量第二的Rambler.ru站点&#xff08;俄文&#xff1a;Рамблер&#xff09;开发的&#xff0c;公开版本1.19.6发布于20…

汽车总线之---- CAN FD总线

CAN FD 最高可支持8M/s的通信速率&#xff0c;从传统CAN到CAN FD的转换是很容易实施和推广的。 CAN FD报文的帧&#xff1a;标准帧&#xff0c;扩展帧 CAN FD 标准帧结构 CAN FD 报文的标准帧与CAN 报文的标准帧的区别 CAN FD 报文的标准帧与CAN FD报文的扩展帧的区别&…

手机在网状态查询接口如何用Java进行调用?

一、什么是手机在网状态查询接口&#xff1f; 手机在网状态查询接口&#xff0c;又叫运营商在网状态查询&#xff0c;手机号在网状态查询&#xff0c;传入手机号码&#xff0c;查询该手机号的在网状态&#xff0c;返回内容有正常使用、停机、在网但不可用、不在网&#xff08;…