一,STM32CUBEMX配置(使用的是6.4.0版本)
前提是在配置好LWIP的情况下(能ping通你的开发板),使能HTTPD功能。
然后是使能LWIP_HTTPD_CGI,
使能:LWIP_HTTPD_SUPPORT_POST(),
使能 :HTTPD_USE_CUSTOM_FSDATA。
会发现fs.c这个文件的#include HTTPD_FSDATA_FILE,这一句编译报错,解决办法:1)
在KEIL中lwipopts.h中找到HTTPD_USE_CUSTOM_FSDATA宏定义开关,关闭即可。
2)../Third Party/Lwip/src/apps/http 路径下添加 fsdata_custom.c文件。这个文件就是自己用来实现网页的文件。如果找不到就把;里面的fsdata.c文件复制一份重命名为fsdata_custom.c
二,流程分析
1) httpd_init(); web服务器初始化函数
功能:为搭建web服务器做准备,包括申请网络结构体、设置80端口号、监听数据、设置接收数据回调函数
2) http_accept(); 接收数据回调函数
功能:函数中主要配置一些回调函数,比如接收,轮询,发送
3) http_recv(); 接收数据处理函数
功能: 函数主要工作将接收到的数据放入 http_parse_request() 函数进行解析,然后把网页数据发送出去
4) http_parse_request(); 接收数据解析函数
功能:解析网页发送过来的数据。根据收到的url 找到要出重要的字符串,
5)读取对应网页数据函数 http_find_file();
功能:根据字符串找到网页要发送的内容(第一次网页发过来的数据是'/' ,)再默认的网页文件中寻找这个字符串,找到后返回找到的名字 (file_name = httpd_default_filenames[loop].name;)
6)fs_open(); 打开某个文件
功能:根据找到的名字在fsdata.c中找到对应的网页信息,返回打开文件的状态(成功或者失败)
如果没有找到文件,判断是否有参数,有参数则找到
如果定义了LWIP_HTTPD_CGI 则执行相关的操作。
7)http_init_file(); 将网页文件数据赋值给http_state结构体,之后发送出去
功能:使用要发送的文件初始化http连接
三,部分功能实现(待完善)
四,效果展示文章来源:https://www.toymoban.com/news/detail-403597.html
文章来源地址https://www.toymoban.com/news/detail-403597.html
到了这里,关于关于LWIP用法之HTTPD:基于STM32F4搭建web服务器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!