发布网友 发布时间:2024-09-26 17:47
共1个回答
热心网友 时间:2024-10-23 20:07
在进行基于STM32的BooLoader开发时,修改Application的矢量表位置是关键步骤之一。配置偏移量的大小需根据BooLoader代码在Flash中的存储情况进行调整。在使用IAR的IDE进行开发时,可按照以下步骤调整矢量表配置:
首先,在代码文件中修改宏VECT_TAB_OFFSET。例如,设置为 #define VECT_TAB_OFFSET 0x00003000,这表示Application的矢量表从BaseAddr + 0x00003000开始存放。此配置是中断配置寄存器的一部分,用于告知单片机发生中断时应取哪个地址获取中断入口。
接着,在指定配置界面中,将intvect start值设置为与VECT_TAB_OFFSET相同的值。若不进行此配置,程序在执行中断时可能会出现异常行为,即跑飞。
配置的目的是在builder进行内存分配时,确保矢量表的初始地址正确存储。图中所示,程序的矢量表起始地址从内存中的0x08003000开始存放。系统初始化完成后,当发生中断时,PC将去VECT_TAB_OFFSET对应位置查找中断函数的入口地址。若这两步中的矢量表偏移地址不匹配,则程序将出现异常行为。