https://www.cnblogs.com/yangfengwu/p/10891914.html
为了让大家会用我写的程序,而且敢用,所以我详细介绍一下我的单片机程序流程
这里只说明稳定精简版的STM32程序,因为所有的都是在此基础上增加的.
很基础的东西自行修炼:
空闲接收数据: http://www.cnblogs.com/yangfengwu/p/8912072.html
环形队列:https://www.cnblogs.com/yangfengwu/p/6822984.html
单片机IAP:https://www.cnblogs.com/yangfengwu/p/6921832.html
1-2节服务器:https://www.cnblogs.com/yangfengwu/category/1383497.html
以这一节为例:我只是感觉这一节应该通用性比较强,AT指令版控制升级,而且回复的数据需要剔除网络模块自身增加的数据
https://www.cnblogs.com/yangfengwu/p/10888037.html
注:
程序启动先检查上次更新的状态:
上次刚写完用户程序;写入数据头地址不对;数据接收有误;用户程序没运行起来
关于那个0x04:
更新完成是0x01,然后写入0x04,更新完成会执行咱更新的用户程序,咱用户程序里面再把这个标志修改为0x00
如果执行了
到下面就会进入
自己的模块已经链接上TCP了,现在就是发http协议,下载数据
然后根据http获取的云端版本号,判断是不是需要升级
然后看串口接收:
我写的串口接收就是确定接收到HTTP的头数据,同时解析出来HTTP发过来的数据个数
然后判断如果 Status == 2,下次的数据就写入环形队列
如果自己的模块是http发过来什么就打印什么,直接可以
如果模块自行添加了数据就需要剔除(只要保证往环形队列里面写的是用户程序就可以)
在往环形队列里面写的时候,主函数里面同时读出来往Flash里面写
写完,修改写的状态,复位重启
其实需要用户修改的只是
还有一点 ,64K到256K(不包括)用此程序没有问题,,256K及其以上的还没测试,正在做一块STM32F103RET6的板子,512KB Flash 将用这块板子测试
我用的64K的
可以自行更改,
我为了大家方便修改用户程序
大家修改完,IAP程序会打印一下两个用户程序的配置
然后配置下
只看一下用户程序1
用户程序生成BIN就可以了,然后放到云端
升级篇就先到这里.....学海无涯.
网友评论