求解SCB->VTOR的作用。

2019-08-17 03:34发布

在查看四旋翼带遥控的程序的时候,遇到了这个问题。
不明白SCB->VTOR这个寄存器的作用。固件是放在了0x08000000开始的地方,我们烧写程序的时候,都是从0x08020000开始,不然会把固件刷掉。
那么请问这个SCB->VTOR有什么用呢?
下面是代码。
[mw_shl_code=c,true]/*====================================================================================================*/
/*====================================================================================================*
**函数 : Bootloader_Set
**功能 : BOOT相关设置
**输入 : None
**輸出 : None
**备注 : None
**====================================================================================================*/
/*====================================================================================================*/
void Bootloader_Set(void)
{
        u16 i;
       
        // 设置偏移量
        SCB->VTOR = FLASH_BASE | FLASH_EXCURSION ; //FLASH_BASE=0x08000000;FLASH_EXCURSION=0x20000
        i=0x0505;
        STMFLASH_Write(pro_FALG_ADD,&i,1);   
}
[/mw_shl_code]
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
小工人
1楼-- · 2019-08-17 09:18
VTOR 寄 存 器 存 放 的 是 中 断 向 量 表 的 起 始 地 址 。 默 认 的 情 况
VECT_TAB_SRAM 是没有定义,所以执行 SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET;
对于 FLASH APP,我们设置为 FLASH_BASE+偏移量 0x10000,所以我们可以在 FLASH APP 的
main 函数最开头处添加如下代码实现中断向量表的起始地址的重设:
shibinjie
2楼-- · 2019-08-17 12:56
设置中断向量表偏移量

一周热门 更多>