You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ESP32:绑定至第二核心的任务中挂载的中断是否运行于该核心?

问题解答

结论:这个中断并不会运行在第二核心(核心1)上

在ESP32平台中,中断服务程序(ISR)的运行核心由硬件中断控制器分配,和你在哪个任务里执行attachInterrupt注册操作没有关联。默认情况下,绝大多数中断会被分配到核心0执行,不会继承注册任务所在的核心。

如果你需要让该中断固定在核心1运行,必须手动通过API指定中断的核心归属,示例代码如下:

xTaskCreatePinnedToCore(coreTask1, "CPU_1", 1000, NULL, 0, &Core1TaskHnd, 1); //Creating Task on Core 1

void coreTask1(void *parameter) //The Task I call
{
  attachInterrupt(2, encoderEvent_Motor1, CHANGE); 
  // 指定引脚2对应的中断在核心1运行
  xPortSetInterruptCore(2, 1);

  //attachInterrupt(2, encoderEvent_Motor2, CHANGE); //TODO
  //attachInterrupt(2, encoderEvent_Motor3, CHANGE); //TODO
  //attachInterrupt(2, encoderEvent_Motor4, CHANGE); //TODO

  Serial.println(xPortGetCoreID());

  while (1)
  {
    /* code */
  }
}

需要注意的是,并非所有中断都支持指定核心,具体要看硬件中断的类型,但GPIO中断通常是支持的。

内容的提问来源于stack exchange,提问作者Teebow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 04:50:24