【发布时间】:2021-01-26 22:10:50
【问题描述】:
void on_low_interrupt(void) __interrupt 2;
void on_low_interrupt(void) __interrupt 2
{
#ifdef CONFIG_ENABLE_I2C
i2c_handle_interrupt();
#endif
#ifdef CONFIG_ENABLE_SERIAL
serial_handle_interrupt();
#endif
}
我正在修改一些代码以在 PIC18F47Q10 上以从机模式运行 I2C。
该代码是为另一个类似的 PIC 编写的,但确实需要一些调整。
这是原始代码:https://github.com/texane/pic18f_i2c
在定义之前我不明白调用,我也不明白“2”是什么意思。
这是来自原版中发布的int.c 文件。任何帮助或解释表示赞赏。
现在我正在评论所有这些,并希望没有它也能正常工作。
看到的错误是:
"unexpected token: __interrupt
Unable to resolve identifier on_low_interrupt."
"error: expected function body after function declarator"
【问题讨论】:
-
这不是电话,而是声明。
-
确定是的。好点子,我的错。所以 XC8 编译器确实识别 __interrupt() 但在用户指南中它只出现在 void 之后。我只是不清楚意图是什么,以及是否应该以某种方式更正或者是否有必要。抱歉,我的信息太少了,但我就是这样。
-
PJ 我很欣赏你的评论。我不能就这样消失两年。我正在做一些事情,我正在学习 C。我几年前开始的。如果不在这里,我还能在哪里“被允许”问这样的问题?
-
顺便说一句,这不是 XC8 代码。
-
它的意思是(一个糟糕的)编译器扩展,它告诉函数应该安装为中断 2 的中断处理程序,不管这意味着什么。 CPU 将在中断发生时调用该函数。如果您不知道这一点,那么现在是前往例如 the Wikipedia 文章的好时机。