建网站的网络公司,甘肃庆阳网红排名,随州网站建设公司,私人定制关于STM32中断向量表的位置、重定向问题首先我们需要跳到main函数#xff0c;这个就不多说了。那么#xff0c;中断发生后#xff0c;又是怎么跑到中断入口地址的呢#xff1f;从stm32f10x.s可以看到#xff0c;已经定义好了一大堆的中断响应函数#xff0c;这就是中断向…关于STM32中断向量表的位置、重定向问题首先我们需要跳到main函数这个就不多说了。那么中断发生后又是怎么跑到中断入口地址的呢从stm32f10x.s可以看到已经定义好了一大堆的中断响应函数这就是中断向量表标号__Vectors表示中断向量表入口地址例如AREA RESET, DATA, READONLY ;定义只读数据段实际上是在CODE区(假设STM32从FLASH启动则此中断向量表起始地址即为0x8000000)EXPORT__VectorsIMPORTOS_CPU_SysTickHandlerIMPORTOS_CPU_PendSVHandler__VectorsDCD__initial_sp;TopofStackDCDReset_Handler;ResetHandlerDCDNMI_Handler;NMIHandlerDCDHardFault_Handler;HardFaultHandlerDCDMemManage_Handler;MPUFaultHandlerDCDBusFault_Handler;BusFaultHandlerDCDUsageFault_Handler;UsageFaultHandler这个向量表的编写是有讲究的跟硬件一一对应不能乱写的CPU找入口地址就靠它了bin文件开头就是他们的地址参考手册RM0008的10.1.2节可以看到排列。我们再结合CORTEX-M3的特性他上电后根据boot引脚来决定PC位置比如boot设置为flash启动则启动后PC跳到0x08000000。此时CPU会先取2个地址第一个是栈顶地址第二个是复位异常地址故有了上面的写法这样就跳到reset_handler。那么这个reset_handler的实际地址是多少.下面的一堆例如Nmi_handler地址又是多少呢发生中断是怎么跑到这个地址的呢下面挨个讲解。1、我们可以通过反向来得知这些入口地址查看工程下的map文件就可以看到了这个地址跟keil里面设置的target-flash起始地址息息相关实际上我们不太需要关心让编译器分配中断向量表放的就是他们的地址。2、对比ARM7/ARM9内核Cortex-M3内核则是固定了中断向量表的位置而起始地址是可变化的。3、进到