基于Cortex-M3內(nèi)核處理器的嵌入式Web服務(wù)器設(shè)計
在使用內(nèi)部溫度傳感器時要注意:溫度傳感器在從調(diào)電模式喚醒后到它能以正常水平輸出采樣電壓前有一段建立時間;ADC喚醒后同樣需要一段建立時間,為使延遲最小,ADON位(用于啟動A/D轉(zhuǎn)換)和TSVREFE位(用于將溫度傳感器從調(diào)電模式中喚醒)應(yīng)該同時置位。另外,對溫度傳感器的采樣時間要大于2.2μs。
本文引用地址:http://cafeforensic.com/article/92481.htm接下來是一個無限循環(huán)體,程序開始不斷檢查外部中斷狀態(tài)標志(WInterFlag)和Socket接收數(shù)據(jù)狀態(tài)標志(SockRecvFlag)是否改變,同時開始處理A/D轉(zhuǎn)換的數(shù)據(jù),以保證服務(wù)器在產(chǎn)生網(wǎng)頁時能得到當前的各種數(shù)據(jù)。
一旦W5100的Socket端口有中斷事件產(chǎn)生時,W5100將通過其中斷引腳INT觸發(fā)STM32的外部中斷,使STM32進入外部中斷處理函數(shù)改變WInterFlag,程序接著進入處理W5100中斷事件函數(shù),在此函數(shù)中,STM32通過訪問W5100的中斷寄存器(IR)和端口0中斷寄存器(S0_IR)判斷出W5100的端口0產(chǎn)生何種中斷事件,若Socket接收到數(shù)據(jù),則改變SockRecvFlag。
程序檢測到SockRecvFlag發(fā)生改變,立即進入處理接收數(shù)據(jù)函數(shù)。處理接收數(shù)據(jù)函數(shù)是整個程序的核心,它主要負責收發(fā)數(shù)據(jù)、解析HTTP協(xié)議和響應(yīng)用戶的不同請求。圖5為該過程的程序流程圖。
數(shù)據(jù)處理程序
HTTP協(xié)議是一種請求/響應(yīng)協(xié)議。在基于HTTP的客戶/服務(wù)器數(shù)據(jù)交換時,當HTTP請求產(chǎn)生時,就開始一次HTTP通信。過程如下:瀏覽器提取出URL中的主機后,向DNS發(fā)出請求,解析主機名的IP地址;DNS解析地址并將結(jié)果返回給瀏覽器;瀏覽器向該地址請求建立TCP連接;瀏覽器發(fā)出請求報文;服務(wù)器向瀏覽器發(fā)送響應(yīng)報文,并將指定數(shù)據(jù)發(fā)送給瀏覽器;斷開連接。
根據(jù)HTTP協(xié)議規(guī)定,如果客戶端沒有發(fā)出請求,則服務(wù)器不會自動發(fā)送頁面。因此通過在網(wǎng)頁程序中加入 標記,使瀏覽器在無用戶干預(yù)下周期性地刷新頁面,從而保證用戶及時地獲得遠程現(xiàn)場的信息。
HTTP消息包括一個起始行、零個或多個消息頭域、一個標示頭域結(jié)束的實體行和一個可能存在的消息體。本程序主要解析消息的起始行,而忽略其它內(nèi)容,這種處理思路也符合嵌入式系統(tǒng)硬件對軟件實現(xiàn)的復(fù)雜度要求。請求方法決定了對請求URI所指定的資源進行操作的方式,GET方法讀取URL指定的資源,一般用來向服務(wù)器傳輸少量且透明的數(shù)據(jù),數(shù)據(jù)總量被限制在255個字符以內(nèi),而POST方法可傳輸大量數(shù)據(jù),與HTML的表單特性相配合以實現(xiàn)遠程動態(tài)交互控制。
當連接開始時,客戶端發(fā)送GET方法請求給服務(wù)器,以訪問服務(wù)器網(wǎng)頁,為限定特定用戶訪問,增加數(shù)據(jù)安全性,在網(wǎng)頁中加入基本認證機制。當客戶端請求受基本認證機制保護的網(wǎng)頁時,服務(wù)器即要求用戶認證,服務(wù)器端對用戶的登陸信息按Base64碼解碼,只有認證成功,瀏覽器才能獲得正確的網(wǎng)頁數(shù)據(jù)。正確的控制網(wǎng)頁如圖6所示,若用戶信息有誤,服務(wù)器返回以狀態(tài)碼401為起始行的響應(yīng)消息。
圖5 數(shù)據(jù)處理程序流程圖
評論