本帖最后由 〽️〽️〽️ 于 2021-3-3 14:25 编辑
boot放在0x08000000
app放在 0x08004000
1.用的外部晶振
2.用了UART0 DMA空闲中断完成升级, 也就是bootloader用到了中断
现在升级都正常,升级的文件也对的
但是升级后app运行异常,表现是速度变慢了
#define APP_ADDRESS (uint32_t)0x08004000
bootloader 里:
void vJumpToApplication(void)
{
uint32_t JumpAddress = *(__IO uint32_t*)(APP_ADDRESS + 4);
pFunction Jump_To_Application;
if (((*(__IO uint32_t*)APP_ADDRESS) & 0x2FFE0000 ) == 0x20000000)
{
__disable_irq(); //由于boot 用了中断,不加这句话的话,跳转了直接不运行app
__set_MSP(*(__IO uint32_t*) APP_ADDRESS);
JumpAddress = *(__IO uint32_t*) (APP_ADDRESS + 4);
Jump_To_Application = (pFunction) JumpAddress;
Jump_To_Application();
}
app 里
int main(void)
{
SCB->VTOR = 0x08004000; //APP下载的地址
sys_init();
__enable_irq(); //boot关了,要打开
while(1)
{
...
}
} |