感觉stm32官方的IAP例程写的太乱了,于是自己写了个串口IAP,希望可以帮助到正在或者即将学习IAP的童鞋们!
用的MCU是stm32f103ze,编译工具室IAR 5.4,仅仅用了USART1,不需要按键来,即仅仅使用了2个管脚,就实现了串口IAP的功能。
大概思路如下:
IAP部分:IAP地址如下
#define StartAddr ((u32)0x08000000)
#define EndAddr ((u32)0x08010000)
IAP 程序部分大概思路:
1.将 通过串口接收的APP文件利用数组先保存下来存储到USART_Buffer中
2.if(USART_RX_BUF[0]==0xAF)// WRITE APP TO FLASH
当串口接收到AF时,将APP文件写入到flash中
3. if (USART_RX_BUF[0]==0xAC)// RUN APP
当串口接收到AC时,开始运行APP文件,不返回!
APP部分:APP地址如下
#define StartAddr ((u32)0x08010000)
#define EndAddr ((u32)0x0807ffff)
将APP的中断向量表定位到 ((u32)0x08010000) ,具体可以参见我上传的程序!
1