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

【经验分享】STM32F407VET6通过机智云APP进行多路设备控制

[复制链接]
STMCU小助手 发布时间:2022-5-15 17:08
比如我们利用机智云 Demo APP 同时单独控制开发板的 2个LED灯,那么我们首先就要创建一个有多路数据节点的设备,这里我们可以直接创建,也可以在原来的设备基础上加几个数据节点,方法都一样,这里选择重新建立新设备,怎么创建就不再赘述,可参考第一步:如何在机智云上创建自己的第一个设备,创建成功的设备如下图所示:
3 G; O9 t. d) @0 p
( v6 I, h2 O: a+ Z. P. S @0M(@X$[3W88}D(4W6[%CYJ.png
+ Q( S6 W6 s  W9 s6 D6 q6 j- e" P% L- X" b6 G
因为都属于开关控制,所以各数据点的类型我们都使用布尔类型
# j& ]# u  k2 c* o! ^! ~3 y3 c  s( F" l9 Q" d
CGECC8B]AJD_Q6]}9E))AF4.png 0 k" r( T5 D2 O
8 p7 g' I4 e! Y, b. ]  }2 h7 ^, [
同样的办法,生成其他平台代码并移植好,这里也不再赘述,请参考前面章节,因为添加了一个LED灯,所以LED就得对多的LED进行初始化代码如下:
( U+ C4 a; l. S- G6 ^8 k6 W* p3 F" N) Z( l
P4I]8E@Wa0F}`SRL66U2J.png . \. s; N8 u( |: E! c( S# O+ p

* {2 x+ U! G  U: V4 B2 O. Z6 M3 u我们点击 main.c 文件下设备状态结构体 currentDataPoint,结构体定义. h* \  C0 y6 c* L. I$ U9 E+ F
, t! C1 ^# N; F) p0 C& J7 |
20191022171456354.png
9 j- _3 g" @( L+ k4 ~& q9 ^. @
2 f6 s/ Q  h' l* z2 n- v  o从图dataPoint_t 定义可以看到,数据类型和我们在创建的数据是一样的。
/ `! A, E- R1 O2 B  `2 x/ s0 ~7 N! B* O
在gizwits_product.c 文件,在 gizwitsEventProcess()事件处理接口函数中,系统也自动将接口给我写好了,我们只需要在对应的数据点添加事件控制即可:* Y) I; U* y& M! k, T
4 b: B' ^* y+ E9 D  a$ h1 M3 {7 b$ v* z
[ZUQ4IAU~3L))V2H]8$WS~C.png + l+ N1 y; m* q" j2 |
  E5 H& Z" V4 z7 z, U' A
将LED灯的代码添加进去就可以了,我们这里还是只用到了控制,没有数据采集,所以userHandle函数不要管他。% g. n6 O5 U! t1 j! W

+ U" ^' g- W! F7 D0 T0 p+ O加入main.c的代码进行下载验证,main.c代码如下:+ l' Y/ ~! F" K9 P. x' e
) D& n! s6 h/ W3 Y7 W. ?- \
  1. #include "led.h"2 f7 I5 \9 _  W4 }
  2. #include "delay.h"
    " ^8 y7 Z) v) e8 ~: O5 t2 |' w* ~
  3. #include "key.h"
    6 P( S/ ^5 P" E" K" W
  4. #include "sys.h"" l/ t0 h5 ?8 b3 h+ _
  5. #include "usart.h"$ E8 |+ d- P9 w0 P3 O
  6. #include "timer.h"4 M/ P+ l4 B2 y; M) {  i4 F# ?, \# @
  7. #include "usart3.h"
    & h% X1 m& E9 U4 g4 T$ d/ O
  8. #include "gizwits_product.h"
    7 p, t& @% [: w& @# @8 w* l3 C
  9. ; h5 R8 [! ]& J* t; z( P- T3 n
  10. u8 wifi_sta;
      u$ `4 B7 `. {% t! o
  11. 5 B' O' {! W! d+ p8 u2 J
  12. dataPoint_t currentDataPoint;
    0 f/ Z+ ~% A+ Z5 D( J- [
  13. 0 X2 \4 d0 P6 {8 @1 Q
  14. void Gizwits_Init(void)
    $ x( k  z! {! o+ j5 z( t& s
  15. {) i/ H2 _1 J! }7 s  h" ?2 [
  16.         TIM3_Int_Init(10-1,8400-1); //1MS( I+ S1 \  v8 d
  17.         usart3_init(9600);//WIFI
    : [7 E9 Y! w* l0 n" ~! V
  18.         memset((uint8_t*)¤tDataPoint, 0, sizeof(dataPoint_t));; ?8 Y- k4 b& m: t$ C% _1 B) d3 K
  19.         gizwitsInit();//
    3 ]! i' M1 f* {( @( G  A
  20. }1 ?6 J% P0 Q; l

  21. ! z6 T/ a( b& j( P
  22. void userHandle(void){8 U2 Y9 P! q* P1 v. [
  23. }" ]% `0 W* H2 E

  24. 8 n; J* b1 B2 I/ C0 |$ }3 i7 p
  25. int main(void)
    9 O) Y! V, D* f- x
  26. {8 f, U# O$ v& W2 f! U6 J  |
  27.         int key;
    - y6 n3 n$ I" e' Q8 N6 p
  28.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
    ; ?8 U- \. i3 z5 y4 [
  29.         delay_init(168); , }9 @3 J3 i- U3 s+ |- R! N' b
  30.         uart_init(115200); 7 w, Q% [& ^4 p7 q  o
  31.         LED_Init(); # J& w  }+ M" U) z+ y9 F5 \8 N/ O
  32.         KEY_Init();
    : w' J2 K# k9 Y- h2 [- X
  33.         Gizwits_Init();* L0 Z1 T. T  Z% L1 w, O# T" S6 M
  34.         printf("------------------\r\n");
    & A; Y! a- `: E) t, I' M
  35.         printf("KEY1:AirLink\t KEY_UP:¸复位\r\n\r\n"); / ?0 s1 c, e# F. s3 a# Z+ W7 a
  36.         
    # s# W7 P- O9 v# W3 d
  37.         while(1): G1 y% j4 p2 {& Z
  38.         {
    . X4 A- c- Q8 e  L6 @) C  |
  39.                 userHandle();//上行处理
    3 o5 M' b2 O4 d2 o- q

  40.   z4 ]: K: t5 T0 d, P
  41.                 gizwitsHandle((dataPoint_t *)¤tDataPoint);//Ð协议处理! i& I$ d0 C) T) O# U4 l
  42.                 key = KEY_Scan(0);& e9 d3 b( d* M. r2 w
  43.                 if(key==KEY1_PRES)//KEY1
    % Q0 B# f2 B  x; A
  44.                 {5 d" q' @/ E# l7 {  D
  45.                         printf("WIFI进入AirLink模式\r\n");, Z6 g; ?5 t* |2 z$ g* c) s
  46.                         gizwitsSetMode(WIFI_AIRLINK_MODE);//Air-link 9 E& I, P& ?8 `# [
  47.                 }% B# W3 Z9 x  \5 F
  48.                 if(key==WKUP_PRES)//KEY_UP
    , [. {# Z) G- n6 m+ _
  49.                 {
    + i( A2 w# R1 L, F- H9 V8 {) V! R+ y
  50.                         
    $ c2 R- t  W* w6 z/ ]( i
  51.                         printf("WIFI¸请重新配置\r\n");
    $ _5 W% u, A9 c, s( J# Q
  52.                         gizwitsSetMode(WIFI_RESET_MODE);//WIFI
    ) _, U9 J) K3 k, ?/ n. ~$ y' }% y
  53.                 }
    # U% ~5 \% [. ^% _, K; d+ p
  54.                 delay_ms(200);1 D3 O( ]+ O) C+ M6 p& g% k3 e1 A2 |4 W
  55.         }* m( I8 J# b( F" ^+ ~
  56. }$ V" b0 _& s& d! Y5 }8 t8 E; J5 \
复制代码

5 _) a+ q& q2 J- N配置过程如下图所示:
# D$ p4 @9 O& a: ~( }
" A  n# X% T1 x4 u4 f6 f1 q K$)]O{6L[FB{8WTT%$G%UK1.png
  U3 ~- F+ n' g
, i1 F9 A6 Y' T; D4 P# v KWO}{HUN1V~[84J[CQA3ECS.png
: C5 V* a' S7 s8 F" H( g) F+ }
+ Q  I; o; c3 f  e, k$ P9 b& y( B
# [* f2 u, o  v2 W9 l# w
收藏 评论0 发布时间:2022-5-15 17:08

举报

0个回答
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版