STM32的 中断源 和 中断服务程序 是如何关联的呢?

当有一中断产生,STM32就会调用相应的服务程序,可是,中断源有那么多,中断服务程序也有那么多,它们是如何一一对应的?51的中断是在中断服务函数后面后缀interrupt... 当有一中断产生,STM32就会调用相应的服务程序,可是,中断源有那么多,中断服务程序也有那么多,它们是如何一 一对应的?51的中断是在中断服务函数后面后缀 interrupt x,表示这个函数是为x号中断服务的,如此实现了中断源 和 中断服务程序 的关联,我觉得意思很清晰。可是STM32的 中断源 和 中断服务程序 是如何关联的呢? 展开
 我来答
john_lee1969
推荐于2017-10-03 · TA获得超过1700个赞
知道小有建树答主
回答量:419
采纳率:100%
帮助的人:530万
展开全部

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 广告
单片机,即单片微控制器,也称为单片微型计算机,是将中央处理器(CPU)、存储器(ROM,RAM)、输入/输出接口和其他功能部件集成在一块 在一个小块的集成电路上,从而实现对整个电路或系统的数字式控制。单片机不是完成某一个逻辑功能的芯片,而是... 点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式