用STM32L151芯片做在线升级boot程序,boot程序在0x08000000-0x08004000,user程序在0x08004000之后,跳转之后设置向量中断的偏移量到0x4000,仿真看寄存器值设置成功了,但实际没有生效,从boot跳转到user这边程序正常跑的,但进不去中断了。这个可能是什么问题,能怎么解决?用的是SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET;这个语句,FLASH_BASE 是0x08000000,VECT_TAB_OFFSET是0x4000 |
@xch :谢谢。这个试过也不行,之前在STM32F072因为没有VTOR寄存器,是这样操作的,是可以,这个芯片试了一下不行。也可能哪里搞错了,这个方法可以再试试看。我试过直接进去APP后,直接把APP的向量地址复制到boot的对应位置,这个可以进中断,但重启之后进boot会出错。
进user 之前能中断?先复制一份boot 中断向量到RAM,修改偏移到RAM,然后在进USER之前修改RAM 中断向量。看看行不行