首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

STM32_IAP详解(5)

STM32_IAP详解(5)

 是不是没有说中断向量表的问题,在iap中我们不需要考虑中断向量表,因为默认就是在0x8000000位置的,但是在app中代码的起始位置变了,必须重新设置中断向量表
在system_stm32f10x.c中有一个system_init函数,该函数被启动代码调用,配置系统时钟,在该函数中的最后一句为

#ifdef VECT_TAB_SRAM

  SCB->VTOR = SRAM_BASE |VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM. */

#else

  SCB->VTOR = FLASH_BASE |VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH. */

#endif
其中VECT_TAB_OFFSET就是我们要定义的偏移量,也就是app程序的起始地址偏移,我们知道是2000,那么该值的宏就需要修改,在大约128行的位置

//此处为flash偏移地址,app应当修改这个地址

#define VECT_TAB_OFFSET  0x2000/*!< Vector Table base offset field.

                                  This valuemust be a multiple of 0x200. */
继承事业,薪火相传
返回列表