IAP 如何实现跳转到用户程序

typedef  void (*pFunction)(void);                               //定义一个函数类型的参数

pFunction Jump_To_Application;                             //函数指针 

   JumpAddress = *(__IO uint32_t*) (FLASH_USER_START_ADDR + 4);
      Jump_To_Application = (pFunction) JumpAddress;
      __set_MSP(*(__IO uint32_t*) FLASH_USER_START_ADDR);                                                        Jump_To_Application();                                                                                                                1.JumpAddress = *(__IO uint32_t*) (ApplicationAddress + 4);                                       JumpAddress代表跳转地址,基于应用程序起始地址偏移4 这个地址就是应用程序的复位地址,你可以理解为程序跳转到了应用程序复位的地址.
2 .Jump_To_Application();                                                                                              Jump_To_Application = (pFunction) JumpAddress; //将跳转地址JumpAddress强制转换pFunction类型,你可以理解为编译器将其编译成一个函数。                                                                         

3.__set_MSP(*(__IO uint32_t*) FLASH_USER_START_ADDR);                                                  这里是将把应用程序起始地址设为栈顶指针

4.Jump_To_Application();                                                                                                            设置PC指针为复位地址,你可以理解为跳转到应用程序的函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值