|
本帖最后由 weizhongc 于 2019-2-24 14:37 编辑
最近在网上看到10行代码的IAP,自己觉得确实挺不错的,代码如下
- #define ISP_ADDR 0x1FFFF000
- void IspProgramRun(void)
- {
- u32 IspSpInitVal;
- u32 IspJumpAddr;
- void (*pIspFun)(void);
- IspSpInitVal = *(u32 *)ISP_ADDR;
- IspJumpAddr = *(u32 *)(ISP_ADDR + 4);
- __set_MSP(IspSpInitVal);
- pIspFun = (void (*)(void))IspJumpAddr;
- (*pIspFun) ();
- }
复制代码
- int main(void)
- {
- delay_init();
- LED_Init();
- KEY_Init();
- uart_init(115200);
- if(KEY0==0)
- IspProgramRun();
- while(1)
- {
- LED0=1;
- delay_ms(300);
- LED0=0;
- delay_ms(300);
- }
- }
复制代码
实验3 按键输入.rar
(290.15 KB, 下载次数: 7)
其实就是开机后通过软件跳转到ISP 的地址进行运行,这样的话就不用通过boot引脚的进入ISP了。
但是通过此方法有个弊端
1 就是如果你的iap 程序如果是单独一个程序的时候,有可能在通过ISP下载的时候自己给擦除掉了。
2 如果你直接把程序放在自己的程序中的时候,有可能你更新出错或者更新的程序不运行的时候也就无法再次通过软件进入ISP了。
个人感觉这块程序只能针对测试的时候使用吧。
|
|