arm9 中断向量 重定位_STM32 中断向量表的位置 、重定向

发布于:2021-10-17 19:58:07

STM32


中断向量表的位置


、重定向


我们也知道怎么跳到


main


函数了,那么,中断发生后,又是怎么跑到中


断入口地址的呢?从


stm32f10x.s


可以看到,已经定义好了一大堆的中断响应函


数,这就是中断向量表,标号


__Vectors


,表示中断向量表入口地址,例如:


AREA


RESET,


DATA,


READONLY


;


定义只读数据段,实际上是在


CODE


区(假设


STM32



FLASH


启动,则此中断向量表起始地址即为


0x8000000


)


EXPORT


__VectorsIMPORT


OS_CPU_SysTickHandler


IMPORT


OS_CPU_PendSVHandler


__Vectors


DCD


__initial_sp


;


Top


of


Stack


DCD


Reset_Handler


;?Reset?Handler


DCD


NMI_Handler


;


NMI


Handler


DCD


HardFault_Handler


;


Hard


Fault


Handler


DCD


MemManage_Handler


;


MPU


Fault


Handler


DCD


BusFault_Handler


;?Bus?Fault?Handler


DCD


UsageFault_Handler


;


Usage?Fault?Handler


这个向量表的编写是有讲究的,跟硬件一一对应不能乱写的,


CPU


找入口地


址就靠它了,


bin


文件开头就是他们的地址,参考手册


RM0008



10.1.2


节可


以看到排列。


我们再结合


CORTEX-M3


的特性,他上电后根据


boot


引脚来决定


PC


位置,


比如


boot


设置为


flash


启动,则启动后


PC


跳到


0x08000000


。此时


CPU


会先取


2


个地址,第一个是栈顶地址,第二个是复位异常地址,故有了上面的写法,


这样就跳到


reset_handler



那么这个


reset_handler


的实际地址是多少


.


?下面的一堆例如


Nmi_handler



址又是多少呢?发生中断是怎么跑到这个地址的呢?下面挨个讲解。







相关资源:【SystemVerilog】路科验证V2学*笔记(全600页).pdf

相关推荐

最新更新

猜你喜欢