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就能够了,而后放到云端
升级篇就先到这里.....学海无涯.