在gd32e230c上进行bootloader跳转到应用程序时,发现加入__set_MSP( * ( __IO uint32_t * ) App_Addr );这句初始堆栈地址时,就无法跳转了,去掉这句话就可以正常跳转到app,实在想不明白怎么回事。
void IAP_ExecuteApp (uint32_t App_Addr)
{
uint32_t JumpAddress;
usart_disable(USART0);
JumpAddress = * ( __IO uint32_t * )(App_Addr + 4);//用户代码区第二个字为程序开始地址(复位地址)
// __set_MSP( * ( __IO uint32_t * ) App_Addr ); //初始化APP堆栈指针(用户代码区的第一个字用于存放栈顶地址)
(*( void (*)( ) )JumpAddress) (); //跳转到APP.
}