c++ - ESP32:使用 IRAM_ATTR 时编译错误
问题描述
我确信我在做一些非常愚蠢的事情,但是在这里.. 当我将 IRAM_ATTR 用于我的 ISR 时,我得到一个编译错误。我正在为 ESP32 编译。
这是ISR的定义
void
IRAM_ATTR
detectsBlockOccupancy() {
....
ISR code..
...
}
这是第一个用法:
void setup() {
// Set Sensor pin as interrupt, assign interrupt function and set RISING mode
attachInterrupt(digitalPinToInterrupt(BDInterruptPin), detectsBlockOccupancy, RISING);
...
}
我得到的错误如下:
在函数 'void setup()' 中:Node0:226:90: 错误:从 'int ( )()' 到 'void ( )()' 的无效转换 [-fpermissive] attachInterrupt(digitalPinToInterrupt(BDInterruptPin),检测块占用,上升) ; ^ 在来自 C:\Users\vibhas\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4\cores\esp32/esp32-hal.h:53:0 的文件中,来自 C:\Users\ vibhas\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4\cores\esp32/Arduino.h:35,来自sketch\Node0.ino.cpp:1: C:\Users\vibhas\AppData\ Local\Arduino15\packages\esp32\hardware\esp32\1.0.4\cores\esp32/esp32-hal-gpio.h:81:6: 注意:初始化参数 2'void attachInterrupt(uint8_t, void ( )(), int)' void attachInterrupt(uint8_t pin, void ( )(void), int mode); ^
如果我删除 IRAM_ATTR 那么它编译得很好。似乎认为我正在尝试传递不同类型的函数指针。我可能做错了什么?
谢谢 vibhas
解决方案
推荐阅读
- javascript - 图表 JS 堆叠条形之间的距离
- node.js - Heroku 部署以错误 npm ERR 结束!404 未找到:事件流@3.3.6
- c# - 部分视图是限制用户访问的好方法吗?
- programming-languages - 为什么所有编译器 Pascal 都不起作用?
- ios - Strava 等应用程序如何在 iPhone 上继续在后台运行?
- android - AppCompatButton 子类具有透明背景
- docker - Hyperledger Fabric:无法将交易“xxx”的对等响应发送给订购者
- ssh - Ansible 无法构造所需的 ssh 命令
- scala - 检查rabbitMQ消息是否路由成功
- java - 导致 libplayer.so 的 APK 崩溃的错误