void app_boot_loader_jump()
{
__disable_interrupt();
// Disable adc with dma function.
DMA1_Channel1->CCR = 0 ; // disable DMA of ADC1
ADC1->CR |= ADC_CR_ADDIS; // disable ADC. This n
drv_interrupt_vector_table_to_flash();
if(!(*SYSTEM_CONFIG_2 & SYSTEM_CONFIG_2_WWDG_DISABLE)){
drv_wwdg_refresh();
}
SysTick->CTRL &= (~SysTick_CTRL_TICKINT_Msk);//drv_sys_tick_stop
__set_MSP(*BOOT_LOADER_START_ADDR);//init the MSP to the Stack
((void (*)())(*(BOOT_LOADER_START_ADDR+1)))();
}
基本逻辑是将APP正在运行的一些功能模块关闭,以及将vector table重新放在flash 0800 0000这个default地址里,初始化栈顶指针,以及跳入reset handler入口