前文我们介绍了一个简单的web应用:通过web显示当前的温度和湿度,程序非常简单。本文介绍的这个web应用则相对要综合一些,这个应用的功能如下:
1、可以读取当前温湿度
2、可以通过web控制继电器实现远程控制开关的功能
3、能够设置网络参数,并将网络参数保存到EEPROM
4、通过web对Rainbow进行软件复位
5、使用了独立看门狗,确保应用永远不会“死掉”
在软件包的“Projects\Web-Complex”文件夹包含了本文的完整工程,可以直接编译、烧写和调试。由于程序量相对之前介绍的应用要多一些,所以就不一一介绍了,这个应用实际上是综合了之前介绍的各个功能模块基础上形成的,程序其实也比较浅显易懂,程序量(不含注释)大约200行左右,请大家自己分析。

如果点击“重启系统”,MCU将会复位。
在这个应用中,为了保证系统永远不会死机,我们采用了独立看门狗,使用看门狗非常简单,我们看看程序片段:
int main()
{
setup();
//开启看门狗,10秒之内必须喂狗
IWDG_Configuration(10000);
while(1)
{
server.processConnection();
//喂狗,防止复位
IWDG_ReloadCounter();
if(reboot) softReset();
}
}
程序首先调用IWDG_Configuration(10000);设置喂狗时间,这里设置的是10s,也就是说10秒之内如果没有喂狗的话,MCU将会自动复位;然后在每个循环调用IWDG_ReloadCounter()来进行喂狗。程序正常运行期间每次都能保证在10s之内喂狗,如果出现故障,无法在10s之内喂狗,MCU将会自动复位。