STM32 IAP 串口在线升级源码详解

时间:2024-05-18 13:07:59
本博文基于本人修改的代码进行编写如需代码,
请到[代码下载](https://download.****.net/download/qq_36257571/10695681)自行下载。

详细内容不做过多说明,请到以下网址进行查看,已经介绍的很详细了。
http://www.openedv.com/forum.php?mod=viewthread&tid=276033&highlight=STM32%2BIAP
http://www.21ic.com/app/mcu/201701/700207.htm

下面着重介绍下本人修改源代码部分,下载官方例程,本人使用的是STM32F103C8T6芯片,修改ROM空间大小0x2000,
STM32 IAP 串口在线升级源码详解
修改宏定义
STM32 IAP 串口在线升级源码详解
更改启动文件,更改方法:更改的文件鼠标右键弹出窗口->Options for File ‘statup_stm32f10x_md.s’… ->选中红框里的两项(‘√’第一次选中后为深黑色,再次点击为浅灰色,浅灰色时点击确认,其中的原因我也不太懂,你们可以试试)
STM32 IAP 串口在线升级源码详解
STM32 IAP 串口在线升级源码详解
STM32 IAP 串口在线升级源码详解
修改堆栈地址0x8002000
STM32 IAP 串口在线升级源码详解
至此,BootLoader修改完毕直接下载进去就可以了。

下面修改测试程序,我用STM32CUBEMAX直接配置了一个流水灯程序,修改程序:
主函数添加地址偏移:上面我们设置的地址大小为0x2000,所以地址偏量设置为0x2000
STM32 IAP 串口在线升级源码详解
两种方法:

SCB->VTOR = FLASH_BASE | 0x2000;     
NVIC_SetVectorTable(NVIC_VectTab_FLASH,0x2000);

由于本人在HAL库没有找到对应的函数,所以使用了第一种方法。
接下来修改配置,起始地址设置为0x8002000,大小我就随便设了个,够用又不超出rom范围。
STM32 IAP 串口在线升级源码详解
生成.BIN文件配置,详细说明请参考博文
Keil MDK5生成 .bin文件的简单教程
STM32 IAP 串口在线升级源码详解
编译过后就可以使用SecureCRT软件进行下载了:(安装部分资源包内有详细说明)
STM32 IAP 串口在线升级源码详解
STM32 IAP 串口在线升级源码详解
配置好后点击下一步:芯片复位会接受到如下数据
STM32 IAP 串口在线升级源码详解
按数字键盘1如下:
STM32 IAP 串口在线升级源码详解
进行下载点击Transfer->Send Ymodem->打开下载的.bin文件,下载完成提示如下:
STM32 IAP 串口在线升级源码详解
点击键盘数字3便可运行流水灯程序。官网例程本人研究的还不明白…

第一次写博文,有不足之处还请大家多多指正!