unwind 说的是真的,属性由 gcc 的 MPLAB 扩展定义。自从我使用微控制器已经有一段时间了,所以我无法提供这方面的更多细节。但是对于您的特定应用程序(在 pic 微控制器上嵌入 c)。以上是声明一个函数的正确方法,该函数旨在实现定时器 1 的中断子程序。中断子程序很少返回任何内容,如果您需要捕获寄存器中的值,我建议您使用以下结构作为全局变量:
typedef struct T1OUT
{
int timer_register_value;
int flag;
} T1InteruptCapture;
timer_register_value 是您想要从子例程中取出的值。而标志值是内存锁,可防止子例程覆盖您以前的值。有不同的方法可以从子程序中获取值。我发现这是最简单和最省时的。您还可以考虑实现一个迷你缓冲区。我建议您避免使用嵌入式 C 的指针。我不知道在过去几年中情况是否发生了变化。
编辑 1:MPLAB 有一些我见过的最好的文档。我建议您查看适用于您特定微控制器的那个。他们提供了带有很好解释的示例代码。
编辑 2:我不确定你为什么使用 gcc。我建议您从 MPLAB 获取 pic 编译器。我相信它被称为C30。以及相关的 .h 文件。