(学习记录)使用 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引脚输入配置

### STM32CubeMX GPIO 输入输出配置教程 #### 配置环境准备 为了成功完成STM32CubeMX中的GPIO输入输出配置,需准备好相应的硬件和软件工具。具体来说,选用的芯片型号为STM32F407ZGT6,配套使用的集成开发环境为MDK-Keil,而图形化配置工具则采用STM32CubeMX[^3]。 #### 创建新项目并选择微控制器 启动STM32CubeMX应用程序后,在初始界面点击“New Project”,随后通过搜索功能定位到目标MCU——即本案例中的STM32F407系列器件,并确认选型无误后加载该设备模型进入下一步操作页面[^1]。 #### 进行基本设置 在主窗口左侧栏找到“Pinout & Configuration”选项卡,这里可以直观看到所选MCU的所有可用引脚分布情况;对于希望设定为通用目的I/O端口(Pin)工作的管脚而言,则只需在其对应的方框内单击鼠标左键即可激活属性编辑器以便进一步调整参数值。 #### 设置PA8为输出模式 当决定将某个特定引脚(例如PA8)设为输出用途时,可在弹出的小窗格里挑选“GPIO_Output”这一项作为其工作状态。此时还可以指定其他细节选项比如默认电平高低以及最大速度等级等特性来满足实际应用场景下的需求。 #### 实现按键触发LED反应机制 针对更复杂的交互逻辑设计,如实现按下按钮后点亮连接于另一根IO线路上发光二极管的效果,除了上述基础步骤外还需要额外定义另一个用于采集外部信号变化状况的输入通道。这通常意味着要再选取一个合适的闲置针脚将其角色切换至“GPIO_Input”形式,并确保后续编程环节能够正确处理中断事件从而达到预期效果[^2]。 ```python // 示例代码片段展示如何初始化GPIO端口结构体成员变量以适应不同类型的读写行为 GPIO_InitTypeDef GPIO_InitStruct = {0}; // 对应于输出模式下PA8引脚的具体初始化过程 GPIO_InitStruct.Pin = GPIO_PIN_8; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; // 推挽输出方式 GPIO_InitStruct.Pull = GPIO_NOPULL; // 不带内部上下拉电阻 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; // 较低频率范围内的传输速率 HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); // 类似地,如果需要创建一个输入接口的话也可以按照如下方法来进行相应配置... ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

送外卖的CV工程师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值