
我用之前STM32F103的YModem升级代码,移植到STM32G030后,发现可以跳转,但启动不成功,是否有人碰到同样的问题,帮忙指点迷津,具体如下: 1:BootLoader的Keil C 跳转代码。 /****************************************** 以下为BootLoader跳转代码 **************************************/ void CloseIQHard(void) { LL_GPIO_DeInit(GPIOA); LL_IOP_GRP1_DisableClock(LL_IOP_GRP1_PERIPH_GPIOA); LL_APB2_GRP1_ForceReset(LL_APB2_GRP1_PERIPH_USART1); LL_TIM_DisableIT_UPDATE(TIM3); LL_TIM_DisableCounter(TIM3); //LL_SYSTICK_DisableIT(); __set_PRIMASK(1); __disable_irq(); // 关闭总中断 } void BootloaderJumpToApp( void ) { u32 JumpAddress; CloseIQHard(); if(((*(volatile uint32_t*)FLASH_APP_START_ADDRESS)&0x2FFE0000) == 0x20000000) //检查栈顶地址是否合法. { __set_CONTROL(0); //特权模式 __ASM("CPSID I"); //关中断 JumpAddress = *(volatile uint32_t*)(FLASH_APP_START_ADDRESS+4); //用户代码区第二个字为程序开始地址(复位地址) JumpToApp = (IapFunction)JumpAddress; __set_MSP(*(volatile uint32_t*)FLASH_APP_START_ADDRESS); //初始化APP堆栈指针(用户代码区的第一个字用于存放栈顶地址) JumpToApp(); //跳转到APP. } else Error_Handler(); } BootLoader代码的Keil C设置如下 2: 固件APP的启动部分代码,配置成从内部Flash启动,启动后Flash闪灯。 #define VECT_TAB_OFFSET 0x3000U void SystemInit(void) { /* Configure the Vector Table location add offset address ------------------*/ #ifdef VECT_TAB_SRAM SCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM */ #else SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH */ #endif } int main(void) { __enable_irq(); SystemInit(); LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_SYSCFG); LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_PWR); NVIC_SetPriority(SysTick_IRQn, 2); SystemClock_Config(); //以下省略其它代码 } APP固件的Keil C设置如下 3: 通过ST-Link读取到0x0800300代码和文件的代码一致,如下图 文件的头部、中间、尾部都核对一致。 目前Boot跳转了,但是启动不起来,是不是还有哪个开关没开启,期待高手指点迷津,感谢感谢。 |
KEIL的配置的地范围有沒有忘記,如果没有改的话,生成的代码起始地址还是从头开始的 |
在线仿真,跳到app什么情况 |
STM32CubeProgrammer 安装错误,请帮忙解决,谢谢
关于南宁如何开具餐饮发票-南宁本地宝
STM32CubeMX 配置STM32G070RBT6TR时无法使能PVD中断
STM32G070RBT6TR STM32CubeMX ADC配置后使用的是内部参考电压且零点的读数太大了
测评在哪里发?
Group Study vs. Solo Study: What Works Best?
STM32G070CBT6使用硬件SPI无法读出W25Q128的ID
STM32G0B0CET6的usb的时钟只能用48MHz的晶振来实现吗?
STM32G070RET6,中断优先级配置没有效果
如图:STM32F437的TIM10支持从模式吗?