未找到 .cpp 文件中的 ISR

尼克

我有一个包含 c 文件(来自 SDK 的驱动程序)和 c++ (.cpp) 文件(我自己的代码)的嵌入式项目。我正在尝试设置一个中断服务例程。我发现如果 ISR 位于 .c 文件中,它可以正常工作。但是,移入 .cpp 文件的完全相同的函数不起作用。

在 MK64F12_Vector.s 中;

_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() {..}

我正在使用带有 gcc 的 Segger Embedded Studio。

萨米·萨利宁

尝试

extern "C" void PORTD_MyIRQHandler(){
}

C++ 向函数名称添加字符,这些字符取决于函数的输入和返回值类型。

这个特性,类型名称修改,存在是为了避免使用错误类型的参数链接函数并允许函数重载。使用 extern "C" 可以禁用它。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

ISR中的变量未增加

来自分类Dev

GitHub API文件更新:“未找到”

来自分类Dev

ISR中的事件通知

来自分类Dev

SCP提供了未找到的文件或目录

来自分类Dev

JS文件未找到Jquery变量

来自分类Dev

.htaccess重写文件未找到

来自分类Dev

Xcode中的“未找到配置文件”

来自分类Dev

当我在Catch2中编译010-TestCase.cpp文件时,获取CATCH_SINGLE_INCLUDE:命令未找到错误

来自分类Dev

Jenkins管道-未找到文件异常

来自分类Dev

Xdebug .so文件存在,但仍报告未找到

来自分类Dev

Laravel 7中未找到文件异常

来自分类Dev

查找未找到所有文件

来自分类Dev

导入SVN中,获取文件存在或文件未找到错误

来自分类Dev

R未找到或读取文件

来自分类Dev

Xamarin文件未找到异常

来自分类Dev

短跑搜索未找到某些文件

来自分类Dev

.htaccess重写文件未找到

来自分类Dev

在哪里可以找到CGAL中的.cpp文件?

来自分类Dev

Intellij 文件未找到或已损坏

来自分类Dev

节点 FS 未找到文件夹

来自分类Dev

Laravel 文件存储链接未找到异常

来自分类Dev

尽管文件存在,但获取“未找到模块”

来自分类Dev

查找未找到文件

来自分类Dev

Shellexecute 错误 2 - 未找到指定的文件

来自分类Dev

未找到文件:-Ttext

来自分类Dev

损坏的包(未找到文件)

来自分类Dev

git 属性使用过滤器污迹/清理通过 shell 脚本处理 .cpp 文件未找到文件名

来自分类Dev

未找到 NMSSH 文件

来自分类Dev

文件未找到错误: