在查看四旋翼带遥控的程序的时候,遇到了这个问题。
不明白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]
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
VECT_TAB_SRAM 是没有定义,所以执行 SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET;
对于 FLASH APP,我们设置为 FLASH_BASE+偏移量 0x10000,所以我们可以在 FLASH APP 的
main 函数最开头处添加如下代码实现中断向量表的起始地址的重设:
一周热门 更多>