
第 10 章:中断与事件响应10.1 中断概述ESP32-S3 支持多种中断源:中断类型说明典型用途GPIO 中断引脚电平变化触发按键检测、传感器信号定时器中断定时器溢出触发周期采样、精确计时UART 中断串口数据到达触发异步接收数据WiFi 事件连接/断开等事件触发网络状态响应BLE 事件连接/写入等事件触发蓝牙数据响应10.2 GPIO 外部中断ESP32-S3 的 GPIO 中断支持多种触发方式:触发方式说明上升沿低→高时触发下降沿高→低时触发双边沿任意电平变化时触发高电平电平为高时触发低电平电平为低时触发10.3 项目:中断方式按键检测积木程序当启动时 ├─ 初始化引脚 GPIO2 为 推挽输出 ├─ 初始化引脚 GPIO4 为 输入上拉 ├─ 设置引脚 GPIO4 中断 下降沿 → on_button_press └─ 永远重复 └─ 延时 1000 毫秒 (主循环可以做其他事情) 定义函数 on_button_press └─ 翻转引脚 GPIO2 电平生成的 C 代码#include"driver/gpio.h"#include"freertos/FreeRTOS.h"#include"freertos/task.h"#defineLED_GPIO2#defineBUTTON_GPIO4staticvoidIRAM_ATTRbutton_isr_handler(void*arg){intlevel=gpio_get_level(LED_GPIO);gpio_set_level(LED_GPIO,!level);}voidapp_main(void){gpio_config_tio_conf={.pin_bit_mask=(1ULLLED_GPIO),.mode=GPIO_MODE_OUTPUT,.intr_type=GPIO_INTR_DISABLE,};gpio_config(io_conf);io_conf.pin_bit_mask=(1ULLBUTTON_GPIO);io_conf.mode=GPIO_MODE_INPUT;io_conf.intr_type=GPIO_INTR_NEGEDGE;io_conf.pull_up_en=GPIO_PULLUP_ENABLE;gpio_config(