使用STM32已经有一段时间了,中断服务函数也看过不少,今天猛然一看中断服务函数,突然无比疑惑,中断服务函数在整个工程中明明没有被调用,程序是怎么运行这个中断函数的呢?带着疑问,开始寻找答案。
经过查资料发现,STM32的启动文件startup_stm32f10x_md.s存放有一个中断向量表,如下图所示。STM单片机Cortex-M3内核集成一个中断控制器,当中断发生并开始响应后,Cortex-M3自动定位到下图中的中断向量表,并根据中断号从中断向量表中找出中断函数入口地址,然后执行相应的中断函数。
由此可知,编写中断服务函数的时候,中断服务函数名并不是随意编造的,而是根据中断向量表来确定的。知道真相的我瞬间感觉前方的路还很远。