Tag: stm32重

在MCU内部FLASH中从一个固件跳转到另一个固件

我目前正在开发针对STM32F030C8的引导加载程序固件应用程序。 我在我的分散文件中指定引导加载程序应用程序将占用主存储器位置0x08000000到0x08002FFF(扇区0到扇区2)。 我还写了一个主要的固件应用程序,存储从0x08003000到0x0800C800。 将两个固件下载到MCU内部FLASH后,我使用以下代码从引导加载程序中激活了主应用程序: /************************************************************//** * \brief Start the main application if available and correct *****************************************************************/ void INTFLASH_execute_main_app(const char mode) { MyFunc_ptr AppEntry; uint32_t temp[1]; IRQn_Type index; memcpy(temp, (void*)&NVIC->ISER, sizeof(NVIC->ISER)); //Save enabled interrupts for( index = (IRQn_Type)0; indexISER, temp, sizeof(NVIC->ISER) ); //Restore interrupts } 出于某种原因,当它执行AppEntry()时,它会跳转到下面的代码,并且不会在位置0x08003000处执行主应用程序: HardFault_Handler\ PROC EXPORT HardFault_Handler [WEAK] B . ENDP 我之前在ARM7 MCU上使用过这种逻辑,它工作正常,我无法弄清楚为什么它不适用于这种基于Cortex […]