这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 【M5stackS3】使用外部按键输出字符串

共1条 1/1 1 跳转至

【M5stackS3】使用外部按键输出字符串

高工
2026-06-18 11:10:35     打赏

一:外部中断

            外部中断是硬件中断的一种,它由微控制器外部的事件引发。微控制器的某些引脚被设计为对特定事件的发生做出响应,例如按钮的按压、传感器的信号改变等。这些指定的引脚通常被称为“外部中断引脚”。

  在发生外部中断事件时,当前在执行的程序会被立即停止,然后跳转到对应的中断服务程序(ISR)进行处理。处理完毕后,程序会返回到被中断的地方继续执行。

  对于嵌入式系统、实时系统来说,外部中断的使用是非常重要的,能帮助系统对外部事件进行即时响应,大大提高了系统的效率和实时性。ESP32S3开发板提供了许多引脚作为可用的外部中断引脚,可以通过配置这些引脚来进行外部中断实验。

    ESP32S3 的外部中断有上升沿触发、下降沿触发、低电平触发、高电平触发模式。

二:中断的用途

  ESP32S3的外部中断功能在Arduino开发中具有以下作用和优势:

        实时响应外部事件:ESP32S3的外部中断功能可以让你的Arduino在检测到外部事件触发时立即作出响应。这些外部事件可以是来自传感器、按钮、开关、接收到的信号等等。通过外部中断,就可以实时地捕捉到这些事件并执行相应的操作,而无需频繁地轮询或等待。    

        节省计算资源:外部中断允许你将处理外部事件的任务转移给芯片的硬件,从而节省了处理器的计算资源。相比于软件轮询方式,外部中断可以降低对处理器的负担,使其可以更有效地利用其它资源进行更复杂的任务。

        精确的事件捕捉:ESP32S3的外部中断功能能够以非常精确的方式捕捉外部事件的触发。你可以通过配置中断触发方式(如上升沿、下降沿、任意电平、低电平保持、高电平保持等)来适应不同的外部事件,并在事件发生时立即中断当前程序的执行,转而执行中断服务函数(ISR)。

        高优先级处理:外部中断可以设置为高优先级处理,优先于当前正在执行的程序。这对于需要立即响应的重要事件非常有用,如紧急通知、传感器检测等。当外部事件触发时,处理器将立即转移到中断服务函数执行,确保及时、准确地处理相关操作,避免对处理程序的延迟。

        多路中断处理:ESP32S3支持多路外部中断,你可以将多个外部事件与不同的中断引脚相连,从而实现对多个事件的并行处理。这使得你可以在一个Arduino上处理多个传感器、开关等外部事件,提高系统的灵活性和扩展性。

  总之,ESP32S3的外部中断功能给的Arduino项目提供了实时响应、节省计算资源、精确事件捕捉、高优先级处理和多路中断处理等优势。它为我们提供了更加灵活、高效的方式来处理外部事件,并帮助构建更强大、可靠的应用。

三:软件编写流程:

3.1 初始化按键使用引脚,初始化串口

05-1 按键原理图.png

这里按键所使用的引脚是:GPIO41

void setup()
{
  //初始化串口
   Serial.begin(115200);
  //设置KEY引脚(41) 为上拉输入模式
  pinMode(BUTTON, INPUT_PULLUP);
  // 配置中断引脚为GPIO0,外部中断回调函数为 exitcallback), 中断下降沿触发
  attachInterrupt(digitalPinToInterrupt(BUTTON), exitcallback, FALLING);
}
3.2 中断回调函数:

//按键状态(中断回调函数与主程序共享的变量要加上 volatile 关键字)
volatile bool flag = false;

//中断回调函数
void exitcallback()
{
  flag = true;
}
3.3 主函数如下所示:

void loop()
{
  //当按键按下时会产生一个下降沿,进入回调函数 exitcallback(),而exitcallback()中只是将flag = true
  //故当flag == true 时,说明按键按下
  if ( flag == true )
  {
    //延时200毫秒
    delay(200);
    Serial.printf("ESP32 exit test!! by keyboard!!! \n");
    // 重置中断标志位
    flag = false;
  }
}
四:实物验证:

05-2 实物验证图.png

每次按下按键时候,可以看到串口输出固定字符。





关键词: stack     外部中断    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]