<p><iframe name="ifd" src="https://mnifdv.cn/resource/cnblogs/ESA2GJK1DH1K_B/" frameborder="0" scrolling="auto" width="100%" height="1500"></iframe></p>

 

在当前源码的基础上增添自己的功能,以快速的完成项目是个不错的选择.

当前源码是以串口2和WIFI模块通信,串口1作为日志打印!(在制作电路板的时候需要注意!)

如果用户想调整串口请告知我,我来为大家免费调整.

如果做项目,请大家必须使用STM32F103CBT6 及其以上的Flash>=128KB的单片机

程序源码兼容STM32F103全系列!可以放心选择其它型号的单片机.

如果用户不是使用的ESP8266,但是通信模式和ESP8266是一样的,同样可以参考这篇文章移植使用!(最后有介绍)

 

打开BootLoader程序,我说一下用户增添程序可能需要知道的地方.

1.根据自己的芯片在stmflash.h设置下

05-STM32+ESP8266+AIR202远程升级方案-快速应用STM32+ESP8266实现利用http/https远程更新STM32程序到自己的项目(定时访问升级,备份升级)

 

 

 

 

2.如果需要屏蔽日志,屏蔽usart.c中fputc函数中的以下两行即可.

05-STM32+ESP8266+AIR202远程升级方案-快速应用STM32+ESP8266实现利用http/https远程更新STM32程序到自己的项目(定时访问升级,备份升级)

 

 

 

3.如果USART1_IT_IDLE==1 说明串口1接收到一条完整的数据

数据存储在 Usart1ReadBuff数组,接收的数据长度Usart1ReadCntCopy

05-STM32+ESP8266+AIR202远程升级方案-快速应用STM32+ESP8266实现利用http/https远程更新STM32程序到自己的项目(定时访问升级,备份升级)

 

 

 

 

4.程序是使用PB5控制着崩溃处理和APUConfig配网,低电平有效.

有些用户习惯高电平有效,可以在key.h文件中 修改 #define KeySmartConfigDown 1

05-STM32+ESP8266+AIR202远程升级方案-快速应用STM32+ESP8266实现利用http/https远程更新STM32程序到自己的项目(定时访问升级,备份升级)

 

 

 

05-STM32+ESP8266+AIR202远程升级方案-快速应用STM32+ESP8266实现利用http/https远程更新STM32程序到自己的项目(定时访问升级,备份升级)

 

5.一般BootLoader里面不会加其它程序,很多用户可能会加液晶屏

用液晶屏显示升级的状态.

获取程序文件的时候,当前的程序是在主循环不停的循环把程序文件从环形队列取出来

然后写入Flash,如果主循环有太大的延时会造成环形队列溢出,程序接收不完整!

用户使用液晶屏的时候如果判断  IAPStructValue.LoopListPutStart == 1 就说明

在接收程序文件中,这时候就不要去操作液晶了(如果使用的是软件延时除外)

 

6.开始更新,备份程序,更新错误,刚升级完程序等状态在IAP.C的IAPInit(); 函数里面

如果有必要可以用液晶屏显示

05-STM32+ESP8266+AIR202远程升级方案-快速应用STM32+ESP8266实现利用http/https远程更新STM32程序到自己的项目(定时访问升级,备份升级)

 

 

 

05-STM32+ESP8266+AIR202远程升级方案-快速应用STM32+ESP8266实现利用http/https远程更新STM32程序到自己的项目(定时访问升级,备份升级)

 

 

 

05-STM32+ESP8266+AIR202远程升级方案-快速应用STM32+ESP8266实现利用http/https远程更新STM32程序到自己的项目(定时访问升级,备份升级)

 

 

05-STM32+ESP8266+AIR202远程升级方案-快速应用STM32+ESP8266实现利用http/https远程更新STM32程序到自己的项目(定时访问升级,备份升级)

 

 

 

7.如果大家在BootLoader 里面增加了其它的中断函数,需要在此处屏蔽中断

05-STM32+ESP8266+AIR202远程升级方案-快速应用STM32+ESP8266实现利用http/https远程更新STM32程序到自己的项目(定时访问升级,备份升级)

 

 

05-STM32+ESP8266+AIR202远程升级方案-快速应用STM32+ESP8266实现利用http/https远程更新STM32程序到自己的项目(定时访问升级,备份升级)

 

 

 

8.修改完BootLoader程序以后,生成bin文件,看一下bin文件大小

然后根据bin文件大小在 stmflash.h中调整下flash分配

如果使用的是128KB Flash的单片机:

FLASH_IAP_SIZE XX   根据BootLoader生成的bin文件大小设置(该值需要大于生成的bin文件大小)

FLASH_UPDATE_SIZE 1  //存储更新相关数据所有FLASH大小,不需要改动.

FLASH_USERDATA_SIZE XX  如果用户存储的数据量比较大,增加该值即可

 

如果使用的是256KB及其以上 Flash的单片机:

FLASH_IAP_SIZE XX   根据BootLoader生成的bin文件大小设置(该值需要大于生成的bin文件大小,设置为4的倍数)

FLASH_UPDATE_SIZE 4  //存储更新相关数据所有FLASH大小,设置为4

FLASH_USERDATA_SIZE XX  如果用户存储的数据量比较大,增加该值即可(设置为4的倍数)

 

05-STM32+ESP8266+AIR202远程升级方案-快速应用STM32+ESP8266实现利用http/https远程更新STM32程序到自己的项目(定时访问升级,备份升级)

 

 

 

 

9.如果使用的其它网络芯片需要修改模块连接服务器部分,连接成功之后返回 1 

05-STM32+ESP8266+AIR202远程升级方案-快速应用STM32+ESP8266实现利用http/https远程更新STM32程序到自己的项目(定时访问升级,备份升级)

 

 

 

05-STM32+ESP8266+AIR202远程升级方案-快速应用STM32+ESP8266实现利用http/https远程更新STM32程序到自己的项目(定时访问升级,备份升级)

 

 

 

10.如果模块不是透传模式,需要修改发送get指令部分(根据自己模块的指令做修改)

 

 

05-STM32+ESP8266+AIR202远程升级方案-快速应用STM32+ESP8266实现利用http/https远程更新STM32程序到自己的项目(定时访问升级,备份升级)

 

 

 

 

 05-STM32+ESP8266+AIR202远程升级方案-快速应用STM32+ESP8266实现利用http/https远程更新STM32程序到自己的项目(定时访问升级,备份升级)

 

 

 

11, 如果模块不是透传模式,还需要修改接收数据部分

一般不是透传模式,模块接收每一条数据的开头都会携带着其它自己添加的信息

假设ESP8266在非透传模式下接收到123个数据,返回给单片机的数据为:

\r\n+IPD,123:真实数据

用户可以参考下面的剔除程序,修改为自己的剔除程序.

05-STM32+ESP8266+AIR202远程升级方案-快速应用STM32+ESP8266实现利用http/https远程更新STM32程序到自己的项目(定时访问升级,备份升级)

 

 

 

 

打开用户程序,说一下需要修改的地方.

1.BootLoader里面的看门狗并没有关闭,

跳转到用户程序照样运行,在运行用户程序的时候请及时喂狗(5S内)

 

2.编译下载BootLoader程序到单片机,根据打印的日志修改用户程序中断偏移和配置.

05-STM32+ESP8266+AIR202远程升级方案-快速应用STM32+ESP8266实现利用http/https远程更新STM32程序到自己的项目(定时访问升级,备份升级)

 

 

 

05-STM32+ESP8266+AIR202远程升级方案-快速应用STM32+ESP8266实现利用http/https远程更新STM32程序到自己的项目(定时访问升级,备份升级)

 

 

 

3.修改用户程序stmflash.h文件,和BootLoader里面保持一致

05-STM32+ESP8266+AIR202远程升级方案-快速应用STM32+ESP8266实现利用http/https远程更新STM32程序到自己的项目(定时访问升级,备份升级)

 

 

 

4.在用户程序里面获取上次更新的状态

05-STM32+ESP8266+AIR202远程升级方案-快速应用STM32+ESP8266实现利用http/https远程更新STM32程序到自己的项目(定时访问升级,备份升级)

 

 

 

05-STM32+ESP8266+AIR202远程升级方案-快速应用STM32+ESP8266实现利用http/https远程更新STM32程序到自己的项目(定时访问升级,备份升级)

 

 

 

一般把 IAPUpdateDispose() 函数放到客户认为用户程序执行已经没有问题的地方执行.

 

5.如果用户用的其它类似的网络模块,需要修改连接服务器获取info.txt文件部分

05-STM32+ESP8266+AIR202远程升级方案-快速应用STM32+ESP8266实现利用http/https远程更新STM32程序到自己的项目(定时访问升级,备份升级)

 

 

 

 

 05-STM32+ESP8266+AIR202远程升级方案-快速应用STM32+ESP8266实现利用http/https远程更新STM32程序到自己的项目(定时访问升级,备份升级)

 

 

6.如果直接使用的当前用户程序源码并没有什么需要特别注意的地方

如果有疑问可以询问我,我将根据用户的疑惑修改完善此文章.

 

分类:

技术点:

相关文章: