stm32是意法半导体公司推出的一款嵌入式微控制器,广泛应用于各种嵌入式系统中。在stm32中,中断是一种重要的程序执行方式。stm32采用了基于向量的中断控制方式,即中断向量表。
中断向量表是一张告诉处理器中断向量在内存中的位置的数据表。当处理器接收到中断请求时,它会查找中断向量表以确定处理该中断的代码的地址。
stm32中断向量表通常存储在Flash或SRAM中,并在芯片的Reset后被加载。中断向量表由 32 个 4 字节的向量组成,每个向量表示一个中断源,格式如下:
地址+4字节为相应中断的服务函数的入口地址。
stm32中断向量表的第二项是Reset_Handler。Reset_Handler是系统从复位开始执行的第一个中断向量,其地址为0x00000004。在复位时,Reset_Handler会执行初始化程序,并确定其他中断向量的地址。
当stm32芯片上电复位后,Reset_Handler会执行一系列初始化操作,例如将片上外设初始化,设置栈指针、堆栈大小等。
由于不同版本的stm32微控制器之间的外设数量、地址等不同,因此在使用不同型号的stm32芯片时,需要使用对应版本的启动文件和链接脚本。
而Reset_Handler作为中断向量的第二项,也有可能在不同型号之间不兼容。当在使用其他芯片的启动文件和链接脚本时,需要进行特殊处理,否则可能会导致系统无法正常启动。