系列文章目录
stm32学习
一、bootloader
第一段程序作用是用于升级app、加载app,起始地址为0x8000000
代码如下(示例):
int main(void)
{
uint32_t appxaddr = 0x08010000;
iapfun jump;
if(((*(vu32*)appxaddr)&0x2FFE0000)==0x20000000)
{
jump=(iapfun)*(vu32*)(appxaddr+4);
MSR_MSP(*(vu32*)appxaddr);
jump();
}
}
二、app
app是应用程序,由bootloader加载,起始地址设置为0x8010000
app main函数开始要设置对应的偏移地址才能正常跳转
代码如下(示例):
int main(void)
{
SCB->VTOR = 0x8000000 | 0x10000;
//todo
}
总结
编译选项及程序设置的地址必须保持一致,否则会影响正常跳转