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

利用stm32+app inventor与esp8266通信

[复制链接]
STMCU小助手 发布时间:2022-10-16 20:19
关于stm32与esp8266之间的通信,在前面的文章中已经介绍得差不多了,本文章主要介绍的是app inventor的制作,然后生成app二维码,最后在手机端下载app,进而实现通过WIFI局域网控制stm32开发板,当然关于stm32与esp8266之间的一些东西也会粗略讲一下。1 r: H. T9 a' _5 }* M! y- @# {4 P
本章所用到的器件如下:
7 s# T; w8 r. x. y: kSTM32F103ZET6最小系统板
2 {# K* Z& A; H. X$ p& \! tESP8266-01S模块  G  d9 j# Q" x* R% p0 u' ^5 t
USB转microUSB数据线2 g! V3 z; Z& _% Q
四根杜邦线& |9 u8 b* m/ N, k; o4 D
8 s* t1 d) w  g& N! W1 J
连接如下:5 O2 E8 s' ?$ C9 l8 Z
32板3.3v----------->ESP8266的3.3v0 J# E; x% r% a; ?, v, [0 r6 C: e
32板GND---------->ESP8266的GND. G' D& a8 \+ x; ]7 {
32板的PA2-------->ESP8266的RX+ h6 u9 y+ S! f5 e6 h
32板的PA3-------->ESP8266的TX
) i9 `& \" @" c0 ^& o" h8 M* [
7 [) M& f; \0 L/ e4 o, c2 Z# z
stm32与esp8266通信  T3 X- s3 U) f
  先附上32程序的主代码:
/ M6 C1 _% t$ W1 [8 L& ?! p
  1. <font face="Tahoma"><font size="3"><font color="#000000">#include "stdio.h"</font></font></font>
    # @# g6 _! _9 i+ k) R
  2. <font face="Tahoma"><font size="3"><font color="#000000">#include "delay.h"</font></font></font># O6 S1 a6 a8 u# r( }' m
  3. <font face="Tahoma"><font size="3"><font color="#000000">#include "led.h"</font></font></font>
    4 T& N. j" m5 K
  4. <font face="Tahoma"><font size="3"><font color="#000000">#include "usart.h"</font></font></font>/ p% C2 @3 k! E# `7 M& X
  5. <font face="Tahoma"><font size="3"><font color="#000000">#include "serial.h"</font></font></font>! C2 F7 }  a7 n( ?
  6. <font face="Tahoma"><font size="3"><font color="#000000">#include "esp8266.h"</font></font></font>) M+ S5 H2 ]" o( X( S: B- `8 l! q* R
  7. <font face="Tahoma"><font size="3"><font color="#000000">
    - [! d+ v) A( Y' B+ B
  8. </font></font></font>0 b# W* w9 |7 |' \1 T
  9. <font face="Tahoma"><font size="3"><font color="#000000">/*        AT指令返回值的结尾没有\r\n这样的回车换行符,</font></font></font>
    ; A$ H3 e0 G# b5 ^
  10. <font face="Tahoma"><font size="3"><font color="#000000"> *        而在串口调试助手中,需要MCU输出\r\n给串口调试助手才能刷新缓冲区把字符显示出来,</font></font></font>* M, Z( e) W/ \
  11. <font face="Tahoma"><font size="3"><font color="#000000"> *        同时这个\r\n还起到回车换行的目的*/</font></font></font>- }) N) _) J2 V& a' q! s
  12. <font face="Tahoma"><font size="3"><font color="#000000"> </font></font></font>( K% y9 t6 m: N6 }
  13. <font face="Tahoma"><font size="3"><font color="#000000">/*        AT指令的结尾处必须是\r\n*/</font></font></font>; ?) i0 V9 k  h/ P% a; m; O
  14. <font face="Tahoma"><font size="3"><font color="#000000">
    & C  G9 Z2 q: F2 V
  15. </font></font></font>
    0 Y' v2 v3 A: H+ _+ x" i% A  \- X
  16. <font face="Tahoma"><font size="3"><font color="#000000">/*        serial.h中的usart1_send_usart2函数用于没有USB转TLL模块的人使用,</font></font></font>& {2 `! z; I% u8 Q$ C
  17. <font face="Tahoma"><font size="3"><font color="#000000"> *        此函数作用是利用串口1发送AT指令给串口2,串口2将AT指令发送给ESP8266,实现对ESP8266的AT指令配置,</font></font></font>
    5 g: a! p$ T9 M
  18. <font face="Tahoma"><font size="3"><font color="#000000"> *        当然,如果你有USB转TTL模块的话,可以直接将ESP8266与USB转TTL模块直连,然后在串口调试助手里面直接配置AT指令*/</font></font></font>/ {' T. G/ R1 u) B4 y5 T
  19. <font face="Tahoma"><font size="3"><font color="#000000">: L& U; M5 u% |6 _
  20. </font></font></font>3 k  g8 `% s# g
  21. <font face="Tahoma"><font size="3"><font color="#000000">extern u8         esp_sipsend1[];</font></font></font>* a! w+ c1 F2 i* o; l' ^* s
  22. <font face="Tahoma"><font size="3"><font color="#000000">extern u8         esp_sipsend2[];</font></font></font>8 j7 w; g9 G( o
  23. <font face="Tahoma"><font size="3"><font color="#000000">
    . K9 k6 v$ ^+ H# v1 q+ o+ }+ F4 S
  24. </font></font></font>" L( G6 G& Q1 n; U" Q6 y9 V! Y) V- x+ d
  25. <font face="Tahoma"><font size="3"><font color="#000000">int main(void)</font></font></font>
    7 T7 M7 g2 f4 g$ `' }$ M6 K
  26. <font face="Tahoma"><font size="3"><font color="#000000">{        </font></font></font>
    : J: ^) U. l% w+ _/ }4 _2 g  b
  27. <font face="Tahoma"><font size="3"><font color="#000000">        delay_init();                                                                                     //延时函数初始化</font></font></font>
    : s1 @9 c6 B8 d/ l0 I7 p$ M
  28. <font face="Tahoma"><font size="3"><font color="#000000">        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);                        //设置NVIC中断分组2:2位抢占优先级,2位响应优先级</font></font></font>/ N9 ^; A$ `1 d, E9 w/ }; g
  29. <font face="Tahoma"><font size="3"><font color="#000000">        uart_init(115200);                                                                                 //串口1初始化为115200</font></font></font>- v# n- n' R. M5 m5 D1 O
  30. <font face="Tahoma"><font size="3"><font color="#000000">        Uart2_Init(115200);                                                                                //串口2初始化为115200</font></font></font>- f9 ^; J  t/ ]( f# q* }& P2 g. V
  31. <font face="Tahoma"><font size="3"><font color="#000000">        LED_Init();                                                                                                  //初始化与LED连接的硬件接口</font></font></font>
    1 W8 |- ~, x$ u; `. x
  32. <font face="Tahoma"><font size="3"><font color="#000000">        Esp8266_Init();</font></font></font>: {' q, n; Q) p: p
  33. <font face="Tahoma"><font size="3"><font color="#000000">        </font></font></font>6 w) q! E/ t6 S3 ^/ K
  34. <font face="Tahoma"><font size="3"><font color="#000000">  while(1)</font></font></font>) t- D, ~+ Y2 S5 k) R& Y5 h5 z8 E
  35. <font face="Tahoma"><font size="3"><font color="#000000">        {        </font></font></font>
    # P; i# I& k) b8 z% v# E8 s" T! j0 B
  36. <font face="Tahoma"><font size="3"><font color="#000000">                usart1_send_usart2();                                                                //利用串口1发送AT指令给串口2,从而达到配置ESP8266的目的,并且让模块的返回值在串口1打印出来</font></font></font>) _( h8 n" p6 l9 l  k  ?
  37. <font face="Tahoma"><font size="3"><font color="#000000">                if(Data_Compare((u8 *)"LEDK"))                               //点亮板上的led</font></font></font>* }. p1 }0 E& c6 S2 p  P
  38. <font face="Tahoma"><font size="3"><font color="#000000">                {                </font></font></font>" r5 R- {6 x: F5 ^$ c. Q! I# ]. t
  39. <font face="Tahoma"><font size="3"><font color="#000000">            led(1);        </font></font></font>* H! F7 \2 L* p
  40. <font face="Tahoma"><font size="3"><font color="#000000">                        Clear_Buf();</font></font></font>
    6 q8 j6 {- Y: s& {+ \- B' z
  41. <font face="Tahoma"><font size="3"><font color="#000000">                        Uart_SendStr(USART1, (u8 *)"led is open\r\n");        </font></font></font>
    / J, s+ K$ g; N: H0 _1 ^. X
  42. <font face="Tahoma"><font size="3"><font color="#000000">                        Uart_SendStr(USART2, esp_sipsend1);                                //利用串口2给esp8266发送AT+CIPSEND指令,告诉它下一次将发送具体数据</font></font></font>% Z. I* |( a% P. h6 r* B
  43. <font face="Tahoma"><font size="3"><font color="#000000">                        Usart2_Receive_Data(USART1);                                        //将串口2接收到的AT+CIPSEND指令返回的数据显示在串口1上</font></font></font>
    $ a. P5 q  D) l  U& b
  44. <font face="Tahoma"><font size="3"><font color="#000000">                        Uart_SendStr(USART2, (u8 *)"led is open\r\n");        //发送具体数据给esp8266,让他转发到app上</font></font></font>
    ! y: X" K+ s0 h9 ?. v% V$ ?
  45. <font face="Tahoma"><font size="3"><font color="#000000">                }</font></font></font>
    # l) G; e: m  Y6 c
  46. <font face="Tahoma"><font size="3"><font color="#000000">                else if(Data_Compare((u8 *)"LEDG"))                                    //关闭板上的led</font></font></font>0 p' G& `6 }  [4 M+ l
  47. <font face="Tahoma"><font size="3"><font color="#000000">                {</font></font></font>4 A' y4 |, ~& `: O4 A' C
  48. <font face="Tahoma"><font size="3"><font color="#000000">            led(0);</font></font></font>
    % n7 Y: _. S$ \" B7 M4 _
  49. <font face="Tahoma"><font size="3"><font color="#000000">                        Clear_Buf();</font></font></font>
    $ ^8 J( g' z, {$ b7 \2 L) o- v
  50. <font face="Tahoma"><font size="3"><font color="#000000">                        Uart_SendStr(USART1, (u8 *)"led is close\r\n");        </font></font></font>
    % Y, J6 B/ i5 n
  51. <font face="Tahoma"><font size="3"><font color="#000000">                        Uart_SendStr(USART2, esp_sipsend2);                                //利用串口2给esp8266发送AT+CIPSEND指令,告诉它下一次将发送具体数据</font></font></font>- Y) G4 O" w- y8 i8 B1 g* `" z. M
  52. <font face="Tahoma"><font size="3"><font color="#000000">                        Usart2_Receive_Data(USART1);                                        //将串口2接收到的AT+CIPSEND指令返回的数据显示在串口1上</font></font></font>
    $ ]; a9 g% k; R% p2 R4 B& U, b; m( O
  53. <font face="Tahoma"><font size="3"><font color="#000000">                        Uart_SendStr(USART2, (u8 *)"led is close\r\n");        //发送具体数据给esp8266,让他转发到app上                </font></font></font>
    7 o* v+ }+ Z' U9 c6 [1 z0 W4 e
  54. <font face="Tahoma"><font size="3"><font color="#000000">                }</font></font></font>+ u7 R/ z2 o* W: R- l' Y
  55. <font face="Tahoma"><font size="3"><font color="#000000">        }</font></font></font>3 x. n* f! e2 B0 J, w6 \& X% m
  56. <font face="Tahoma"><font size="3"><font color="#000000">}</font></font></font>
复制代码

( |6 w) w$ f* b  此代码中的serial.h包含几个自定义函数,其函数的作用见其右边的注释,代码如下所示:
! q1 p) V/ H/ h$ y5 m0 \
  1. <font face="Tahoma"><font size="3"><font color="#000000">#ifndef        __SERIAL_H</font></font></font>/ b2 Q; O+ @7 s8 r  P
  2. <font face="Tahoma"><font size="3"><font color="#000000">#define __SERIAL_H</font></font></font>
    6 U) c& q" a) E  h% q0 u1 S
  3. <font face="Tahoma"><font size="3"><font color="#000000">#include "stdio.h"        </font></font></font>
    1 \* @" x) U) U* A9 ^1 i# C  ^
  4. <font face="Tahoma"><font size="3"><font color="#000000">#include "sys.h" </font></font></font>2 ?7 o3 O6 z% }
  5. <font face="Tahoma"><font size="3"><font color="#000000">#include "delay.h"</font></font></font>, Z3 P- D! |* P% v1 v0 Q" K
  6. <font face="Tahoma"><font size="3"><font color="#000000">#include  "string.h"</font></font></font>$ M7 y  r2 W1 K( O( U9 b: A
  7. <font face="Tahoma"><font size="3"><font color="#000000">#include "usart.h"</font></font></font>7 U6 A$ A2 w8 a2 A5 B
  8. <font face="Tahoma"><font size="3"><font color="#000000">
    2 q! n3 o; a: c% q( R/ x
  9. </font></font></font>
    4 }: j& l3 j6 j  A3 ^/ H# E+ |, G% x8 D
  10. <font face="Tahoma"><font size="3"><font color="#000000">#define tbuf 100</font></font></font>' I+ b, p" b5 y1 v5 ^
  11. <font face="Tahoma"><font size="3"><font color="#000000">7 i+ ~% S+ s+ P: J' o% R1 Y
  12. </font></font></font>
    + V$ ?7 O$ s' o2 S
  13. <font face="Tahoma"><font size="3"><font color="#000000">void Uart2_Init(u32 bound);                                                        //初始化串口2</font></font></font>8 O4 M# k$ @% m& E0 d' t; y( Y
  14. <font face="Tahoma"><font size="3"><font color="#000000">void Clear_Buf(void);                                                                //清除缓冲区数据</font></font></font>5 u1 Q7 t$ D* r% N) K+ B
  15. <font face="Tahoma"><font size="3"><font color="#000000">void Uart_SendStr(USART_TypeDef* USARTx, u8 *s);        //往某一个串口发送指定字符串</font></font></font>
    & {8 i9 l, _' P9 |. d' {+ V
  16. <font face="Tahoma"><font size="3"><font color="#000000">void Usart2_Receive_Data(USART_TypeDef* USARTx);        //将串口2返回的数据发送给串口1进行显示</font></font></font>
    * t* {0 A1 q8 D' ^" H  X) e( G
  17. <font face="Tahoma"><font size="3"><font color="#000000">u8 Data_Compare(u8 *p);                                                                //指定字符串与缓存数组数据进行数据比较</font></font></font>2 c3 _: b# ], [# [7 `* P
  18. <font face="Tahoma"><font size="3"><font color="#000000">void usart1_send_usart2(void);                                                //利用串口1发送AT指令给串口2,从而达到配置ESP8266的目的,并且让模块的返回值在串口1打印出来</font></font></font>4 V5 ~8 \/ p' K; ~
  19. <font face="Tahoma"><font size="3"><font color="#000000">
    , l+ l; C* A# d1 s9 ^
  20. </font></font></font>
    & z7 R* B. c6 M3 \$ ~9 s+ u7 I
  21. <font face="Tahoma"><font size="3"><font color="#000000">#endif</font></font></font>
复制代码
2 j. N# A) C) R- u* x
  其中Usart2_Receive_Data函数是用于接收esp8266返回的数据并在串口1进行显示,因为串口2是与esp8266进行连接的,只要串口2正确发送AT指令给esp8266,esp8266都会返回响应值,由于手头上没有USB转TTL模块,只能用这种方法来观察esp8266模块的返回值。/ w) m  q: U: I$ a
  而usart1_send_usart2函数的作用是利用串口调试助手发送AT指令给串口1,串口1接收到数据之后,将数据通过串口2发送给esp8266模块,达到通过串口调试助手发送AT指令配置esp8266模块的目的,之所以用这种方式,其原因是手头上没有USB转TTL模块,才出此下策。, l+ Z# a5 u( z/ N" e6 G3 d4 G
  假如手头上有USB转TTL模块,上面的两个函数大可不必要,直接将USB转TTL直连上esp8266模块,然后USB端插在电脑上,利用串口调试助手即可直接发送AT指令去配置esp8266模块以及显示模块的返回值。
0 H  |- \. y; q+ n' Z, ]2 m4 B  \( m  主函数中的Esp8266_Init函数是对esp8266进行一系列的配置,使得能够被app客户端所连接上,其详细代码如下所示:2 i9 q) l6 B6 I2 j- ~5 Q* i8 z  i

$ R% Z$ e' ?; Y6 P
  1. <font face="Tahoma"><font size="3"><font color="#000000">#include "esp8266.h"</font></font></font>
    1 k) U' ?: f4 c8 {$ V
  2. <font face="Tahoma"><font size="3"><font color="#000000">" X) p% Z( \* Y
  3. </font></font></font>9 ]9 a1 A# @& A" r
  4. <font face="Tahoma"><font size="3"><font color="#000000">u8  esp_at[] = "AT\r\n";                                          //握手连接指令,返回"OK"</font></font></font>: f  W/ G4 M. W' B0 J1 }
  5. <font face="Tahoma"><font size="3"><font color="#000000">u8  esp_cifsr[] = "AT+CIFSR\r\n";                                 //本机IP地址查询指令</font></font></font>
    4 h- P$ r. {, N- _" d) H  X2 |/ c3 O8 ?
  6. <font face="Tahoma"><font size="3"><font color="#000000">u8  esp_cipsend[] = "AT+CIPSEND=6\r\n";                           //设置发送数据长度</font></font></font>
    ( }. U5 ^% h& ?( b& y
  7. <font face="Tahoma"><font size="3"><font color="#000000">u8  esp_test[] = "sunny\r\n";                                           //数据内容</font></font></font>
    # k1 S3 M9 S0 D, z- r6 A
  8. <font face="Tahoma"><font size="3"><font color="#000000">u8  esp_rst[] = "AT+RST\r\n";                                                 //软件复位</font></font></font>% Y0 Y" \/ c7 q9 R" d
  9. <font face="Tahoma"><font size="3"><font color="#000000">u8  esp_cwmode[] = "AT+CWMODE=2\r\n";                             //设置ESP8266的工作模式2(AP模式,WIFI模块作为热点),返回"OK"或者"no change"</font></font></font>
    , N' K/ j1 m* m2 y/ C
  10. <font face="Tahoma"><font size="3"><font color="#000000">u8  esp_cwsap[] = "AT+CWSAP="ESP8266_TEST","1234567890",1,4\r\n";//设置WIFI的名称、密码、通道号、加密方式(4-WPA_WPA2_PSK)</font></font></font>
    ' E& _, K, V* }3 s. ~' {
  11. <font face="Tahoma"><font size="3"><font color="#000000">u8  esp_cipmux[] = "AT+CIPMUX=1\r\n";                           //打开多连接        </font></font></font>* B& q& P) m( X
  12. <font face="Tahoma"><font size="3"><font color="#000000">u8  esp_cipserver[] = "AT+CIPSERVER=1,8080\r\n";          //建立TCP服务器,开放端口8080,端口号可以改成其他的例如8086等等</font></font></font>$ X0 P  F2 k3 R7 j2 g) }4 ]
  13. <font face="Tahoma"><font size="3"><font color="#000000">u8         esp_cipsto[] = "AT+CIPSTO=2880\r\n";                        //设置服务器超时时间为2880s,也就是连接服务器过程中可以等待的时间</font></font></font>
    9 Z/ `& W* I: o1 R9 X6 m
  14. <font face="Tahoma"><font size="3"><font color="#000000">
      N% g: @8 R$ `, _# L# X
  15. </font></font></font>& _+ M1 g' x0 _/ U2 {. f
  16. <font face="Tahoma"><font size="3"><font color="#000000">extern u8        RX_num;                                                                   //接收计数变量</font></font></font>
    $ d8 V: \4 r1 i3 ?; q
  17. <font face="Tahoma"><font size="3"><font color="#000000">extern u8  RX_buffer[tbuf];</font></font></font>- c4 `: T/ K4 O' I
  18. <font face="Tahoma"><font size="3"><font color="#000000">3 w# L/ l9 f5 V. [% b, H8 y9 W
  19. </font></font></font>
    & E, o5 T1 s2 v
  20. <font face="Tahoma"><font size="3"><font color="#000000">void Esp8266_Init(void)</font></font></font>8 k1 W9 N- I6 }+ t
  21. <font face="Tahoma"><font size="3"><font color="#000000">{</font></font></font>. ?; i0 G4 ?7 _+ p4 u/ w
  22. <font face="Tahoma"><font size="3"><font color="#000000">        Uart_SendStr(USART2, esp_cwmode);                   //设置ESP8266的工作模式2 AP,返回"OK"或者"no change"</font></font></font>
    " d9 q  C5 _, |' n/ q
  23. <font face="Tahoma"><font size="3"><font color="#000000">        Usart2_Receive_Data(USART1);                        //将串口2收到的数据发送给串口1进行显示</font></font></font>: ?, J" E4 N; t4 Y# b  ?
  24. <font face="Tahoma"><font size="3"><font color="#000000">        Uart_SendStr(USART1, (u8 *)"\r\nOK,set mode as AP with ESP8266!\r\n----------\r\n");</font></font></font>) D7 p! F4 Y, K; @8 V
  25. <font face="Tahoma"><font size="3"><font color="#000000">        </font></font></font>
    : I- F7 y. u- s$ v8 ]6 @
  26. <font face="Tahoma"><font size="3"><font color="#000000">        Uart_SendStr(USART2, esp_rst);                           //设置ESP8266的工作模式后需要复位以生效该模式</font></font></font>
    : B) a+ t6 m/ Q4 K" _1 ~
  27. <font face="Tahoma"><font size="3"><font color="#000000">        Usart2_Receive_Data(USART1);                        //复位后可能会返回一堆乱码</font></font></font>7 Q1 ]( z4 p  \# [! N
  28. <font face="Tahoma"><font size="3"><font color="#000000">        Uart_SendStr(USART1, (u8 *)"\r\nOK,set RST success!\r\n----------\r\n");</font></font></font># H, N% Q8 g/ j0 |
  29. <font face="Tahoma"><font size="3"><font color="#000000">        </font></font></font>
    5 r" W; p* D, A1 o6 M8 \
  30. <font face="Tahoma"><font size="3"><font color="#000000">        Uart_SendStr(USART2, esp_cwsap);                   //设置WIFI的名称及密码</font></font></font>
    9 r/ r4 I% k: |; m. k# i
  31. <font face="Tahoma"><font size="3"><font color="#000000">        Usart2_Receive_Data(USART1);                        //将串口2收到的数据发送给串口1进行显示</font></font></font>: X. v1 f( ~+ N: r
  32. <font face="Tahoma"><font size="3"><font color="#000000">        Uart_SendStr(USART1, (u8 *)"\r\nOK,set cwsap success!\r\n----------\r\n");</font></font></font>' y/ {- |' p1 h* S; q6 Q
  33. <font face="Tahoma"><font size="3"><font color="#000000">        </font></font></font>
    : l; `* w) r' _8 o  I; y! s/ p. _
  34. <font face="Tahoma"><font size="3"><font color="#000000">        Uart_SendStr(USART2, esp_cipmux);                   //设置多连接(多路连接模式)</font></font></font>; f. W  u- O9 k9 A
  35. <font face="Tahoma"><font size="3"><font color="#000000">        Usart2_Receive_Data(USART1);                        //将串口2收到的数据发送给串口1进行显示</font></font></font>9 \" v' H9 s2 n
  36. <font face="Tahoma"><font size="3"><font color="#000000">        Uart_SendStr(USART1, (u8 *)"\r\nOK,set cipmux success!\r\n----------\r\n");</font></font></font>- O+ l# a% x$ P3 b4 M' R# n6 K
  37. <font face="Tahoma"><font size="3"><font color="#000000">        </font></font></font>
    " u4 v: p) [" M1 L
  38. <font face="Tahoma"><font size="3"><font color="#000000">        Uart_SendStr(USART2, esp_cipserver);        //设置wifi模块为TCP服务器模式,并配置端口为8080</font></font></font>
    9 q/ K' T% \( H% u. a) D
  39. <font face="Tahoma"><font size="3"><font color="#000000">        Usart2_Receive_Data(USART1);                        //将串口2收到的数据发送给串口1进行显示</font></font></font>( H' ]5 S6 W/ x( b2 T) u+ q( J  ~+ z
  40. <font face="Tahoma"><font size="3"><font color="#000000">        Uart_SendStr(USART1, (u8 *)"\r\nOK,set server success!\r\n----------\r\n");</font></font></font>
    ' c" K/ q+ Z2 _
  41. <font face="Tahoma"><font size="3"><font color="#000000">        </font></font></font>
    9 k  C) ]: B+ S4 r" {2 T
  42. <font face="Tahoma"><font size="3"><font color="#000000">        Uart_SendStr(USART2, esp_cipsto);                //设置服务器超时时间为2880s</font></font></font>7 [" `2 k$ A6 }( E  L; U4 g: B
  43. <font face="Tahoma"><font size="3"><font color="#000000">        Usart2_Receive_Data(USART1);                        //将串口2收到的数据发送给串口1进行显示</font></font></font>
    : b2 y0 c  R/ w& P7 D& B/ e
  44. <font face="Tahoma"><font size="3"><font color="#000000">        Uart_SendStr(USART1, (u8 *)"\r\nOK,set cipsto success!\r\n----------\r\n");</font></font></font>
    7 E# E  F( |4 P+ G; h; K7 I, f
  45. <font face="Tahoma"><font size="3"><font color="#000000">        </font></font></font>: P$ i+ C8 a1 N3 G
  46. <font face="Tahoma"><font size="3"><font color="#000000">        Uart_SendStr(USART2, esp_cifsr);                //获取本机IP地址</font></font></font>/ N: Q6 L( n$ T- j% G
  47. <font face="Tahoma"><font size="3"><font color="#000000">        Usart2_Receive_Data(USART1);                        //将串口2收到的数据发送给串口1进行显示</font></font></font>0 l% T3 p6 m1 Y' Z
  48. <font face="Tahoma"><font size="3"><font color="#000000">        Uart_SendStr(USART1, (u8 *)"\r\nOK,get ip address success!\r\n----------\r\n");</font></font></font>% Q7 b3 A6 @) j- c! b$ u6 @
  49. <font face="Tahoma"><font size="3"><font color="#000000">}</font></font></font>
复制代码

* H' W+ A& v% a- [: J  至于其中的AT指令,网上随便找一下都有一大堆关于AT指令的详细解释,这里就不再过多解释,而其他的函数,也没有什么好讲的,至此,stm32代码部分就到这里了。. \1 |1 T0 o( y

% O7 K; q0 C. J移动端app制作、生成、控制
2 u0 m6 Z6 k; [3 p  接着进行app的设计,本章app的设计采用的是app inventor。2 ^( w$ n7 \' F+ Q: ^' T. E
  APP INVENTOR由谷歌实验室开发,后移交麻省理工学院,是一款可视化编程环境,采用搭积木的方式快速建立应用程序,并且可以结合AI伴侣,极其便利的在手机上进行测试和应用。
% ?: C1 ]( R* i: H) k# f5 u" n  APP INVENTOR是完全基于网页的在线编程工具,国内外都有一些可用的服务器。
4 P8 E. b0 R) |2 n6 G3 Z
3 P5 R9 ?+ w8 u. F( x% K! A$ e" ]. H
6e76da6c9a4849978af1bad2f967ed1d.png

' O' v% N7 J' f, n- i
& T3 c5 _( R9 z4 b6 x; x3 A  可以用QQ登录,登录后创建项目就可以进入编程界面。: O  P; @/ c  |/ c' @# ]% t

$ m  e3 j1 M- L
59ae0fd06bdd4b6e937c9b1895b5e8e0.png
: }4 M2 W. `! G. T% C7 w, k( u

" J5 u/ p' J. r2 a  j  中间显示的就是手机屏幕,通过拖拽工具到手机屏幕,就可以开始编程了,目前只支持Android手机。
) J& B  V4 p/ V* u+ E# R4 G  为了便于编程调试可以在手机上安装AI伴侣,下载地址可以通过点击菜单栏 帮助->AI伴侣信息 打开下载帮助页。  O6 w0 R; |0 F
————————————————0 t6 t5 y! y& L6 G
版权声明:i土豆" \4 g! i4 S; |& F
$ X# U  N0 h4 ]: ^: t' d
2 }' @8 H9 S0 S5 i
收藏 评论0 发布时间:2022-10-16 20:19

举报

0个回答

所属标签

相似分享

官网相关资源

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