專注電子技術(shù)學(xué)習(xí)與研究
當前位置:單片機教程網(wǎng) >> STM32 >> 瀏覽文章

Web服務(wù)器:一個綜合的web應(yīng)用

作者:白櫟旸   來源:本站原創(chuàng)   點擊數(shù):  更新時間:2014年05月06日   【字體:
    前文我們介紹了一個簡單的web應(yīng)用:通過web顯示當前的溫度和濕度,程序非常簡單。本文介紹的這個web應(yīng)用則相對要綜合一些,這個應(yīng)用的功能如下:
 
    1、可以讀取當前溫濕度
    2、可以通過web控制繼電器實現(xiàn)遠程控制開關(guān)的功能
    3、能夠設(shè)置網(wǎng)絡(luò)參數(shù),并將網(wǎng)絡(luò)參數(shù)保存到EEPROM
    4、通過web對Rainbow進行軟件復(fù)位
    5、使用了獨立看門狗,確保應(yīng)用永遠不會“死掉”
 
    在軟件包的“Projects\Web-Complex”文件夾包含了本文的完整工程,可以直接編譯、燒寫和調(diào)試。由于程序量相對之前介紹的應(yīng)用要多一些,所以就不一一介紹了,這個應(yīng)用實際上是綜合了之前介紹的各個功能模塊基礎(chǔ)上形成的,程序其實也比較淺顯易懂,程序量(不含注釋)大約200行左右,請大家自己分析。
 
    程序編譯無誤后,下載到Rainbow中,然后準備一張TF卡,用讀卡器將Projects\Web-Complex\www這個文件夾拷貝到TF卡的根目錄中,將TF卡插入Rainbow卡座中;如果需要接上繼電器,需要將PA0、PA1和繼電器控制端口進行連接,將PA0對應(yīng)的繼電器接到插座上、PA1對應(yīng)的繼電器和燈泡相連,如果繼電器使用的輸入控制電壓是5V,請注意需要從5V接口取電,準備完畢后按下復(fù)位鍵,然后打開瀏覽器,在瀏覽器的地址欄輸入:http://192.168.1.15,我們將看到下列的界面:
    頁面首先顯示的是當前的溫度和濕度,點擊“刷新”按鈕可以采集最新的溫濕度;頁面頂部是功能區(qū),可以在幾個功能之間進行切換。點擊“開關(guān)控制”,將進入下列界面:

    我們可以點擊相應(yīng)的按鈕進行開關(guān)燈和開關(guān)插座,如圖所示,此時LED1亮了,如果此時和PA0連接有繼電器和插座,那么插座將會通電。點擊“網(wǎng)絡(luò)設(shè)置”,將進入下列界面:

    在這個界面中,我們可以選擇使用自動獲取網(wǎng)絡(luò)配置或者手動指定網(wǎng)絡(luò)參數(shù),輸入相應(yīng)信息后點“保存配置”按鈕后,信息將會保存到EEPROM。
 
    如果點擊“重啟系統(tǒng)”,MCU將會復(fù)位。
 
    在這個應(yīng)用中,為了保證系統(tǒng)永遠不會死機,我們采用了獨立看門狗,使用看門狗非常簡單,我們看看程序片段:
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è)置的是10s,也就是說10秒之內(nèi)如果沒有喂狗的話,MCU將會自動復(fù)位;然后在每個循環(huán)調(diào)用IWDG_ReloadCounter()來進行喂狗。程序正常運行期間每次都能保證在10s之內(nèi)喂狗,如果出現(xiàn)故障,無法在10s之內(nèi)喂狗,MCU將會自動復(fù)位。

 

關(guān)閉窗口

相關(guān)文章