主控:STM32F103VET6
环境:CubeIDE
现象:移植同样的主控,发现boot跳转app概率导致死机的问题
跳转程序参考:
HAL_RTCEx_BKUPWrite(&hrtc, RTC_BKP_DR1, BOOT_VERSION);
/* Check Vector Table: Test if user code is programmed starting from
* address "APPLICATION_ADDRESS" */
// ret = ((*(__IO uint32_t *) APPLICATION_ADDRESS) & 0xFF000000);
if ((((*(__IO uint32_t *) APPLICATION_ADDRESS) & 0xFF000000) == 0x20000000)
|| (((*(__IO uint32_t *) APPLICATION_ADDRESS) & 0xFF000000) ==
0x10000000))
{
/* Jump to user application */
JumpAddress = *(__IO uint32_t *) (APPLICATION_ADDRESS + 4);
Jump_To_Application = (pFunction) JumpAddress;
/* Initialize user application's Stack Pointer */
__set_MSP(*(__IO uint32_t *) APPLICATION_ADDRESS);
//HAL_Delay(10);//加了延迟就能跳转
Jump_To_Application();
除了硬件不同以外别的没区别,电流现象
正常跳转异常死机
调试发现跳转之后进入死机,猜想可能硬件并没有启动起来导致死机(未测试),后续在跳转之前添加延迟之后就未出现死机现象。