C51 的中断函数定义方法,不是 C 语言标准,而是 C51 的“方言”,没有移植性,也没有参照性。
STM32 (Cortex-M0/M3/M4) 的中断机制,与 x86 类似,也是有一个“中断向量表”,里面最多可以包含 256 个函数指针,每个函数指针指向一个“中断服务例程”,按 C 语言的观点来看,stm32 的中断向量表,就是一个有 256 个元素的指针数组。
这个数组,可以由你来定义,如:
// 声明或定义中断服务例程
void reset (void);
void nmi (void);
void hardfault (void);
...
// 中断向量表
void *vector_table[] = {
__stack,
reset,
nmi,
hardfault,
...
// 其它中断函数
};
而一般情况是在汇编语言写的“启动代码”里,定义了这个向量表,里面的各个中服务断例程的函数指针(名字)也是定死了的,你可以用 C 函数来实现各个例程,要注意:你的例程名字,必须与“启动代码”里的函数名称一致!这个就是你所说的“关联”,而各个例程的名字是什么,你可以查看“启动代码”文件,或厂家提供的开发手册。