一,STM32CUBEMX配置(使用的是6.4.0版本)
前提是在配置好LWIP的情況下(能ping通你的開發(fā)板),使能HTTPD功能。
然后是使能LWIP_HTTPD_CGI,
使能:LWIP_HTTPD_SUPPORT_POST(),
使能 :HTTPD_USE_CUSTOM_FSDATA。
會發(fā)現(xiàn)fs.c這個(gè)文件的#include HTTPD_FSDATA_FILE,這一句編譯報(bào)錯(cuò),解決辦法:1)
在KEIL中l(wèi)wipopts.h中找到HTTPD_USE_CUSTOM_FSDATA宏定義開關(guān),關(guān)閉即可。
2)../Third Party/Lwip/src/apps/http 路徑下添加 fsdata_custom.c文件。這個(gè)文件就是自己用來實(shí)現(xiàn)網(wǎng)頁的文件。如果找不到就把;里面的fsdata.c文件復(fù)制一份重命名為fsdata_custom.c
?
二,流程分析
1) httpd_init();? web服務(wù)器初始化函數(shù)
功能:為搭建web服務(wù)器做準(zhǔn)備,包括申請網(wǎng)絡(luò)結(jié)構(gòu)體、設(shè)置80端口號、監(jiān)聽數(shù)據(jù)、設(shè)置接收數(shù)據(jù)回調(diào)函數(shù)
2) http_accept();? ?接收數(shù)據(jù)回調(diào)函數(shù)
功能:函數(shù)中主要配置一些回調(diào)函數(shù),比如接收,輪詢,發(fā)送
3) http_recv();? 接收數(shù)據(jù)處理函數(shù)
功能:?函數(shù)主要工作將接收到的數(shù)據(jù)放入 http_parse_request() 函數(shù)進(jìn)行解析,然后把網(wǎng)頁數(shù)據(jù)發(fā)送出去
4) http_parse_request();? 接收數(shù)據(jù)解析函數(shù)
功能:解析網(wǎng)頁發(fā)送過來的數(shù)據(jù)。根據(jù)收到的url 找到要出重要的字符串,
5)讀取對應(yīng)網(wǎng)頁數(shù)據(jù)函數(shù) http_find_file();
功能:根據(jù)字符串找到網(wǎng)頁要發(fā)送的內(nèi)容(第一次網(wǎng)頁發(fā)過來的數(shù)據(jù)是'/' ,)再默認(rèn)的網(wǎng)頁文件中尋找這個(gè)字符串,找到后返回找到的名字 (file_name = httpd_default_filenames[loop].name;)
6)fs_open(); 打開某個(gè)文件
功能:根據(jù)找到的名字在fsdata.c中找到對應(yīng)的網(wǎng)頁信息,返回打開文件的狀態(tài)(成功或者失敗)
如果沒有找到文件,判斷是否有參數(shù),有參數(shù)則找到
如果定義了LWIP_HTTPD_CGI 則執(zhí)行相關(guān)的操作。
7)http_init_file();? 將網(wǎng)頁文件數(shù)據(jù)賦值給http_state結(jié)構(gòu)體,之后發(fā)送出去
功能:使用要發(fā)送的文件初始化http連接
三,部分功能實(shí)現(xiàn)(待完善)
四,效果展示文章來源:http://www.zghlxwxcb.cn/news/detail-403597.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-403597.html
到了這里,關(guān)于關(guān)于LWIP用法之HTTPD:基于STM32F4搭建web服務(wù)器的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!