STM32 GPIO 快速入门:从输出到输入,轻松掌控硬件控制

摘要: 本文将深入浅出地介绍 STM32 通用输入/输出端口 (GPIO) 的基本概念,重点讲解输出模式和输入模式及其应用。通过表格、图表和代码示例,帮助读者快速掌握 GPIO 的配置方法,为嵌入式开发打下坚实基础。

关键词: STM32,GPIO,输出模式,输入模式,嵌入式开发

1. GPIO 简介

通用输入/输出端口 (GPIO) 是微控制器与外部世界交互的重要接口。STM32 芯片拥有丰富的 GPIO 资源,每个 GPIO 引脚都可以配置为多种模式,例如输入模式、输出模式和复用功能模式等,从而实现对外部设备的控制和数据采集。

2. GPIO 输出模式

GPIO 输出模式允许 STM32 直接控制引脚的输出电平,实现对 LED、继电器等外部设备的驱动。

2.1 输出模式分类

STM32 GPIO 提供以下四种输出模式:

模式描述
推挽输出输出高电平时输出电流,输出低电平时吸入电流
开漏输出仅输出低电平,需要外部上拉电阻
复用推挽输出用于外设复用功能
复用开漏输出用于外设复用功能
2.2 推挽输出与开漏输出的区别

推挽输出 可以输出高电平和低电平,驱动能力强,适用于驱动 LED、蜂鸣器等低电流设备。

开漏输出 只能输出低电平,需要配合外部上拉电阻才能输出高电平,适用于需要与其他设备共享 I/O 线路的场合,例如 I2C 总线。

2.3 代码示例 (推挽输出)

以下代码演示了如何将 STM32F103 的 PA5 引脚配置为推挽输出模式,并控制 LED 灯闪烁:

#include "stm32f10x.h"

int main(void)
{
  // 使能 GPIOA 时钟
  RCC->APB2ENR |= RCC_APB2ENR_IOPAEN;

  // 配置 PA5 为推挽输出模式
  GPIOA->CRL &= ~(GPIO_CRL_MODE5 | GPIO_CRL_CNF5);
  GPIOA->CRL |= (GPIO_CRL_MODE5_1 | GPIO_CRL_MODE5_0);

  while (1)
  {
    // PA5 输出高电平,LED 灭
    GPIOA->BSRR = GPIO_BSRR_BS5;
    delay(500);

    // PA5 输出低电平,LED 亮
    GPIOA->BSRR = GPIO_BSRR_BR5;
    delay(500);
  }
}

2.4图表 - 推挽输出电路

 

3. GPIO 输入模式

GPIO 输入模式用于读取外部设备的信号,例如按键状态、传感器数据等。

3.1 输入模式分类

STM32 GPIO 提供以下四种输入模式:

模式描述
浮空输入引脚处于高阻态,外部信号可以直接输入
上拉输入内部集成了上拉电阻,适合读取低电平有效的信号
下拉输入内部集成了下拉电阻,适合读取高电平有效的信号
模拟输入用于 ADC 等模拟外设
3.2 代码示例 (下拉输入)

以下代码演示了如何将 STM32F103 的 PA0 引脚配置为下拉输入模式,并读取按键状态:

#include "stm32f10x.h"

int main(void)
{
  // 使能 GPIOA 时钟
  RCC->APB2ENR |= RCC_APB2ENR_IOPAEN;

  // 配置 PA0 为下拉输入模式
  GPIOA->CRL &= ~(GPIO_CRL_MODE0 | GPIO_CRL_CNF0);
  GPIOA->CRL |= GPIO_CRL_CNF0_1;

  while (1)
  {
    // 读取 PA0 引脚
    if (GPIOA->IDR & GPIO_IDR_IDR0)
    {
      // 按键未按下
    }
    else
    {
      // 按键按下
    }
  }
}

3.3图表 - 下拉输入电路 

本文详细介绍了 STM32 GPIO 的输出模式和输入模式,并通过代码示例和图表展示了其应用方法。GPIO 作为 STM32 与外部世界交互的重要桥梁,熟练掌握 GPIO 的配置和使用是嵌入式开发的基础。

希望本文能帮助读者更好地理解和应用 STM32 GPIO。 想要深入学习,可以参考以下知识点:

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

极客小张

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

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

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

打赏作者

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

抵扣说明:

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

余额充值