前文我們介紹了一個(gè)簡單的web應(yīng)用:通過web顯示當(dāng)前的溫度和濕度,程序非常簡單。本文介紹的這個(gè)web應(yīng)用則相對要綜合一些,這個(gè)應(yīng)用的功能如下:
1、可以讀取當(dāng)前溫濕度
2、可以通過web控制繼電器實(shí)現(xiàn)遠(yuǎn)程控制開關(guān)的功能
3、能夠設(shè)置網(wǎng)絡(luò)參數(shù),并將網(wǎng)絡(luò)參數(shù)保存到EEPROM
4、通過web對Rainbow進(jìn)行軟件復(fù)位
5、使用了獨(dú)立看門狗,確保應(yīng)用永遠(yuǎn)不會“死掉”
在軟件包的“Projects\Web-Complex”文件夾包含了本文的完整工程,可以直接編譯、燒寫和調(diào)試。由于程序量相對之前介紹的應(yīng)用要多一些,所以就不一一介紹了,這個(gè)應(yīng)用實(shí)際上是綜合了之前介紹的各個(gè)功能模塊基礎(chǔ)上形成的,程序其實(shí)也比較淺顯易懂,程序量(不含注釋)大約200行左右,請大家自己分析。


如果點(diǎn)擊“重啟系統(tǒng)”,MCU將會復(fù)位。
在這個(gè)應(yīng)用中,為了保證系統(tǒng)永遠(yuǎn)不會死機(jī),我們采用了獨(dú)立看門狗,使用看門狗非常簡單,我們看看程序片段:
int main()
{
setup();
//開啟看門狗,10秒之內(nèi)必須喂狗
IWDG_Configuration(10000);
while(1)
{
server.processConnection();
//喂狗,防止復(fù)位
IWDG_ReloadCounter();
if(reboot) softReset();
}
}
程序首先調(diào)用IWDG_Configuration(10000);設(shè)置喂狗時(shí)間,這里設(shè)置的是10s,也就是說10秒之內(nèi)如果沒有喂狗的話,MCU將會自動復(fù)位;然后在每個(gè)循環(huán)調(diào)用IWDG_ReloadCounter()來進(jìn)行喂狗。程序正常運(yùn)行期間每次都能保證在10s之內(nèi)喂狗,如果出現(xiàn)故障,無法在10s之內(nèi)喂狗,MCU將會自動復(fù)位。