05-STM32+ESP8266+AIR202遠程升級方案-快速應用STM32+ESP8266實現利用http/https遠程更新STM32程序到自己的項目(定時訪問升級,備份升級)


<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設置下

 

 

 

 

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

 

 

 

3.如果USART1_IT_IDLE==1 說明串口1接收到一條完整的數據

數據存儲在 Usart1ReadBuff數組,接收的數據長度Usart1ReadCntCopy

 

 

 

 

4.程序是使用PB5控制着崩潰處理和APUConfig配網,低電平有效.

有些用戶習慣高電平有效,可以在key.h文件中 修改 #define KeySmartConfigDown 1

 

 

 

 

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

用液晶屏顯示升級的狀態.

獲取程序文件的時候,當前的程序是在主循環不停的循環把程序文件從環形隊列取出來

然后寫入Flash,如果主循環有太大的延時會造成環形隊列溢出,程序接收不完整!

用戶使用液晶屏的時候如果判斷  IAPStructValue.LoopListPutStart == 1 就說明

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

 

6.開始更新,備份程序,更新錯誤,剛升級完程序等狀態在IAP.C的IAPInit(); 函數里面

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

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

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的倍數)

 

 

 

 

 

9.如果使用的其它網絡芯片需要修改模塊連接服務器部分,連接成功之后返回 1 

 

 

 

 

 

 

10.如果模塊不是透傳模式,需要修改發送get指令部分(根據自己模塊的指令做修改)

 

 

 

 

 

 

 

 

 

 

11, 如果模塊不是透傳模式,還需要修改接收數據部分

一般不是透傳模式,模塊接收每一條數據的開頭都會攜帶着其它自己添加的信息

假設ESP8266在非透傳模式下接收到123個數據,返回給單片機的數據為:

\r\n+IPD,123:真實數據

用戶可以參考下面的剔除程序,修改為自己的剔除程序.

 

 

 

 

打開用戶程序,說一下需要修改的地方.

1.BootLoader里面的看門狗並沒有關閉,

跳轉到用戶程序照樣運行,在運行用戶程序的時候請及時喂狗(5S內)

 

2.編譯下載BootLoader程序到單片機,根據打印的日志修改用戶程序中斷偏移和配置.

 

 

 

 

 

 

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

 

 

 

4.在用戶程序里面獲取上次更新的狀態

 

 

 

 

 

 

一般把 IAPUpdateDispose() 函數放到客戶認為用戶程序執行已經沒有問題的地方執行.

 

5.如果用戶用的其它類似的網絡模塊,需要修改連接服務器獲取info.txt文件部分

 

 

 

 

 

 

 

6.如果直接使用的當前用戶程序源碼並沒有什么需要特別注意的地方

如果有疑問可以詢問我,我將根據用戶的疑惑修改完善此文章.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM