你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】stm32+lwip:网页服务器测试

[复制链接]
STMCU小助手 发布时间:2022-1-22 18:58
一、准备
ST例程文档关于lwip的介绍如下:
1358342-20180908134248433-1691113005.png
由此可以看到LWIP有三种API,在本文中,使用Raw API。
HTTP协议是建立在TCP协议之上的一种应用,本文用到的TCP Raw API如下:
1358342-20180908141416484-854611288.png

二、移植官方例程
官方例程在stsw-stm32070\STM32F4x7_ETH_LwIP_V1.1.1\Project\Standalone\httpserver目录下,拷贝以下文件到我们工程:
1358342-20180908144711829-559064597.png
fs.c/h是文件的操作
fs.data.c/h存放了网页的数据
httpd.c/h是网页服务器
httpd_cgi_ssi.c 是cgi和ssi的处理
将httpd_cgi_ssi.c中关于硬件操作的代码删掉,或者找到宏LWIP_HTTPD_SSI和宏LWIP_HTTPD_CGI将SSI和CGI功能禁掉,然后在主程序中增加httpd_init()。
上电运行后可以看到ST官方例子的网页:
1358342-20180908144730414-639602941.png
三、打印网页接收数据
在httpd.c中的http_recv函数中增加以下黄色部分代码:
1358342-20180908144758307-491609248.png
然后当在浏览器打开192.168.2.8时,串口输出以下数据:
  1. get msg from 192:168:2:194 port:55329:
  2. GET / HTTP/1.1
  3. Host: 192.168.2.8
  4. Connection: keep-alive
  5. Upgrade-Insecure-Requests: 1
  6. User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36
  7. Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
  8. Accept-Encoding: gzip, deflate
  9. Accept-Language: zh-CN,zh;q=0.9


  10. get msg from 192:168:2:194 port:55330:
  11. GET /STM32F4x7_files/ST.gif HTTP/1.1
  12. Host: 192.168.2.8
  13. Connection: keep-alive
  14. User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36
  15. Accept: image/webp,image/apng,image/*,*/*;q=0.8
  16. Referer: http://192.168.2.8/
  17. Accept-Encoding: gzip, deflate
  18. Accept-Language: zh-CN,zh;q=0.9


  19. get msg from 192:168:2:194 port:55331:
  20. GET /STM32F4x7_files/stm32.jpg HTTP/1.1
  21. Host: 192.168.2.8
  22. Connection: keep-alive
  23. User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36
  24. Accept: image/webp,image/apng,image/*,*/*;q=0.8
  25. Referer: http://192.168.2.8/
  26. Accept-Encoding: gzip, deflate
  27. Accept-Language: zh-CN,zh;q=0.9


  28. get msg from 192:168:2:194 port:55332:
  29. GET /inchtml-pages-stm32_connectivity_files/pixel.gif HTTP/1.1
  30. Host: 192.168.2.8
  31. Connection: keep-alive
  32. User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36
  33. Accept: image/webp,image/apng,image/*,*/*;q=0.8
  34. Referer: http://192.168.2.8/
  35. Accept-Encoding: gzip, deflate
  36. Accept-Language: zh-CN,zh;q=0.9


  37. get msg from 192:168:2:194 port:55334:
  38. GET /favicon.ico HTTP/1.1
  39. Host: 192.168.2.8
  40. Connection: keep-alive
  41. User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36
  42. Accept: image/webp,image/apng,image/*,*/*;q=0.8
  43. Referer: http://192.168.2.8/
  44. Accept-Encoding: gzip, deflate
  45. Accept-Language: zh-CN,zh;q=0.9
复制代码

由此可以看出,打开了网页服务器地址,会给网页服务器发送GET / HTTP/1.1命令,网页服务器会根据这个命令找到index.html,然后给浏览器返回网页数据。由于网页数据中又包含了一些照片资源,因此浏览器再给网页服务器发送
  1. GET /STM32F4x7_files/ST.gif HTTP/1.1
  2. GET /STM32F4x7_files/stm32.jpg HTTP/1.1
  3. GET /inchtml-pages-stm32_connectivity_files/pixel.gif HTTP/1.1
  4. GET /favicon.ico HTTP/1.1
复制代码

以获取照片资源。

四、最后
本文测试了网页服务器功能,能正常打开预置网页,后续开发嵌入式网页可以根据ST例程进行修改,同时加上了SSI和CGI可以做到一些简单的交互。

收藏 评论0 发布时间:2022-1-22 18:58

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版