IAP是个好东西,
开发板
上讲的很细很明白,在实际用途上来说,串口IAP过程需要校验。ST官方给的例子很好用,超级终端Ymodem协议发送,带CRC校验。
1,Bootloader介绍,修改的官方IAP程序。官方的程序使用的它自己的开发板,要用按键进入Bootloader然后选择是否进入IAP等等选项,我改成启动时串口是否收到指定字符来判断是否进入IAP的Bootloader(打开超级终端,连上自己开发板,键盘一直点字符‘a’,然后重启开发板就进入Bootloader)。
2,原ST官方给的Bootloader程序中在跳转到APP程序后没有给关掉中断,我在调试 STM32F103RB(20kRAM 128kROM)中发现总是不能正常运行App程序,困扰了我很长时间,后来在Bootloader加上了关闭中断,后解决了这个问题,同时也隐藏了另一个问题3。
3,我换了CPU改成STM32F103RD(60kRAM)发现APP程序不能进入中断,我找了好久,最终发现是中断关闭没有打开,而STM32F103RB片子上却没有这个问题。。。我在代码上做如下如理,解决了这个问题,终于解决了。。。
int main(void)
{
SystemInit();
//系统时钟等初始化
NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x5000);
__enable_irq();//开启总中断
delay_init(72);
//延时初始化
NVIC_Configuration(); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
。。。。。
}
App程序偏移地址 0x5000
设置如下
1,Bootloader介绍,修改的官方IAP程序。官方的程序使用的它自己的开发板,要用按键进入Bootloader然后选择是否进入IAP等等选项,我改成启动时串口是否收到指定字符来判断是否进入IAP的Bootloader(打开超级终端,连上自己开发板,键盘一直点字符‘a’,然后重启开发板就进入Bootloader)。
![](https://i-blog.csdnimg.cn/blog_migrate/ed58cfc60328dc5d48a470ded78a2acf.png)
2,原ST官方给的Bootloader程序中在跳转到APP程序后没有给关掉中断,我在调试 STM32F103RB(20kRAM 128kROM)中发现总是不能正常运行App程序,困扰了我很长时间,后来在Bootloader加上了关闭中断,后解决了这个问题,同时也隐藏了另一个问题3。
3,我换了CPU改成STM32F103RD(60kRAM)发现APP程序不能进入中断,我找了好久,最终发现是中断关闭没有打开,而STM32F103RB片子上却没有这个问题。。。我在代码上做如下如理,解决了这个问题,终于解决了。。。
}
App程序偏移地址 0x5000
设置如下
![](https://i-blog.csdnimg.cn/blog_migrate/822076063868a8aed75cb3e934055cfd.png)