http://www.javashuo.com/article/p-qrkdgsiu-cv.htmlhtml
爲了讓你們會用我寫的程序,並且敢用,因此我詳細介紹一下個人單片機程序流程服務器
這裏只說明穩定精簡版的STM32程序,由於全部的都是在此基礎上增長的.網絡
很基礎的東西自行修煉:函數
空閒接收數據: http://www.cnblogs.com/yangfengwu/p/8912072.html測試
環形隊列: http://www.javashuo.com/article/p-nwtjwudm-dc.html spa
單片機IAP: http://www.javashuo.com/article/p-dlcvocfk-gc.html3d
1-2節服務器: https://www.cnblogs.com/yangfengwu/category/1383497.html htm
以這一節爲例:我只是感受這一節應該通用性比較強,AT指令版控制升級,並且回覆的數據須要剔除網絡模塊自身增長的數據blog
http://www.javashuo.com/article/p-uprjcmls-hk.html隊列
注:
程序啓動先檢查上次更新的狀態:
上次剛寫完用戶程序;寫入數據頭地址不對;數據接收有誤;用戶程序沒運行起來
關於那個0x04:
更新完成是0x01,而後寫入0x04,更新完成會執行咱更新的用戶程序,咱用戶程序裏面再把這個標誌修改成0x00
若是執行了
到下面就會進入
本身的模塊已經連接上TCP了,如今就是發http協議,下載數據
而後根據http獲取的雲端版本號,判斷是否是須要升級
而後看串口接收:
我寫的串口接收就是肯定接收到HTTP的頭數據,同時解析出來HTTP發過來的數據個數
而後判斷若是 Status == 2,下次的數據就寫入環形隊列
若是本身的模塊是http發過來什麼就打印什麼,直接能夠
若是模塊自行添加了數據就須要剔除(只要保證往環形隊列裏面寫的是用戶程序就能夠)
在往環形隊列裏面寫的時候,主函數裏面同時讀出來往Flash裏面寫
寫完,修改寫的狀態,復位重啓
其實須要用戶修改的只是
還有一點 ,64K到256K(不包括)用此程序沒有問題,,256K及其以上的還沒測試,正在作一塊STM32F103RET6的板子,512KB Flash 將用這塊板子測試
我用的64K的
能夠自行更改,
我爲了你們方便修改用戶程序
你們修改完,IAP程序會打印一下兩個用戶程序的配置
而後配置下
只看一下用戶程序1
用戶程序生成BIN就能夠了,而後放到雲端
升級篇就先到這裏.....學海無涯.