
各位大神好,遇到一个奇怪的问题,我从APP跳转到bootloader不成功,但是bootloader升级没有问题,重新上电也可以运行,但是就是无法跳转成功,源代码如下,希望有人能解答下! void JumpToBootloader(void) { uint32_t i=0; void (*SysMemBootJump)(void); // 申明一个函数指针 __IO uint32_t BootAddr = 0x08000000; //boot地址 __set_PRIMASK(1); //关全局中断 //关定时器 SysTick->CTRL = 0; SysTick->LOAD = 0; SysTick->VAL = 0; //关闭所有中断,清除所有中断挂起标志 HAL_RCC_DeInit(); // for (i = 0; i < 8; i++) { NVIC->ICER=0xFFFFFFFF; NVIC->ICPR=0xFFFFFFFF; } __set_PRIMASK(0); //开全局中断 // 跳转到系统BootLoader,首地址是MSP,地址+4是复位中断服务程序地址 SysMemBootJump = (void (*)(void)) (*((uint32_t *) (BootAddr + 4))); //设置主堆栈指针 __set_MSP(*(uint32_t *)BootAddr); //在RTOS工程,这条语句很重要,设置为特权级模式,使用MSP指针 __set_CONTROL(0); //跳转到系统BootLoader SysMemBootJump(); //跳转成功的话,不会执行到这里,用户可以在这里添加代码 while (1) { } } |
型号替代-STM32H5
正点原子阿波罗H743使用DMA2D后普通刷出现问题
STM32H7系列RMII用于TCP/IP 服务器
STM32H745I-DISCO的GUI DEMO演示。
关于GFX软件下载汇报
touchgfx 4.14版本
STM32STM32H745I demo板演示,以及点灯
关于STM32H745I demo板,M7下载正常,M4下载报错?请问是怎么回事
关于STM32H745I demo板,M7下载正常,M4下载报错?后续进程
使用Cubeprogrammer无法连接、连接G431和一块H750的板子可以连上但是连另外一块H750的板子和F407的板子就直接报错,这个应该如何解决。
楼主您好。请问一下BOOT的程序编译时的起始地址是多少?和以下计算后的地址一样吗?建议这个地址和编译时配置的地址一样就行了。
* SysMemBootJump = (void ()(void)) (((uint32_t ) (BootAddr + 4)));
[md]您好,bootloader地址和设置的跳转地址是一样的,断点之后重启可以正常重启,但是就是跳转不了。
我看了一下,我写的APP跳转也是这样写的。我一般是直接软件复位进行进入boot的操作。楼主需要从应用程序跳转到boot程序时,需要先关闭所有的中断后,再跳转。另外,是否可以加一些打印看一下是否跳转到boot了,但是由于某些中断开启后,导致找不到中断入口,进入硬件错误中断了。