STM32的 中断源 和 中断服务程序 是如何关联的呢?
当有一中断产生,STM32就会调用相应的服务程序,可是,中断源有那么多,中断服务程序也有那么多,它们是如何一一对应的?51的中断是在中断服务函数后面后缀interrupt...
当有一中断产生,STM32就会调用相应的服务程序,可是,中断源有那么多,中断服务程序也有那么多,它们是如何一 一对应的?51的中断是在中断服务函数后面后缀 interrupt x,表示这个函数是为x号中断服务的,如此实现了中断源 和 中断服务程序 的关联,我觉得意思很清晰。可是STM32的 中断源 和 中断服务程序 是如何关联的呢?
展开
1个回答
展开全部
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 函数来实现各个例程,要注意:你的例程名字,必须与“启动代码”里的函数名称一致!这个就是你所说的“关联”,而各个例程的名字是什么,你可以查看“启动代码”文件,或厂家提供的开发手册。
意法半导体(中国)投资有限公司
2023-06-12 广告
2023-06-12 广告
单片机,即单片微控制器,也称为单片微型计算机,是将中央处理器(CPU)、存储器(ROM,RAM)、输入/输出接口和其他功能部件集成在一块 在一个小块的集成电路上,从而实现对整个电路或系统的数字式控制。单片机不是完成某一个逻辑功能的芯片,而是...
点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询