STM32F103 串口-IAP程序升级

本文介绍了STM32F103如何通过串口进行IAP程序升级,适用于产品装配完成后不便引出下载口或需要远程更新程序的场景。内容包括设置中断向量表偏移寄存器、主堆栈栈顶地址,以及在keil5中生成BIN文件的步骤,旨在帮助读者理解并实现串口IAP。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

STM32F103 串口-IAP程序升级
通常情况下我们给STM32系列的单片机烧录程序文件的时候,使用SWD、J-link或者通过设置BOOT引脚后,使用串口进行程序下载,这样的方式直接一次性将程序文件下载到单片机的flash中,比较适合绝大部分的应用。但是有些应用中产品装配完成后,下载口不便引出的情况下,或者是某些设备需要具有远程更新程序情况下,使用串口IAP的方式将会更加便捷。

一般我们常见的51单片机内部的flash空间,只能使用下载器进行烧录程序。芯片自身无法擦写内部flash空间。这样的情况下,如果我们后期需要升级芯片中的程序时,只能到现场使用下载器重新烧录程序,这样比较繁琐。但是STM32单片机内部的flash可以在程序中让单片机自身去擦写编程,同时官方也提供了相应的操作函数固件库。这样就可以实现单片机程序的远程升级,通过芯片外设的某种通信接口(一般常用串口),将程序文件发送给芯片,让芯片自身把程序文件写入内部flash,实现程序的远程升级操作。如果要实现让单片机自身去升级程序,就必须要将内部flash空间进行划分,分不同的区域写入不同工程的程序代码,才能实现该功能。

一般情况下,我们将单片机的内部flash空间划分为两大区域,为了方便理解,我们叫做bootloader区域和app区域(这里的bootloader和app为自定义名称,也可叫做其他名称)。分为两大区域的原因是,我们要给一块芯片(单片机)写入两个不同的工程文件,这个两个工程分别是“程序升级工程(bootloader)”和“应用程序工程(app)”。两个工程的区别是:

“程序升级工程”存放在flash的bootloader区域。它的作用:接收新版本的程序文件,将收到的文件写入内部flash的app区域中。这个工程的任务比较单一,所以它只占用较小的一部分flash空间”。

“应用程序工程”存放在flash的app区域。它的作用:执行真正的功能操作。如数据采集、执行一些运算等操作。也是单片机实际发挥作用的程序。升级程序的方式是,可以灵活应用,主要看开发人员的编程思路,在这里我们使用上电检测的方式进行程序的更新。

单片机上电后,首先在bootloader区域运行程序升级函数,检测是否有新版本的程序需要升级,如果需要升级时,就将接收的新版本程序数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值