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

【经验分享】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
4 v0 h1 V  v* ~( Z! s
二、移植官方例程
官方例程在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:
    . W  d% J: P7 D$ t% t0 ^( I' H
  2. GET / HTTP/1.1
    3 `/ s- P% n1 m
  3. Host: 192.168.2.86 }4 A1 Y; h& m2 v, h# V
  4. Connection: keep-alive
    : [" h; \3 F6 }+ i! d9 c: S7 k& \/ T
  5. Upgrade-Insecure-Requests: 17 g% C. ]+ _0 j- A3 U) G) ?
  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; R* @+ {3 k7 {4 n2 h$ S9 |5 V
  7. Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
    4 d3 o  z; U6 C  k- D
  8. Accept-Encoding: gzip, deflate
    , g% \4 a! k! z
  9. Accept-Language: zh-CN,zh;q=0.9- W5 ^) ?1 i* ~7 o  G- f3 i

  10. + @9 h( P; R4 t( B1 ^( Z( j

  11. 0 D2 l  o4 [( b) V1 z4 _
  12. get msg from 192:168:2:194 port:55330:9 q9 \% o' S2 V3 p1 E
  13. GET /STM32F4x7_files/ST.gif HTTP/1.12 E: ?! s. c# c
  14. Host: 192.168.2.8& n' y3 B$ j" G# ~0 D" D7 j& j
  15. Connection: keep-alive
    , Q% y+ J9 ?1 D
  16. User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36
    4 N% \% f! \5 a1 t9 V: L3 J
  17. Accept: image/webp,image/apng,image/*,*/*;q=0.8
    ) E! d% F  _; U- I0 K" L+ m
  18. Referer: http://192.168.2.8// Q! Y' |+ M: K' `/ X5 R1 ]3 U
  19. Accept-Encoding: gzip, deflate
    ) u% u# D  D6 g0 J9 J1 h4 g. T
  20. Accept-Language: zh-CN,zh;q=0.9
    % u9 V& |& I: K- t$ Y& g8 r3 F
  21. 7 t1 S; z7 J# N
  22. 2 s6 k! Y; n$ Y% e3 r& h$ C- B
  23. get msg from 192:168:2:194 port:55331:
    * [$ B2 U, ^5 {: E7 G+ k
  24. GET /STM32F4x7_files/stm32.jpg HTTP/1.1- W) c* C0 E/ E' Y1 a+ H1 C
  25. Host: 192.168.2.8' O6 T4 _4 `0 H3 a
  26. Connection: keep-alive
    5 U2 a7 \' A" ^6 f. T$ b8 w
  27. User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36
    ) x7 G2 B- N9 l0 w, Y7 p
  28. Accept: image/webp,image/apng,image/*,*/*;q=0.8$ |6 e( e3 [1 ]! J" h; n9 ?3 @* m+ W& g
  29. Referer: http://192.168.2.8/5 p& q: U  F- I7 S. C+ `
  30. Accept-Encoding: gzip, deflate
    7 e& `4 l" {4 Y6 G
  31. Accept-Language: zh-CN,zh;q=0.9
    0 p& L7 ?7 G" Q$ U

  32. 3 a+ [/ f: d9 U" {4 r* @% X4 S
  33. * Z0 }9 h# j# W& Y. F0 G
  34. get msg from 192:168:2:194 port:55332:" j  Q) o# I3 t$ j8 i, \. {1 m( h
  35. GET /inchtml-pages-stm32_connectivity_files/pixel.gif HTTP/1.1
    ! `7 ]6 {" m1 F5 W$ ?9 {0 F& F) H
  36. Host: 192.168.2.8
    ( g6 x  g- E4 `3 y8 k4 A
  37. Connection: keep-alive1 ]3 f+ p; n9 e  K% I  b
  38. User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.368 u, E8 S3 B! L7 K1 W
  39. Accept: image/webp,image/apng,image/*,*/*;q=0.8
    3 S% }3 w( A( n2 A3 K$ u: ]: ~
  40. Referer: http://192.168.2.8/
    6 q" p6 |" R0 Q: F
  41. Accept-Encoding: gzip, deflate0 ]. e$ L8 W" A4 A9 p8 a6 H6 R0 b
  42. Accept-Language: zh-CN,zh;q=0.9* o* ^5 {) w1 c9 h
  43. 7 {" \3 L) r) A2 C8 a( L0 f

  44. . Q9 Q% h( p- K* A* E2 c1 Z
  45. get msg from 192:168:2:194 port:55334:1 D6 i" M9 t" h8 C5 R3 V/ O$ g3 A
  46. GET /favicon.ico HTTP/1.1
    2 e& H4 X& q$ f# b3 L) t1 z7 I4 C1 ~
  47. Host: 192.168.2.8$ F6 a: e0 W4 q2 k, e
  48. Connection: keep-alive/ d: ]; _( c' `: c: v$ }
  49. User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.360 d2 _, @6 a# j  T* s
  50. Accept: image/webp,image/apng,image/*,*/*;q=0.86 `( g! Q' i9 Q2 W1 I: ^' @+ [' t
  51. Referer: http://192.168.2.8/
      p, X6 p9 T" ?! W$ g
  52. Accept-Encoding: gzip, deflate
    $ E0 d% M& g5 c1 _; U) z
  53. Accept-Language: zh-CN,zh;q=0.9
复制代码

/ _4 M" |7 p! ^
由此可以看出,打开了网页服务器地址,会给网页服务器发送GET / HTTP/1.1命令,网页服务器会根据这个命令找到index.html,然后给浏览器返回网页数据。由于网页数据中又包含了一些照片资源,因此浏览器再给网页服务器发送
  1. GET /STM32F4x7_files/ST.gif HTTP/1.1
    , ^8 W# f- O' n- i
  2. GET /STM32F4x7_files/stm32.jpg HTTP/1.1; e: S$ w  o% N- I! @9 r, e  g) m
  3. GET /inchtml-pages-stm32_connectivity_files/pixel.gif HTTP/1.10 j5 B8 l7 u3 A. \: L
  4. GET /favicon.ico HTTP/1.1
复制代码
8 s/ `* |: Y/ C
以获取照片资源。

! g% M8 `$ [6 K! ?% u+ a
四、最后
本文测试了网页服务器功能,能正常打开预置网页,后续开发嵌入式网页可以根据ST例程进行修改,同时加上了SSI和CGI可以做到一些简单的交互。
" ~4 l2 c5 B4 @4 \
收藏 评论0 发布时间:2022-1-22 18:58

举报

0个回答

所属标签

相似分享

官网相关资源

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