在.cpp文件中找不到 ISR
ISR in .cpp file not found
我有一个嵌入式项目,其中包含c文件(来自SDK的驱动程序(和c ++(.cpp(文件(我自己的代码(。我正在尝试设置中断服务例程。我发现如果 ISR 在 .c 文件中,它可以正常工作。但是,移动到.cpp文件中的完全相同的功能不起作用。
在MK64F12_Vector;
_vectors:
...
.word PORTD_MyIRQHandler
一些在启动时调用一次的相关初始化代码;
CLOCK_EnableClock(kCLOCK_PortD);
EnableIRQ(PORTD_IRQn);
PORT_SetPinInterruptConfig(PORTD, 0, kPORT_InterruptFallingEdge);
在 .c 文件中;
void PORTD_MyIRQHandler()
{
while (1) ; // put breakpoint here
}
如果 PORTD_MyIRQHandler(( 在 .c 文件中,则上述工作正常。但是如果我将其移动到.cpp文件(我想要它的地方!我收到下面的错误。请注意,我只是复制和粘贴它而不更改任何内容。
(.vectors+0x138(:对"PORTD_MyIRQHandler"的未定义引用
我还需要做些什么来让它工作吗?也许是编译器或链接器选项?我尝试了以下方法但没有成功;
__attribute__((interrupt)) void PORTD_MyIRQHandler() {..}
#pragma interrupt
void PORTD_MyIRQHandler() {..}
我正在使用 Segger Embedded Studio 和 gcc。
试试
extern "C" void PORTD_MyIRQHandler(){
}
C++ 将字符添加到函数名称中,具体取决于函数的输入和返回值类型。
此功能(类型名称重整(的存在是为了避免使用错误类型的参数链接函数并允许函数重载。使用外部"C"可以禁用它。
相关文章:
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 为什么野牛仍在使用"int yylex(void)",却找不到"int yylex(YYS
- C++ Windows 驱动程序MSB3030无法复制该文件,因为它找不到
- 奇怪的(对我来说)返回声明 - 在谷歌上找不到任何关于它的信息
- 找不到QtResource文件中的文件
- VC++本机单元测试,找不到调试符号
- RegGetValue在当前用户下找不到名称
- 带有 -stdlib=libc++ 的 clang++ 9.0.1 找不到<optional>
- c++找不到具有相同哈希的无序集合元素
- 找不到以下加速库:boost_fiber
- 找不到 FLTK(缺少:FLTK_INCLUDE_DIR)
- 设置 Visual Studio for MPI: 找不到标识符错误
- "assimp/config.h"找不到,但它在文件夹中
- 链接器找不到在虚拟类 c++ 中访问的静态字段的符号
- C++系统找不到指定的文件错误
- FindPackageHandleStandardArgs.cmake:137 的 CMake 错误(消息):找不到 Boost (缺少:正则表达式)(找到合适的版本"1.72.0",
- vcpkg 添加新库,但找不到
- Qt 5.11.2 (Clang 8.0 (Apple), 64 位), 找不到 QJSEngine 文件
- 在.cpp文件中找不到 ISR