Arduino for ESP32 ------ 引脚输入中断

本文介绍了如何使用ESP32的中断功能,通过attachInterrupt函数设置GPIO19为下降沿触发的中断,当按键按下时控制GPIO26的LED状态翻转。示例代码详细展示了中断回调函数的定义和使用。

引脚

ESP32 所有可用引脚皆可设置为中断

使用

attachInterrupt(digitalPinToInterrupt(GPIO), function, mode)

  • 参数1: 指定中断的GPIO ,例如 digitalPinToInterrupt(27)
  • 参数2: 中断回调函数,注意中断函数前需要加上 IRAM_ATTR 声明 例如:
void IRAM_ATTR function() {
   
   
  Serial.println("hello");
}
  • 参数3: 中断触发模式,一共有5种模式可选,看下表
mode</
### 配置ESP32-C3的UART1串口 在Arduino框架中配置ESP32-C3的UART1(串口1),需要通过`HardwareSerial`类来实现。以下是一个完整的示例代码,展示如何初始化和使用UART1。 #### 1. 定义UART1引脚 首先,定义UART1的TX(发送)和RX(接收)引脚。可以根据实际需求选择不同的GPIO引脚。 ```cpp #define TX_PIN 1 // U1TXD 引脚 #define RX_PIN 0 // U1RXD 引脚 ``` #### 2. 创建UART1实例 使用`HardwareSerial`类创建一个UART1实例,并命名为`SerialUART`。 ```cpp HardwareSerial SerialUART(1); // 创建UART1实例 ``` #### 3. 初始化UART1 在`setup()`函数中初始化UART1,设置波特率为115200bps,数据位为8位,无校验位,1位停止位。 ```cpp void setup() { Serial.begin(115200); // 初始化USB-UART(调试用途) // 初始化UART1 SerialUART.begin(115200, SERIAL_8N1, RX_PIN, TX_PIN); // 等待串口准备好 while (!Serial) { delay(100); } Serial.println("UART1 已经初始化成功!"); } ``` #### 4. 数据收发功能 在`loop()`函数中实现UART1的数据接收和发送功能。当检测到有数据到达时,将其读取并通过UART1回显。 ```cpp void loop() { if (SerialUART.available() > 0) { // 检查是否有数据可读 String inputData = SerialUART.readString(); // 接收数据 SerialUART.println(inputData); // 将接收到的数据重新发送回去 } delay(500); // 延迟一段时间 } ``` --- ### 完整代码示例 以下是完整的Arduino代码示例: ```cpp #include <Arduino.h> // 定义UART1引脚 #define TX_PIN 1 // U1TXD 引脚 #define RX_PIN 0 // U1RXD 引脚 // 创建UART1实例 HardwareSerial SerialUART(1); void setup() { Serial.begin(115200); // 初始化USB-UART(调试用途) // 初始化UART1 SerialUART.begin(115200, SERIAL_8N1, RX_PIN, TX_PIN); // 等待串口准备好 while (!Serial) { delay(100); } Serial.println("UART1 已经初始化成功!"); } void loop() { if (SerialUART.available() > 0) { // 检查是否有数据可读 String inputData = SerialUART.readString(); // 接收数据 SerialUART.println(inputData); // 将接收到的数据重新发送回去 } delay(500); // 延迟一段时间 } ``` --- ### 注意事项 - **引脚分配**:确保选择的GPIO引脚未被其他外设占用[^3]。 - **波特率匹配**:通信双方的波特率必须一致,否则可能导致数据传输错误[^1]。 - **中断支持**:如果需要更高效的异步数据处理,可以使用`onReceive()`回调函数注册中断服务程序[^4]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值