ESP32之GPIO的输入输出和中断

基本输入输出

ESP32 芯片具有 34 个物理 GPIO 管脚(GPIO0 ~ GPIO19、GPIO21 ~ GPIO23、GPIO25 ~ GPIO27 和 GPIO32 ~ GPIO39)。每个管脚都可用作一个通用 IO,或连接一个内部的外设信号。通过 IO MUX、RTC IO MUX 和 GPIO 交换矩阵,可配置外设模块的输入信号来源于任何的 IO 管脚,并且外设模块的输出信号也可连接到任意 IO 管脚。这些模块共同组成了芯片的 IO 控制。更多详细信息,请参阅 ESP32 技术参考手册 > IO MUX 和 GPIO 矩阵(GPIO、IO_MUX) [PDF]

下表提供了各管脚的详细信息,部分 GPIO 具有特殊的使用限制,具体可参考表中的注释列。
在这里插入图片描述
注意

GPIO0、GPIO2、GPIO5、GPIO12、GPIO15作为strapping引脚,也就是说芯片上电时会检查这些引脚的电压,具体细节可以查看芯片手册进行了解。
SPI0/1会使用GPIO6-11、GPIO16-17,模组内部会使用这些引脚作为SPI flash/psram的引脚,故也不应该使用;
GPIO12-15通常用作JTAG调试使用;
GPIO34-39只能用作输入模式并且内部没有软件上拉或者下拉功能;
ADC2引脚当WiF

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ESP32支持硬件中断GPIO中断。 硬件中断: 硬件中断是由特定的硬件事件触发的,如定时器、串口接收中断等。在ESP32中,硬件中断可以管理许多不同的硬件资源,例如定时器、GPIO、RTC等。ESP32的硬件中断可以使用Arduino的attachInterrupt()函数进行设置。 GPIO中断GPIO中断是由GPIO引脚状态的改变触发的,例如输入信号从低电平变为高电平或从高电平变为低电平。ESP32中的GPIO引脚可以通过pinMode()函数配置为输入和输出模式,当GPIO引脚的输入状态发生改变时,ESP32可以通过gpio_intr_enable()函数启用GPIO中断。在中断响应函数中,可以使用gpio_get_level()函数读取GPIO引脚的当前输入状态。 下面是一个示例代码,演示如何在ESP32中使用GPIO中断: ``` #define BUTTON_PIN 0 // GPIO0 void IRAM_ATTR handleInterrupt(){ // Interrupt service routine // Toggle the LED digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN)); } void setup() { pinMode(BUTTON_PIN, INPUT_PULLUP); pinMode(LED_BUILTIN, OUTPUT); attachInterrupt(BUTTON_PIN, handleInterrupt, FALLING); } void loop() { // Do nothing } ``` 在上面的示例代码中,我们使用GPIO0作为输入引脚,通过INPUT_PULLUP配置它为输入模式,并在FALLING边沿触发GPIO中断。当GPIO引脚状态发生变化时,handleInterrupt()函数将被调用,在其中我们可以执行一些操作,例如切换LED的状态。在setup()函数中,我们使用attachInterrupt()函数将GPIO0的中断处理函数注册到GPIO中断,以便当引脚状态改变时能够调用它。在loop()函数中,我们什么也不做。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值