初级会员
- 积分
- 146
- 金钱
- 146
- 注册时间
- 2012-7-27
- 在线时间
- 1 小时
|
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
设置如下
|
|