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

智能手表雏形之U/COSIII实时操作系统移植

[复制链接]
颩色四葉愺 发布时间:2015-1-8 20:58
添加u/cosIII所需的文件,如下图9 g5 h; x. A0 g7 S4 r9 c8 C" l, a
QQ截图20150108205408.png
, s( f5 a' _+ y QQ截图20150108205443.png 4 Q) ]  S/ Q7 i7 ~0 O: G
QQ截图20150108205453.png
$ c, a8 U+ ^& C QQ截图20150108205500.png ) j- I0 [3 w% G3 S: X1 E. C3 v
QQ截图20150108205508.png 5 U$ r% f* n% e+ L; ]
QQ截图20150108205518.png
& k* y) T1 w6 [& N* p1 C主要代码如下:* C$ |& g; W: l. a6 X% x
  1. #include "app.h"/ ]6 K) e8 N+ m0 u2 B
  2. #include "gui_desktop.h"
    7 e8 a# C5 y, u" A8 P
  3. #include "sim908.h"* Q2 Y2 i* q  n" A& D' G9 ]
  4. #include <string.h>
    ( n5 Y4 b& t! W
  5. #include "wm.h"9 s4 l1 p, b. Y
  6. #include "gui_common.h"
    ) @5 Z$ N: {& Y5 i
  7. #include "rtc.h"
    $ s9 y9 x# L; G
  8. #include "i2c_ee.h"
    2 c/ `- L7 T- j4 C: t
  9. #include "bsp_sdfatfs_app.h"7 o+ y- ]7 A5 }! E
  10. % ^% R! j9 @. {. N6 U6 g
  11. extern        OS_TCB        StartUp_TCB;                                        - k7 N2 t" s5 P  j+ T
  12. 8 }* }6 @6 B) q% h5 }
  13. static  OS_TCB        LED_TCB;                                                   ! b* t& i7 N9 ^- R& g- s+ l  Q
  14. static        CPU_STK        LED_Stk[TASK_LED_STK_SIZE];           5 \6 d7 J: e1 N, i
  15. static  OS_TCB        GUI_TCB;                                                           8 d0 o0 r+ z" @( U0 W
  16. static        CPU_STK        GUI_Stk[TASK_GUI_STK_SIZE];
    . y7 y0 }- v' ]2 v
  17. static  OS_TCB        GUI_Touch_TCB;                                                           
    7 i1 {* j  ]' O
  18. static        CPU_STK        GUI_Touch_Stk[TASK_GUI_Touch_STK_SIZE];        " d% a4 t; l+ C. x. L
  19. //static OS_TCB AT_TCB;/ k& u1 Q: i, N, Q: B: ^% r8 b( g
  20. //static CPU_STK AT_Stk[TASK_AT_STK_SIZE];
    ! T" y* x- [9 R" O7 N9 |
  21. OS_TCB IntTest_TCB;
    + k0 [% N/ R" B; H$ V
  22. static CPU_STK IntTest_Stk[TASK_INTTEST_STK_SIZE];
    % T6 ?, l0 G! T8 w/ C1 U! f
  23. OS_TCB MessageHandle_TCB;
    : P, h! S6 a) p2 x  Y3 @+ t. Z7 L) i
  24. static CPU_STK MessageHandle_Stk[TASK_MESSAGEHANDLE_STK_SIZE];
    . c) N+ p. E9 k' t' V% p
  25. OS_TCB PhoneHandle_TCB;
    " H0 Y3 I! V" v. O; _4 ^6 a
  26. static CPU_STK PhoneHandle_Stk[TASK_PHONEHANDLE_STK_SIZE];1 v" ^1 A3 h& A9 G4 B
  27. OS_TCB GPRSHandle_TCB;
    1 @- V9 Y, C/ g; L! @1 ^- L# x, Z
  28. static CPU_STK GPRSHandle_Stk[TASK_GPRSHANDLE_STK_SIZE];
    3 \3 y, ?: p5 [; z& y- h
  29. OS_TCB TimeUpdate_TCB;0 p5 f3 J! ?: k  ?' y) r
  30. static CPU_STK TimeUpdate_Stk[TASK_TIMEUPDATE_STK_SIZE];! Y" O: |# D* b: D' r# r! T
  31. OS_TCB SimCheck_TCB;
    4 K* A' H  f0 `4 T: l$ M  o
  32. static CPU_STK SimCheck_Stk[TASK_SIMCHECK_STK_SIZE];
    0 _$ R* ~; `1 J4 P6 `
  33. OS_TCB Wireless_TCB;
    1 g7 L3 T3 i4 }- q: _  M: f5 D) Z
  34. static CPU_STK Wireless_Stk[TASK_WIRELESS_STK_SIZE];3 s1 _4 D: ]! E$ r4 G4 [! e" N
  35. ( p- [8 |8 `2 o: V
  36. % @3 u' `, j6 g3 c! F8 [+ h
  37. OS_MEM MyPartition;3 {4 T5 H' H2 H. |- x* S- Q
  38. u8 MyPartitionStorage[MEMLIST_SIZE][DATA_BUFF_SIZE];" t8 _  M' Q" o0 e; F! `/ w' s0 D

  39. , [* F3 i5 p8 ]" [
  40. + ~/ g' f3 J( V0 y5 I" T. `
  41. OS_MUTEX Mutex_USART2;7 b( v" w; \3 k6 D) L

  42. ' K% U* y$ l- [6 e  `
  43. OS_Q Q_GSMResponse;" Q; ^7 n' \, h3 v, @2 F: o

  44. / z. S- W) h3 K; n- h
  45. OS_FLAG_GRP MessageFlagGrp;
    2 p$ ]  f! ?2 g
  46. OS_FLAG_GRP PhoneFlagGrp;8 L+ f4 A$ A7 n7 r. q0 h& B" A' E
  47. OS_FLAG_GRP GPRSFlagGrp;* }" A2 ~' j  n! \4 V( v
  48. 9 I1 _6 N: T3 I% A# s- U
  49. OS_TMR MyTmr1;               
    - n& B0 T6 K" i1 c
  50. . s' s+ D2 B, t* ^0 s

  51. 6 C8 ^* C* V3 m4 e3 C" p; H- w
  52. : H4 _8 u* _  m( g
  53. : W0 w: @- ]" r& U" b( C

  54. 5 x# D4 M$ g3 C8 M7 |: V9 B
复制代码

0 l$ i2 @; C, s4 L! b  v% v3 P/ ~) x+ C- ~2 B
赞 收藏 评论9 发布时间:2015-1-8 20:58

举报

9个回答
颩色四葉愺 回答时间:2015-1-8 21:00:20
  1. /*
    " C6 I2 S: {  r9 R
  2. * 函数名:Task_Start
    " z0 Y6 M. l% a# v- X) ~/ e
  3. * 描述 : 启动任务,
    ' o4 f; R( b0 Y3 S# d% v" B# q3 v
  4. * 优先级为1,& N9 l$ n' j* `( E0 t* F
  5. * 初始化及创建其它任务
    + j: E; k2 C  X) H6 h
  6. * 输入 :无
    % U1 p7 @* h! H1 B7 o: R
  7. * 输出 : 无2 H" |) m8 Z2 S/ @
  8. */
    " \8 V9 y0 r$ Y5 u5 h
  9. void Task_Start(void *p_arg)
    6 b0 y' `( s; N% f+ g9 m
  10. {
    5 T( ~1 R) ^: P: a
  11. OS_ERR err;+ i+ Q' f# ]- R/ U+ ~% K; o- r
  12. (void)p_arg; 8 G4 c2 K+ C% ~% c5 C9 r
  13. 6 F$ U6 \9 ~, m* |& m
  14. /* 板级初始化 */
    3 o: G- S: N0 S
  15. BSP_Init(); / p  D1 u$ p0 a! i' N* [

  16. 2 Y! V0 A' d5 T( T6 P8 ^: `3 D
  17. //创建任务LED
    / D# L+ Q% }9 j- y+ q
  18. /*
    + Y* z, a# o9 T
  19. OSTaskCreate((OS_TCB *)&LED_TCB, // 任务控制块指针 , ]8 E+ Z, r: j; G. _2 X, }
  20. (CPU_CHAR *)"LED", // 任务名称
    * m7 u$ [" j! s6 j
  21. (OS_TASK_PTR )Task_LED, // 任务代码指针
    6 W6 U6 `4 b' c8 N$ k
  22. (void *)0, // 传递给任务的参数parg
    8 y9 O% a2 A9 j" p% w7 Z
  23. (OS_PRIO )TASK_LED_PRIO, // 任务优先级
    : F9 P7 \: I# {
  24. (CPU_STK *)&LED_Stk[0], // 任务堆栈基地址
    ) p4 @$ M9 E3 L5 c0 C( ~: `9 i3 \- \
  25. (CPU_STK_SIZE)TASK_LED_STK_SIZE/10, // 堆栈剩余警戒线
    6 U5 H! D& f% p( Z& U
  26. (CPU_STK_SIZE)TASK_LED_STK_SIZE, // 堆栈大小
    # F; y8 C) k" |7 c; ]- I2 b* `/ ^
  27. (OS_MSG_QTY )0, // 可接收的最大消息队列数, _" a  y% A6 l
  28. (OS_TICK )0, // 时间片轮转时间
    ( ~. u3 R. U# s" q( E4 B/ c
  29. (void *)0, // 任务控制块扩展信息$ \1 A) x3 [3 x
  30. (OS_OPT )(OS_OPT_TASK_STK_CHK | + }+ `- O* ~5 S% K! i
  31. OS_OPT_TASK_STK_CLR), // 任务选项7 t( p7 T  r5 B$ E
  32. (OS_ERR *)&err); // 返回值
    : ?$ e& X( F  g1 [
  33. */- F' c% Q8 s; |" L& N$ i! ?
  34. OSTaskCreate( (OS_TCB *)&IntTest_TCB, //任务控制块指针
    - a) ^: ^: S' {) |) f! F
  35. (CPU_CHAR *)"inttest", //任务名
    + J  k% _: s" }
  36. (OS_TASK_PTR )Task_IntTest, //任务代码指针
    + B( Y1 k, X2 T+ c3 B% Q# h
  37. (void *)0, //传递给任务的参数
    3 L" s! r0 a" H. b) j
  38. (OS_PRIO )TASK_INTTEST_PRIO, //任务优先级; t# [( }( J2 N; x! _, b& i
  39. (CPU_STK *)&IntTest_Stk[0], //任务堆栈基地址5 A, i) f; y7 R$ U2 y2 w
  40. (CPU_STK_SIZE)TASK_INTTEST_STK_SIZE/10, //堆栈警戒线
    + y" V$ c" c' Y2 O! K
  41. (CPU_STK_SIZE)TASK_INTTEST_STK_SIZE, //堆栈大小3 |  Z1 z7 o: t! n
  42. (OS_MSG_QTY )10, //可接收的最大消息队列数  ~6 K5 M8 G! m4 {4 ]# Q# }: M2 n
  43. (OS_TICK )0, //时间片轮转时间
    + v2 f9 q8 m6 m7 G; h2 [
  44. (void *)0, //任务控制块扩展信息
    : }+ Y  ~" @/ _6 P, N) s" H
  45. (OS_OPT )(OS_OPT_TASK_STK_CHK|OS_OPT_TASK_STK_CLR), //任务选项% ?2 w+ |: Z; ~- Z: I# t# V5 s
  46. (OS_ERR *)&err ); //返回值5 x: ~9 V6 g2 j( J9 S& L5 O

  47. ( c8 t2 Z5 e( b8 o' M& ^' Q+ K: B
  48. OSTaskCreate( (OS_TCB *)&MessageHandle_TCB, //任务控制块指针- S& A2 t: X' |- N1 [: F  K
  49. (CPU_CHAR *)"MessageHandle", //任务名
    # A( Z8 S+ n3 |
  50. (OS_TASK_PTR )Task_MessageHandle, //任务代码指针4 L# _5 j! [+ B5 U1 X
  51. (void *)0, //传递给任务的参数1 Q5 Z7 N, S- [  C
  52. (OS_PRIO )TASK_MESSAGEHANDLE_PRIO, //任务优先级, i& G. w* B$ [" K
  53. (CPU_STK *)&MessageHandle_Stk[0], //任务堆栈基地址
    " r. `/ L% m8 d9 M& ?- `7 i
  54. (CPU_STK_SIZE)TASK_MESSAGEHANDLE_STK_SIZE/10, //堆栈警戒线
    " f1 R- s2 Q. f& K4 b
  55. (CPU_STK_SIZE)TASK_MESSAGEHANDLE_STK_SIZE, //堆栈大小% g; V, c0 X2 ]+ h2 d& r  r2 M
  56. (OS_MSG_QTY )0, //可接收的最大消息队列数
    - T* a- x; m- D7 l, M
  57. (OS_TICK )0, //时间片轮转时间0 y) T7 X6 y7 C1 M. b
  58. (void *)0, //任务控制块扩展信息: Y% Z2 f% i" }$ g& o
  59. (OS_OPT )(OS_OPT_TASK_STK_CHK|OS_OPT_TASK_STK_CLR), //任务选项
    ' _0 ]. m7 [) h# k7 \5 |' ?
  60. (OS_ERR *)&err ); //返回值
    + ?# S2 }1 R6 p! ], X
  61. /* * {) ]3 J* U; m  `
  62. OSTaskCreate( (OS_TCB *)&PhoneHandle_TCB, //任务控制块指针
    % H* h" m4 {+ A. P
  63. (CPU_CHAR *)"PhoneHandle", //任务名' E8 q: @! E8 o- ]* Q& [
  64. (OS_TASK_PTR )Task_PhoneHandle, //任务代码指针2 ~4 r& k" m* A
  65. (void *)0, //传递给任务的参数3 E" X8 W. C) X! i" o- s, k
  66. (OS_PRIO )TASK_PHONEHANDLE_PRIO, //任务优先级* ~; j3 v: V$ Q( Z
  67. (CPU_STK *)&PhoneHandle_Stk[0], //任务堆栈基地址5 D0 x$ `$ w; J
  68. (CPU_STK_SIZE)TASK_PHONEHANDLE_STK_SIZE/10, //堆栈警戒线) O( a# v- X! c
  69. (CPU_STK_SIZE)TASK_PHONEHANDLE_STK_SIZE, //堆栈大小
    * y6 t$ n/ J3 S4 t$ i- N
  70. (OS_MSG_QTY )0, //可接收的最大消息队列数+ Q2 h4 l7 C7 i# f, l% [
  71. (OS_TICK )0, //时间片轮转时间
    & ~, T2 l* C5 N; O
  72. (void *)0, //任务控制块扩展信息
    ' h+ B- w9 T9 v/ X
  73. (OS_OPT )(OS_OPT_TASK_STK_CHK|OS_OPT_TASK_STK_CLR), //任务选项% a+ m5 r  i  ^/ X7 X
  74. (OS_ERR *)&err ); //返回值 % n4 `3 |* n* O" P+ l6 C
  75. */
    ! m' R: x; U9 i" Y- E, r

  76. 2 Q3 l% p% K  g8 N
  77. % T0 K  ?( S9 H% H8 k
  78. OSTaskCreate( (OS_TCB *)&GPRSHandle_TCB, //任务控制块指针# |  G* E) `6 C* [8 g2 D7 \
  79. (CPU_CHAR *)"GPRSHandle", //任务名
    ( P0 K0 s+ t6 H0 ?
  80. (OS_TASK_PTR )Task_GPRSHandle, //任务代码指针! W  K8 F( v3 v3 m4 _
  81. (void *)0, //传递给任务的参数+ z8 s( m, h7 _$ P+ c! C. i$ I
  82. (OS_PRIO )TASK_GPRSHANDLE_PRIO, //任务优先级
    ! t& d; r1 f: w" F- w! W1 R$ r
  83. (CPU_STK *)&GPRSHandle_Stk[0], //任务堆栈基地址
    , ?$ K) I1 J0 a. @" k: ^; q
  84. (CPU_STK_SIZE)TASK_GPRSHANDLE_STK_SIZE/10, //堆栈警戒线
    ! y" ]* o* q7 p& m, R" N
  85. (CPU_STK_SIZE)TASK_GPRSHANDLE_STK_SIZE, //堆栈大小. y8 r  ?9 f9 G9 [. Z
  86. (OS_MSG_QTY )0, //可接收的最大消息队列数  z" o# c! L, @7 x# U. ?+ o
  87. (OS_TICK )0, //时间片轮转时间
    . j% M$ W, {1 k3 D
  88. (void *)0, //任务控制块扩展信息/ f6 w0 _8 R! s* k* ^: D
  89. (OS_OPT )(OS_OPT_TASK_STK_CHK|OS_OPT_TASK_STK_CLR), //任务选项
    % j* B; i  m) C5 N
  90. (OS_ERR *)&err ); //返回值 * s1 R# {5 t( v6 {' v/ b

  91. 8 C# q3 B/ B/ K( v
  92. //创建任务GUI 0 U  g; Y* d5 ]
  93. OSTaskCreate((OS_TCB *)&GUI_TCB,
    - w+ h( u4 z. Y# k6 m; T+ n" L
  94. (CPU_CHAR *)"GUI",
    - Q$ f$ v0 y* Q9 @/ O
  95. (OS_TASK_PTR )Task_GUI,
    , z6 f1 S* v2 U# S: J3 M/ M3 R+ M
  96. (void *)0,
    : F- ~: q/ y/ c6 A( Y' g& k
  97. (OS_PRIO )TASK_GUI_PRIO, ( v" n1 S" A! C9 y- [# f) g5 r# W/ w
  98. (CPU_STK *)&GUI_Stk[0],
    ! Y- e% l2 \# v  t; u7 w
  99. (CPU_STK_SIZE)TASK_GUI_STK_SIZE/10, 3 F2 S7 \" y, q$ R6 z
  100. (CPU_STK_SIZE)TASK_GUI_STK_SIZE,
    8 t: f3 p4 d$ d7 \  N% Q2 v4 B7 s
  101. (OS_MSG_QTY )0,
    ; J, A9 T# i! q4 S' t- o6 A
  102. (OS_TICK )0, 1 a4 Q' b8 W" s
  103. (void *)0,
    3 |8 m+ ~( M: H7 I1 C0 x
  104. (OS_OPT )(OS_OPT_TASK_STK_CHK | OS_OPT_TASK_STK_CLR), % D7 g% @. v" @7 n0 |) x
  105. (OS_ERR *)&err);
    . S: D# ?1 C/ |: l# ]

  106. 3 n2 x& q: \- N0 O. [7 l' a
  107. //创建任务GUI_Touch ; S% F4 t( d8 g2 `! V
  108. OSTaskCreate((OS_TCB *)&GUI_Touch_TCB,
    ! n+ a" H0 `9 E; z
  109. (CPU_CHAR *)"GUI_Touch",
    # s  G# o# l' i6 @3 W* r/ E4 d
  110. (OS_TASK_PTR )Task_GUI_Touch, % c. ]0 X2 q4 p
  111. (void *)0, - \: z4 Z% Z2 x4 r% G/ ^6 q$ k
  112. (OS_PRIO )TASK_GUI_TOUCH_PRIO, ! Z, r. `3 y. t0 J- Z6 v! o
  113. (CPU_STK *)&GUI_Touch_Stk[0],
    " n5 A2 h8 H# `. c% m; c1 G* C
  114. (CPU_STK_SIZE)TASK_GUI_Touch_STK_SIZE/10,
      ^) z! _* y+ ^% q! t
  115. (CPU_STK_SIZE)TASK_GUI_Touch_STK_SIZE,
    # ^- P2 U7 T  ]
  116. (OS_MSG_QTY )0,
    + m2 I0 L. D4 g% D+ e  ^( L
  117. (OS_TICK )0, $ Y- t3 |6 \$ c1 v  D
  118. (void *)0, & h/ S: ], J3 ]) ?) \
  119. (OS_OPT )(OS_OPT_TASK_STK_CHK | OS_OPT_TASK_STK_CLR),
    2 J- y3 ?6 S/ u/ t+ g& ~
  120. (OS_ERR *)&err);
    # o0 e/ f. J) K
  121. /*- l' C  J$ u9 a  o
  122. OSTaskCreate((OS_TCB *)&TimeUpdate_TCB, 6 ^# x; J0 S7 O; o4 Z0 R
  123. (CPU_CHAR *)"TimeUpdate",
    5 g' x* Z! X# E( {
  124. (OS_TASK_PTR )Task_TimeUpdate,
    & I9 D% h  }# N% A8 n) I
  125. (void *)0, 2 t: \4 |. _+ H% {7 L' y
  126. (OS_PRIO )TASK_TIMEUPDATE_PRIO,
    / G7 R7 K/ f5 ]
  127. (CPU_STK *)&TimeUpdate_Stk[0],
    $ B6 d) O- R- H6 `) v6 q6 R' x& C6 a
  128. (CPU_STK_SIZE)TASK_TIMEUPDATE_STK_SIZE/10, 0 c: q+ K; b2 q3 [' M8 @' u0 X; z4 \
  129. (CPU_STK_SIZE)TASK_TIMEUPDATE_STK_SIZE, 0 W  c, R" B. Z, s, S7 W9 |. ]
  130. (OS_MSG_QTY )0, & M+ `3 d# C8 ^' A/ ^
  131. (OS_TICK )0, # H! }: ]+ O. g" l
  132. (void *)0,
    $ a! V, I* p! l. I) K- M  c
  133. (OS_OPT )(OS_OPT_TASK_STK_CHK | OS_OPT_TASK_STK_CLR),
    ; z- `0 [' `2 P! d' m
  134. (OS_ERR *)&err);
    3 q! N5 c, Y# U  z
  135. */
    5 d: p) H& w' Z

  136. " h% ~* I8 s' H4 J  S. b
  137. OSTaskCreate((OS_TCB *)&SimCheck_TCB, 8 q: S2 N6 }# i9 ~5 A) D
  138. (CPU_CHAR *)"SimCheck",
    7 j6 f( U/ g2 K) P
  139. (OS_TASK_PTR )Task_SimCheck,
    ! X2 J7 {2 U- I- _/ K0 \
  140. (void *)0,
    + g# d! h) |% y8 Z7 d- i) v0 i( ], t
  141. (OS_PRIO )TASK_SIMCHECK_PRIO, ; s5 B9 ?1 t! q. M2 q8 L: S$ z
  142. (CPU_STK *)&SimCheck_Stk[0], . `# z: C6 B2 l6 Q( I; b
  143. (CPU_STK_SIZE)TASK_SIMCHECK_STK_SIZE/10,
    0 Q: S. ^9 L" E8 O+ G9 M
  144. (CPU_STK_SIZE)TASK_SIMCHECK_STK_SIZE, ( U5 h# S. ?, u# `6 n9 ^
  145. (OS_MSG_QTY )0,
    / ]$ _6 Z/ q" U$ B( X
  146. (OS_TICK )0, , U5 d' ?, o, x6 b0 B# m2 i
  147. (void *)0,
    ' k3 {- k4 t  o* e5 L0 |
  148. (OS_OPT )(OS_OPT_TASK_STK_CHK | OS_OPT_TASK_STK_CLR), 4 x6 i) Y  ]! d5 e: u7 b+ P6 w
  149. (OS_ERR *)&err);
    4 h7 ~4 c# f/ V
  150. 9 D2 ~5 ?8 L) B* @6 E7 w
  151. OSTaskCreate((OS_TCB *)&Wireless_TCB, 0 g' i0 r& M+ s5 F
  152. (CPU_CHAR *)"Wireless",
    & i- ?- A! |% B+ t/ N
  153. (OS_TASK_PTR )Task_Wireless, ( O0 s9 l0 I% S# X/ \
  154. (void *)0,
    # a3 Z" m! l# \
  155. (OS_PRIO )TASK_WIRELESS_PRIO,
    ' |! H2 R; B% |% d  a" I# z9 ^
  156. (CPU_STK *)&Wireless_Stk[0], + u3 ]6 T- z: T$ L- Z5 S
  157. (CPU_STK_SIZE)TASK_WIRELESS_STK_SIZE/10, 2 P$ Y$ j$ e& z) K8 C4 J2 ^
  158. (CPU_STK_SIZE)TASK_WIRELESS_STK_SIZE,
    8 x+ e& o& }8 d! b- N7 E$ U
  159. (OS_MSG_QTY )4,   F2 P7 w+ ?, t& x8 X
  160. (OS_TICK )0, # e8 |0 ^% `7 ?6 f+ X6 F$ Q
  161. (void *)0, 7 @$ ]3 ~. u2 V; Q& d
  162. (OS_OPT )(OS_OPT_TASK_STK_CHK | OS_OPT_TASK_STK_CLR), - k. j4 |5 _- P1 O
  163. (OS_ERR *)&err);; n9 ~' \0 R0 G' B$ @3 S
  164. 6 j8 G0 ~0 ~1 s
  165. //创建定时器任务
    2 t* z0 M/ Z: w$ _: X' Y0 D5 a
  166. OSTmrCreate((OS_TMR *)&MyTmr1,
      }) v7 P; Z/ E/ o4 W
  167. (CPU_CHAR *)"My Timer #1",
    7 q& R+ a' ^1 ?
  168. (OS_TICK )10,
    - l- B* I) s& z. D1 x- [) p
  169. (OS_TICK )50,# a; k( r. n! ^# t& k
  170. (OS_OPT )OS_OPT_TMR_PERIODIC,
    % o; t$ n# e, ]3 B, _5 A. [
  171. (OS_TMR_CALLBACK_PTR )TmrCallback_RTCUpdate,
    . n& k, P, ]: c
  172. (void *)NULL,/ ]1 I6 _0 v( x! A
  173. (OS_ERR *)&err);
    + _! k: T4 j- m8 t

  174. 3 v5 p& w+ I: d3 V8 Z
  175. OSTmrStart((OS_TMR *)&MyTmr1, (OS_ERR *)&err);
    / Z7 k- `. _; E) |7 {$ m

  176. 5 d8 f1 r8 i& l. o8 z2 I
  177. //任务删除自己
    ) o) F/ F3 ]7 I1 [1 P( O" _& a. [0 o
  178. OSTaskDel(&StartUp_TCB,&err);
    7 b3 c9 x8 w3 k2 O1 V
  179. }
复制代码
8 _0 d) w6 v% M  v5 _# J

: G0 X- x$ X; G" e$ j8 R& j# F* q
颩色四葉愺 回答时间:2015-1-8 21:01:21
  1. 6 d; y0 X) z5 W0 M3 n' x) P
  2. . Q1 K' m0 L, N& \  F- q: @
  3. void Task_IntTest(void *p_arg)
    9 s: U& F) }) T' n0 A4 T
  4. {
    $ w" t+ Z) k# A8 p2 a  p+ d
  5. OS_ERR err;- p% l0 K- n: e2 y6 D9 j0 \
  6. CPU_TS ts;0 o' F# v3 w' C; L3 _4 D8 X
  7. ) L% s: ~( ^+ A$ n
  8. u8 flag = 0;
    ) B* P7 H1 S9 z6 x& r
  9. u8 *pdata = NULL;
    . E/ B. d6 _8 c. ?2 |6 j' {
  10. char *p = NULL;
    2 H7 T: t% }6 q
  11. OS_MSG_SIZE Mes_size;9 i5 i3 d. f8 L6 I

  12. 6 W' {, \+ G4 q
  13. p_arg = p_arg;
    ' l, K% ^- @9 m( Z2 H, K" [

  14. 4 T1 O: C7 j. C- j- a! X4 V
  15. 4 |0 b7 U, u0 m) J3 w- q. O# S) I
  16. while( 1 )3 a0 Q8 H. C% e1 G
  17. {
    2 I9 s( W$ Q- S& S
  18. pdata = (u8 *)OSTaskQPend(0, OS_OPT_PEND_BLOCKING, &Mes_size, &ts, &err);+ q( M6 n3 f5 \$ A- ]( ?! c8 s6 i; [
  19. // USART_printf(USART1, "\r\n $%s$ \r\n", pdata); : O4 [+ G5 b6 T2 M+ E9 i; c4 h
  20. if(GSM_Response[0] != 0)
    % Q; \8 a, `6 Q* i/ O2 z, ]8 A2 y! e
  21. {
    . x& G1 Z3 S; y
  22. p = strstr((char *)pdata, (char *)&GSM_Response[0]);' ~% `7 J- `) \! e( a9 {/ P. n* v$ e
  23. if(p != NULL)
    * U! `* g. n5 Z: H; Q
  24. {* @1 g8 X9 d9 b' h' E) O+ d& @
  25. GSM_Response[0] = 0; //相当于标志位# p; w( P6 H6 O) t2 ?
  26. OSQPost(&Q_GSMResponse, pdata, 1, OS_OPT_POST_FIFO, &err);
    ' L3 R& h2 i) k& A- s* S5 s
  27. flag = 1;
    & T8 v! }! x7 Y6 l/ l6 `
  28. }' r2 R6 ^9 f  _
  29. else
    ) h0 t4 u* {% h; [4 e
  30. {
    0 B2 K+ [2 o7 e, ?& T2 N/ A
  31. flag = 0;
    5 w/ I+ C# ]! P
  32. }
    & g7 i' V! X, c2 L
  33. }
    2 c- V4 M' N' {' Y: k( u0 J

  34. 1 {. l' s# C. l% J- W$ ]8 N
  35. if(flag == 0)! @+ \) B4 J* o) H& i
  36. {2 z+ o. S- h: h
  37. if(NULL != strstr((char *)pdata, "+CMTI"))
    ) u) T0 C/ v& l' q% b5 F' C+ p
  38. {+ d+ e/ [8 ]# L  f5 E+ T
  39. u8 mesaddr[3];/ K5 L6 p2 [! ~
  40. $ {" P6 P6 P( Z5 i$ y1 L
  41. mesaddr[0] = *(strstr((char *)pdata, ",")+1);2 J4 p' V! k4 L- T
  42. mesaddr[1] = *(strstr((char *)pdata, ",")+2);
      J/ J1 N7 A8 u& \0 H- [9 D) ^
  43. if( mesaddr[1] >= '0' && mesaddr[1] <= '9')
    6 ]5 h7 H9 }7 D* {* C  [$ A5 p2 g
  44. {
    5 m' i  \  F& A4 a% F: v; s
  45. Messagenum = (mesaddr[0] - '0')*10 + (mesaddr[1] - '0');
    # Z4 i. S6 b- q6 a
  46. }
    ' ~/ d+ R0 s5 R- R; l- f0 D
  47. else
    ! g) H% Z  Y( e9 f6 T2 S# i2 z
  48. {+ b( o9 d: K! F1 W6 u; {  G
  49. Messagenum = (mesaddr[0] - '0');
    ' K8 F7 S. Z3 U! P* o
  50. }& U- Y6 g) F" ^$ F1 q/ e) P9 H. J
  51. Messagebuff[Messagenum-1] = 1;
    3 `8 I6 ^. U& b9 w4 U9 g4 v

  52. : n+ r2 ~  p( W
  53. OSMemPut((OS_MEM *)&MyPartition, (void *)pdata, (OS_ERR *)&err);( U7 M  E7 c) \: L0 o) J$ K

  54. 7 e+ P2 k2 t7 `+ M/ `+ I
  55. OSFlagPost(&MessageFlagGrp, FlagNewMessage, (OS_OPT)OS_OPT_POST_FLAG_SET, &err);* t2 H, r: C) q& a

  56. 9 l! M/ z6 I5 e6 O: E
  57. }+ U6 y/ J5 W& X2 u7 ?& v
  58. else if(NULL != strstr((char *)pdata, "+CLIP:")) //来电
    % H+ i) l! t$ s6 g) H6 b' w
  59. {" I9 C2 O4 r2 Q* ?4 Q
  60. u8 *p1 = NULL;& }  \) m5 `( O  g& g
  61. u8 *p2 = NULL;, L8 G* ~+ x/ u' Z3 \; p; ^
  62. p1 = (u8 *)strstr((char *)pdata, """);
    ! ^3 r! v2 L5 Q; S# r2 f- Z8 Q
  63. p2 = (u8 *)strstr((char *)(p1+1), """);6 F) ~0 ]0 O% M- _% S! g9 F" O5 Z6 j
  64. p2[0] = '\0';
    ( W9 L$ U0 W" i0 d/ h: b; J" }
  65. strcpy(RingNumber, p1+1);, H+ ]/ |$ @7 W
  66. if(!WM_IsWindow(WinPara.hRing))//判断当前激活的窗口# Y9 ^' o( Z2 n
  67. {
    0 n8 X% @% \: r4 n
  68. WM_SendMessageNoPara(WinPara.hWinMain, MY_MESSAGE_RING);$ ~" U! p) j4 ^  j' }
  69. }7 X7 F  |% e) L7 |( v% _
  70. OSMemPut((OS_MEM *)&MyPartition, (void *)pdata, (OS_ERR *)&err);# L8 ?. |) F1 D" n: j
  71. }' q! F+ X; c$ y, k) ?4 z" G
  72. else if(NULL != strstr((char *)pdata, "CLOSE")) //网络断开连接, T0 n; p  F" L( @4 D+ @# ~  l
  73. {
    2 W: U% N! M- J: q! {1 ]: y2 d  c
  74. OSFlagPost(&GPRSFlagGrp, FlagGPRSConnect, OS_OPT_POST_FLAG_CLR, &err);
      W- T5 U1 D3 L: J2 _' V
  75. OSMemPut((OS_MEM *)&MyPartition, (void *)pdata, (OS_ERR *)&err);
    * W  }2 z" X* w( z1 S
  76. }
    3 N# S3 C6 W, @8 D
  77. else if(NULL != strstr((char *)pdata, "NO PIALTONE")) //无拨号音& O3 O9 k3 M# A& Q% y- F
  78. {
    & p. E: k5 {' n) Q1 B
  79. WM_DeleteWindow(WinPara.hCalling);2 @& P$ p; @  M6 y4 e7 |/ q
  80. WM_DeleteWindow(WinPara.hRing);
    % _8 n2 C3 R& U. t' y+ L% S
  81. WM_DeleteWindow(WinPara.hPhone);/ Z2 K9 @3 p! U' @% ^" v  Q

  82. 9 d  H  H0 A- x) `, P3 O! a. |
  83. //GUI_MessageBox("\r\n NO PIALTONE! \r\n","error",GUI_MESSAGEBOX_CF_MOVEABLE);
    ! J9 K. `4 t# m$ J6 y1 S0 b
  84. OSMemPut((OS_MEM *)&MyPartition, (void *)pdata, (OS_ERR *)&err);
    - ^7 ^9 w- e. D% y
  85. }2 E# v5 _( B# z+ \- u
  86. else if(NULL != strstr((char *)pdata, "BUSY")) //占线8 X4 q. z: \! Q; ]( l7 u
  87. {
    1 A$ W1 ]4 a& G5 M

  88. ( Q6 s. E) C  J7 G+ |# M
  89. WM_DeleteWindow(WinPara.hCalling);) L" i8 U% D" e
  90. WM_DeleteWindow(WinPara.hRing);
    3 n9 V$ L3 o' b4 I( }
  91. WM_DeleteWindow(WinPara.hPhone);' v3 u3 K$ J6 ~0 [. l
  92. //GUI_MessageBox("\r\n BUSY! \r\n","error",GUI_MESSAGEBOX_CF_MOVEABLE);) P6 g7 Q8 Z$ Y7 d
  93. OSMemPut((OS_MEM *)&MyPartition, (void *)pdata, (OS_ERR *)&err);& v$ \- N' t7 W) x
  94. }
    1 h6 K, |0 N3 \. v0 Q
  95. else if(NULL != strstr((char *)pdata, "NO CARRIER")) //无法连接) |7 E  J$ F. x; {1 n# N  t0 U/ x3 w
  96. {
    ; C3 A1 y8 E) P1 k& L) C
  97. ! k! [8 K" d) B, i
  98. WM_DeleteWindow(WinPara.hCalling);* k, V2 U1 {; C5 L
  99. WM_DeleteWindow(WinPara.hRing);
    . N% ^$ p% M2 V$ J9 U% b& j: y" p
  100. WM_DeleteWindow(WinPara.hPhone);
    ( ], h7 K& {2 _+ _" V
  101. //GUI_MessageBox("\r\n NO CARRIER! \r\n","error",GUI_MESSAGEBOX_CF_MOVEABLE);; ~# U3 y" F! H/ }# v% B0 U3 ^/ U8 }
  102. OSMemPut((OS_MEM *)&MyPartition, (void *)pdata, (OS_ERR *)&err);" [2 v) b( G( ]" V; A
  103. }  r$ @- e, ^  `/ n
  104. else if(NULL != strstr((char *)pdata, "NO ANSWER")) //无应答
    / s* _, r6 V8 ], a; ]0 e$ w
  105. {
    * X$ \1 p7 C1 O1 m* R9 F
  106. 1 I" S& m! o, a1 M
  107. WM_DeleteWindow(WinPara.hCalling);, v6 A) d# G( n" P# ^! h
  108. WM_DeleteWindow(WinPara.hRing);
    . \3 h& b: f' e7 z6 `
  109. WM_DeleteWindow(WinPara.hPhone);
    + D% Y1 U6 E: J* y
  110. //GUI_MessageBox("\r\n NO ANSWER! \r\n","error",GUI_MESSAGEBOX_CF_MOVEABLE);1 F6 c7 L  \4 D' c. k  _
  111. OSMemPut((OS_MEM *)&MyPartition, (void *)pdata, (OS_ERR *)&err);: j6 j- p8 f$ O$ d4 U( u
  112. }* V0 \& @% P: Y3 z* d* D
  113. else if(NULL != strstr((char *)pdata, "NORMAL POWER DOWN")) //无应答2 w( \" b) K+ D8 b
  114. {
    $ ?: N4 V5 u5 w4 F" R
  115. Sim908_Reset(); //掉电后复位
    2 ~( f: N8 m, k6 }: q. C7 r" z
  116. OSMemPut((OS_MEM *)&MyPartition, (void *)pdata, (OS_ERR *)&err);
    9 s+ Q! ]! \& R: R& |  \$ X$ }/ r
  117. }4 B; e% A' |) c/ |; S
  118. else //其他未用响应
    ) M' _5 l1 o) y
  119. {% V  i' `4 s$ ^: b, e, A
  120. OSMemPut((OS_MEM *)&MyPartition, (void *)pdata, (OS_ERR *)&err); * o- r2 J# V! v6 a( T) ]
  121. }
    - ?7 n( w4 _7 J$ @2 [
  122. }/ t, o6 ]2 S8 n4 A: m, M
  123. flag = 0;& b: S0 K) g- c$ p( h; a7 _
  124. }0 b6 R# ?' j  T7 m
  125. }
    ( q3 m: [, Q$ x( Z( N! v! ]
  126. 1 i. H* r& O) i2 U, ^
  127. : X! Z+ h$ s7 ~8 H+ X6 b( X

  128. / R& G0 i7 c8 t6 M
  129. /*3 U( D: e. _0 U
  130. 描述:短信处理任务9 }' T5 H* S' |
  131. */
    # ?) ]6 \4 y1 y% q8 P
  132. void Task_MessageHandle(void *p_arg)
    - r/ K; U+ E( [: |$ c
  133. {
    8 p: \7 j! k9 B- Q# t2 P
  134. u8 i; - ]0 q$ {( z+ j- o: K
  135. OS_ERR err;( u" u' G6 r0 w1 c- t/ G
  136. CPU_TS ts;
    0 h- r3 r' A8 u1 [- A3 e  A
  137. OS_FLAGS Flags_Rdy;
    : y: S7 v) ~& G0 y

  138. 6 R6 A6 E) q7 X* u, L; W  }
  139. ( `1 W6 c/ W# b$ `" e7 ]) b+ o& N
  140. while( 1 )
    2 Y9 j5 ?5 |3 ^9 q  q) }
  141. {7 l6 J# W+ S; E# j% u2 ?0 s7 O
  142. OSFlagPend(&MessageFlagGrp, 7 J% K. y9 V9 h! @  N( m
  143. FlagMessageFull + FlagNewMessage,
    . k: Q# ]( t6 I" s
  144. (OS_TICK)0,
    ' L4 A3 Z# j: E! e9 a- v
  145. (OS_OPT)(OS_OPT_PEND_FLAG_SET_ANY + OS_OPT_PEND_FLAG_CONSUME),4 i  |+ p4 B: F8 L4 B2 D
  146. &ts,0 ~. j, E1 s7 m
  147. &err);
    : S+ g3 a# P3 Z3 p) }: [

  148. * i1 y% C2 x3 l1 k* q) _0 ?/ @1 p
  149. Flags_Rdy = OSFlagPendGetFlagsRdy( &err );$ z/ z4 @* }; y7 s. D

  150. + K& z- b0 ^& h5 k' Y1 Y
  151. if(Flags_Rdy & FlagNewMessage) //有新短信
    0 m% i. l! D( g# t" V/ L& \8 d
  152. {
    1 C3 d' s! F( a0 ?
  153. for(i=0; i<50; i++)
    : C3 M! w7 u- b1 H% y" z! h8 x1 Y
  154. {! U$ W( r% @7 t$ y7 O1 j
  155. if(Messagebuff == MESSAGE_UNREAD)6 L0 F( ?9 H( _4 M
  156. { # g# C4 T4 q1 J% S
  157. if(SIM_ERR_NONE == Sim908_ReadMessage(i+1, MESSAGE_ENGLISH))
    , b8 _0 Z$ J% Y, h
  158. {3 o' H, a& X1 K( v, O( \5 d

  159. - y5 {& P* ]0 |9 y( W! g
  160. Messagebuff = MESSAGE_CMD;
    5 i5 N: Y; g# g$ N6 g; H

  161. : ]6 a. K) ~, S9 e
  162. //I2C_EE_BufferWrite(Messagebuff, MESSAGE_FLASH_ADDR, sizeof(Messagebuff));
    0 p3 @7 W- i0 x( \4 g7 H7 L
  163. }8 N" s5 k7 f; t% R
  164. else
    $ V: z* k$ R; [
  165. {
    0 M# w7 {' N: i$ Y. r' |4 O
  166. u8 databuff[300];0 `) G. `& m7 }; M6 b7 x  ^4 k
  167. Messagebuff = MESSAGE_NOTCMD;/ ]" n7 ]3 V* ^- H1 q
  168. myres = f_open(&myfsrc, "0:/messages.txt", FA_WRITE | FA_OPEN_EXISTING);
    0 t# Y* ^6 P. R$ Q* {- m1 O
  169. myres = f_lseek(&myfsrc, myfsrc.fsize);
      _' i  i. W( P1 l. x
  170. 4 @# P* ?/ B& g+ L; H
  171. sprintf(databuff, "20%s\r\n", MES_STR.Time);
    " `9 P. {6 j" x' ~/ n/ p
  172. myres = f_write(&myfsrc, databuff, strlen(databuff), &mybw);9 J# `6 D( a" ?2 k$ M9 u  z
  173. //USART_printf(USART1, "\r\n %s \r\n", databuff);
    0 z# f! F( P0 k+ J, |
  174. sprintf(databuff, "%s\r\n", MES_STR.Phonenum);
    * B/ L; y, r8 _2 U* w6 j5 Y! O) w
  175. myres = f_write(&myfsrc, databuff, strlen(databuff), &mybw);
    & e4 _  M( o. l8 h. d) D
  176. //USART_printf(USART1, "\r\n %s \r\n", databuff);+ O* G; N0 E9 S. U
  177. sprintf(databuff, "%s\r\n", MES_STR.Message);
    ' t5 \7 ^$ C0 I4 T6 L
  178. myres = f_write(&myfsrc, databuff, strlen(databuff), &mybw);
    ) F, m1 w, W/ b2 r
  179. //USART_printf(USART1, "\r\n %s \r\n", databuff);
    ) j9 L$ H( {- G& U- P* B
  180. f_close(&myfsrc);; R" e$ ]1 p$ q5 N( B: C# w
  181. ( `0 n9 H$ q+ q/ f
  182. //I2C_EE_BufferWrite(Messagebuff, MESSAGE_FLASH_ADDR, sizeof(Messagebuff));
    % J& c8 y# ?) u4 g# L* S

  183. ' `' g+ v# A" W  x1 w
  184. }
    + t: ~4 G( l- e+ L+ X2 U; u
  185. if(i > 40 )
    5 F/ S) r) k5 G+ B# }0 v. ~& A
  186. {
    $ N) l. m) h) n$ I
  187. Sim908_SendCmd("AT+CMGDA="DEL INBOX"", "OK", 100, NULL); //删除全部接收的短信
    * T  z6 e. u6 K' B
  188. }0 M/ n$ l* B$ m3 M
  189. }1 M0 h6 `: ^6 J8 M
  190. }$ ~( @/ L, z; ~8 \- m* Z( f
  191. }
    0 Z2 S' b+ S0 j& k: u9 d
  192. }& a5 E8 U5 j1 {3 l( v+ B' q3 x
  193. }! f) z% D- w+ w3 b3 T
  194. " r( r4 I  b  p) s: ?- @* J5 V

  195. # d" O3 c, b7 I1 R# f7 C% M
  196. /*( w! w/ q' E; X; S3 A: J
  197. 描述:电话处理函数) D) [9 ~0 W% s% V
  198. */
    " H' e- X1 H. l5 ?+ a" m
  199. void Task_PhoneHandle(void *p_arg)# [6 r% Q- f! ]- p* W* H7 w* a3 x
  200. {
    ) d$ L2 b! h! ~+ D
  201. // OS_ERR err;
    / r; V6 |" `% R8 @
  202. // CPU_TS ts;1 ^5 @  z" I4 [6 n
  203. . F" S. P) S3 ~  U1 T# z  V
  204. while( 1 )
    6 ^" A8 ?- Y- K+ r( x
  205. {& T' t" u) b* q& o
  206. ( v3 D* O( y# u9 \1 }2 g/ s
  207. }
    4 G5 d# _( M4 t* ~( `
  208. }% C$ M' M  ?+ x! }# H0 ^2 p; f$ v. H

  209. 9 y" g& k( n& f0 D

  210. * n' b) m8 E& a- B* @. ~# X

  211. ' u; D5 z+ H  N$ p
  212. /*" z0 E3 _% D7 A% Q
  213. 描述:GPRS处理任务8 @2 T+ n; W) k$ G5 h. D$ d& S! w
  214. */- G! a5 q, W6 W! _2 O
  215. void Task_GPRSHandle(void *p_arg)
    ! b1 `0 T2 I" f6 ~+ H
  216. {3 R; g4 w% N" Y  B4 c/ b2 v3 t
  217. OS_ERR err;
    & U8 n3 M. z$ w$ u0 h9 A0 n  N/ x
  218. CPU_TS ts;
    6 A5 ?, }6 K$ [6 z: ^. V8 r, ]
  219. OS_FLAGS Flags_Rdy;
      |6 k# k* h* U/ _
  220. u8 gpsdatabuff[100];
    . w) g7 u4 a% [3 i6 l
  221. p_arg = p_arg;, A" ]1 c  ^1 h) d
  222. OSTimeDlyHMSM( 0, 0, 13, 0, OS_OPT_TIME_HMSM_STRICT, &err);5 D6 a; H, L) [$ K& @! h
  223. //Sim908_TCPClose();4 f* P" b4 g9 Z) L* W' S
  224. //Sim908_TCPConnect("175.6.4.74", "40487");8 U3 w0 \" o2 i
  225. while( 1 )
    3 ~, N, O. J- n$ Y' ^- j0 U! x
  226. {' Q! T7 }  A, x4 I
  227. % j5 N7 [& x# J8 I/ }, |
  228. OSFlagPend(&GPRSFlagGrp,
    ' T! ~$ P3 G, |5 r6 u) [
  229. FlagGPRSConnect,
    $ H6 t" v: m. h2 d, `+ @, l+ ^
  230. (OS_TICK)0,* \1 {# G, B- o5 N' z: o* b
  231. (OS_OPT)OS_OPT_PEND_FLAG_SET_ANY,
    4 v: w! j0 I3 O& A
  232. &ts,4 I, {- X. S" T0 ^9 K! a$ ~/ y
  233. &err);: y& A, A/ z- D5 l' g  a# l5 l

  234. ' p4 U! U# ~& V
  235. Flags_Rdy = OSFlagPendGetFlagsRdy( &err );- R) f/ ~; [0 m

  236. * h6 G- d% r: [0 ]
  237. if(Flags_Rdy & FlagGPRSConnect)8 [6 u1 u! Z6 I& |3 E; l0 K
  238. {
    5 t6 ~% o4 D- `9 O" L) }
  239. + U* [% O9 Z& D, t3 c
  240. if(SIM_ERR_NONE == Sim908_GetGPSInformation(&GPS_STR, gpsdatabuff))
    , D5 I5 b0 s' w
  241. {- d0 X# K7 E  i$ S+ X0 }
  242. Sim908_TCPSendData(gpsdatabuff);  r" R6 S5 n% F& S! F! a; a& l

  243. . x2 Y; O& x& E8 y8 K% {
  244. }
    ( g1 r( Z; j- n5 T' o# q
  245. else
    ! q* f# T, u3 Z( G* s+ C4 v
  246. {
    3 L$ T6 V4 ?9 L/ K& r( m; E
  247. Sim908_TCPSendData("还没成功获取GPS数据,请稍候");( R, x; e+ [: W- `" Z; B' C) Y; t
  248. }0 _' R7 L; |6 I* k
  249. " E9 ?/ y, u- L1 W, o
  250. //Sim908_TCPSendData("AT+CGPSINF=32 32,063824.000,A,2256.040527,N,11203.090490,E,0.00,0.00,040914,,E,A OK");
    ! q( O8 d+ J1 e3 f# j3 \7 _4 p
  251. }: y6 s! A/ X2 [" b0 Y/ t4 [
  252. OSTimeDlyHMSM( 0, 0, 2, 0, OS_OPT_TIME_HMSM_STRICT, &err);" ^  J' ~( H, f& U4 B8 h( O
  253. }
    $ C! S+ S3 y( c
  254. }
    4 W  k; Y! r4 ~' M& N
  255.   A8 r8 X7 O7 X6 }

  256. 5 x, s  Q1 O1 @5 l
  257. 4 |3 C  P/ P5 U5 [2 K% q% p+ ]9 R

  258. ( Y, V7 N$ {* l5 w( a4 m6 @% I' m
  259. /*4 H3 b+ i" M0 l- X9 m( _1 u
  260. 描述:定时器1的回掉函数 ' x1 _% a7 Z5 X* I+ @# r$ ~
  261. */
    + X2 {% _" C7 E1 S4 V
  262. void TmrCallback_RTCUpdate(void *p_arg): `7 J: g& e# \5 U' r' A) e# M0 e
  263. {& J4 P* k3 P1 J3 E) s% c% K
  264. // OS_ERR err;
    ( U9 k  g* h. O! R
  265. p_arg = p_arg;
    8 K& |" R" l; e) I7 I
  266. if(WM_IsWindow(WinPara.hWinMain))//判断当前激活的窗口
    . c( _* w5 `: v5 z5 e4 T1 k
  267. WM_SendMessageNoPara(WinPara.hWinMain, MY_MESSAGE_RTC);//向主窗口发送时间更新消息
    , V# Y5 Y7 R) O2 N; q, u) W
  268. if(WM_IsWindow(WinPara.hBkWheel))! P5 l( a4 f7 T3 x) V6 f& o
  269. WM_SendMessageNoPara(WinPara.hBkWheel,MY_MESSAGE_RTC);//向调节时间窗口发送更新消息+ [) u9 V" m1 J4 x! ^
  270. , Z0 h4 p) \( F5 X! K+ I& F
  271. }
    6 Z; a+ p. `7 D; m, |. Q1 r- g
  272. ( |0 ?7 ]& r) Q6 A, R
  273. ' Q* R6 M2 J. L! N
  274. /*  E; |. X& j0 T& i
  275. 描述:GPS校时任务/ D3 _, F; C' {7 N; B8 _" ]
  276. */
    7 h6 ~- s0 ]: J7 @
  277. void Task_TimeUpdate(void *p_arg)
    . M5 Y3 G" X  ^2 S
  278. {
    , t* u! E) L7 X9 J, K. K4 @
  279. OS_ERR err;$ K" n$ I6 Z" M' }

  280. 3 O4 p+ k: W' o" V9 z! F

  281. + f$ f/ b9 ]3 Q' k; J
  282. while( 1 )
    3 w+ h6 W, N* ]4 D
  283. {1 U& |& U- _) j1 ^- X
  284. if(SIM_ERR_NONE == Sim908_GetGPSInformation(&GPS_STR, NULL))
    4 m% c7 A; X, B% t; V( k! Y
  285. {/ M+ q! |6 @: P7 O2 W
  286. //USART_printf(USART1, "\r\n TimeAdjust \r\n");
    5 s8 ?% [7 T: S  S9 x3 }
  287. RTC_Config();  D4 u( @* z5 n
  288. Sim908_TimeAdjust(&TIME_CALENDAR);. P9 g& r4 X$ R% R0 n$ c" G, R
  289. OSTimeDlyHMSM( 12, 0, 0, 0, OS_OPT_TIME_HMSM_STRICT, &err); //延时12个小时
    ; ~4 ^. z9 z8 b) j2 H" F
  290. }
    0 l0 O$ k8 `6 t1 B( g" w1 S
  291. else2 Q9 I, _9 ^' W) R: p1 I
  292. {) [2 v% W$ Y) N0 b) y
  293. //USART_printf(USART1, "\r\n GPS not ready \r\n");" A& v& `6 d' j2 x: W& e; F
  294. OSTimeDlyHMSM( 0, 0, 30, 0, OS_OPT_TIME_HMSM_STRICT, &err); //延时30秒
    ( W& `7 X$ m6 g6 @, M" X
  295. }
    # t4 L& R( T' K" q3 k- H
  296. }  I9 L; L; [2 q
  297. / B8 d! o/ W6 x# c  z
  298. }% [9 n" U, v9 x8 C2 k

  299. : e6 X0 c. {9 k3 U$ f7 b2 T
  300. $ O4 f; i0 G; Z7 |
  301. /*; j* G3 v6 ?% b. c: _5 u) a
  302. 函数名:Task_SimCheck
    - \1 \) t0 _' ?) T# c9 \4 A
  303. 描述: 检查sim卡的相关状态
    6 I) O, U% S7 f1 P
  304. */7 U8 n4 A$ F) C& ?4 T
  305. void Task_SimCheck(void *p_arg)7 m/ C$ o8 l, e: {. @& p% T7 l/ r
  306. {
    . P! m. g5 J0 J" N* A
  307. u32 i = 0;
    % A$ M2 P( v9 m, X
  308. u8 *p1 = NULL;
    9 q+ e8 \8 q0 a' i/ V( V; E
  309. u8 *p2 = NULL;/ D6 u+ U& v& L' g3 F6 A

  310. * R/ v7 W: s+ }4 ^0 p4 V. e
  311. u8 databuff[20];
    ! v( y5 j# `% i# Z9 K3 g
  312. OS_ERR err;
    4 x+ {( ~) ?, W4 @5 f

  313. + I# r6 g- ~$ @( L( V" }/ e! ]
  314. Sim908_Reset();
    % Y4 E9 k  M$ t- _7 D
  315. OSTimeDlyHMSM( 0, 0, 10, 0, OS_OPT_TIME_HMSM_STRICT, &err);
    8 {$ U, d# H! H* ~
  316. Sim908_GPSSet( 1 );
    % I8 P$ N! x' |  @  B
  317. Sim908_SendCmd("AT", "OK", 50, NULL); ' G3 j  H2 }) M; Q, ?* c
  318. OSTimeDlyHMSM( 0, 0, 0, 10, OS_OPT_TIME_HMSM_STRICT, &err);
    $ j/ {; M7 x# k
  319. Sim908_SendCmd("ATE0", "OK", 50, NULL); //关闭回显" B9 p7 [! _6 }2 j/ d8 Z% B- |$ E5 E
  320. OSTimeDlyHMSM( 0, 0, 0, 10, OS_OPT_TIME_HMSM_STRICT, &err);
    8 h. d2 Y, w8 V
  321. Sim908_SendCmd("AT+COLP=1", "OK", 50, NULL); //开启被叫号码显示
    8 i$ a! j" i0 ~/ t7 F: Q
  322. OSTimeDlyHMSM( 0, 0, 0, 10, OS_OPT_TIME_HMSM_STRICT, &err); / c3 |! W8 P& n7 ]% V; S6 [
  323. Sim908_SendCmd("AT+CLIP=1", "OK", 50, NULL); //开启来电显示+ ?" O& C& m! C. j. U
  324. OSTimeDlyHMSM( 0, 0, 0, 10, OS_OPT_TIME_HMSM_STRICT, &err);
    # `% }$ T/ H4 B6 ^/ E3 O

  325. ' b5 W0 ]9 o* t) l4 ?
  326. //Sim908_ReadMessage(5, MESSAGE_ENGLISH);
    - b. ]- H0 z* d) F2 a2 a% }* C
  327. 4 L: s$ q7 Z. ?- e5 |$ I
  328. while( 1 )9 s; e! }- O) a" i2 K
  329. {+ |, T$ z3 y7 ?. [, ~
  330. //USART_printf(USART1, "\r\n breath \r\n");
    $ @) H: z0 O0 G- @1 L& i: \
  331. 0 Z7 b  x2 t/ N+ L7 z. \% x6 n; {
  332. 8 a* w9 g" n2 J/ F4 M' M6 P. m
  333. if(i % 1 == 0)
    ( e- w+ Y: i4 ~6 G
  334. {4 S( n1 ~9 s+ h
  335. if(SIM_ERR_NONE == Sim908_SendCmd("AT+COPS?", "+COPS:", 50, databuff)) //检查信号' G( u  O) M6 C% v. E& ~6 G9 z
  336. {
    4 s1 I+ u( P5 `: w
  337. if(strstr(databuff, "CHINA MOBILE"))3 a2 c! i3 S" C2 g- }
  338. {# S% x& e+ c/ F! m
  339. Sim_Operator = 1; //标志运营商为中国移动% w2 C( u4 p. H0 W- F' O! Z0 C; X
  340. WM_SendMessageNoPara(WinPara.hWinStatus, MY_MESSAGE_OPERATOR);
    ! @) j' G; ~4 O; V/ ~3 N
  341. % t9 L' R6 m( R1 c' A
  342. if(SIM_ERR_NONE == Sim908_SendCmd("AT+CSQ", "+CSQ", 50, databuff))! l" a3 A7 I6 f5 f& e
  343. {
    2 d0 M; B- _# Q
  344. p1 = strstr((char *)databuff, ":");6 F% M0 j6 X' _9 x4 U5 p' K- X
  345. p2 = strstr((char *)p1, ",");2 P, H) S- W1 p7 d5 ?+ l/ h
  346. p2[0] = '\0';
      x2 I8 O$ c& {; h
  347. strcpy(Sim_RSSI, p1+2);
    6 @" G: {3 z5 _
  348. WM_SendMessageNoPara(WinPara.hWinStatus, MY_MESSAGE_RSSI);
    6 Z) b9 I9 b) J+ c
  349. }
    ; r- c/ ]1 A0 W% ?
  350. }
    + D" E! P- `$ r: A' s
  351. else
    1 ?( }& r. S! Q" m9 G3 v
  352. {- }; P- y( i* A( w
  353. Sim_Operator = 0;! J% R0 {- @9 t1 @
  354. WM_SendMessageNoPara(WinPara.hWinStatus, MY_MESSAGE_OPERATOR);
    4 I6 C0 @( Q( V  T
  355. } ( B$ t' R' m/ T  N4 A
  356. }8 C, h3 z0 y/ F# r6 Q4 w: B/ @0 y
  357. }
      `2 v% B$ g6 [/ E0 G
  358. ) m" a  t% e, W' I  {
  359. if( i % 1 == 0)" s+ J7 x; W6 t! u9 U% h8 o0 i( @* t
  360. {) I( x! q4 ?1 |4 m" X5 ~1 [
  361. if(SIM_ERR_NONE == Sim908_GetGPSInformation(&GPS_STR, NULL))
    * L5 U  z5 B( `; P
  362. {, K# ~& W" i, x6 j0 V5 J5 Z
  363. Sim908_GPSConvert(GPS_STR.Latitude, GPS_STR.Longtude, LOCATION);, F, A! z% E' i8 B5 ]* f! D
  364. WM_SendMessageNoPara(WinPara.hWinMain, MY_MESSAGE_GPS);
    2 n# G) T$ w& @" f
  365. }
    ' e# T( A" l5 b# ~* M  n
  366. else
    7 V2 `+ n% m7 `" k6 g
  367. {. N2 T6 [0 i$ p- m7 |( y& R, \  N
  368. strcpy(LOCATION, "NO GPS INFORMATION");/ q4 f: ^& l' |1 ?4 h
  369. WM_SendMessageNoPara(WinPara.hWinMain, MY_MESSAGE_GPS);! T( Q3 E- R/ h( f! z* L' K$ r( }
  370. }  u/ _& r3 q) f+ |; N2 V3 M0 e+ V
  371. }( w0 M: g( t. u9 P+ b
  372. if(i % 6 == 0)
    7 b' I$ R5 p& y. b7 N6 y+ q! d6 [
  373. {
    5 Q% F- t) y1 g1 I) ^! v
  374. if(SIM_ERR_NONE == Sim908_SendCmd("AT+CBC", "+CBC", 50, databuff)) //检查电量2 S5 ]' I8 t9 D: W) z
  375. {
    - Q- h& n6 W/ t
  376. p1 = strstr((char *)databuff, ",");  g* b- m( H+ p5 \: L
  377. p2 = strstr((char *)p1+1, ",");" s, L1 S- o1 c, M* v
  378. p2[0] = '\0';
    9 b# c& E, z* ]5 l" u
  379. strcpy(Sim_Battery, p1+1);& l7 ^9 l3 K! J
  380. WM_SendMessageNoPara(WinPara.hWinStatus, MY_MESSAGE_BAT);
    : V# [% X/ p0 Q: L. u
  381. }: Q- [( ~( o' Y
  382. }8 y! f* N. d" k5 B- q

  383. ! Z) s8 K; Q3 q! S2 ?
  384. i++;
    6 L$ B" B2 _) ?! y
  385. if(i >= 1000)# u# _& i: m/ ~- Y" O% [
  386. {" f- s3 Y2 r) y, P1 t3 X
  387. i = 0;
    + _8 N; M  t- K0 ]& K& t9 j
  388. }
    $ g( v! |  c8 x
  389. OSTimeDlyHMSM( 0, 0, 10, 0, OS_OPT_TIME_HMSM_STRICT, &err);
    2 q7 m' g! G) _+ R3 ]  `
  390. , q% L/ R* v# T8 o
  391. }" u& n" h0 T/ @! F
  392. }% B- p" m, }; {

  393. $ _2 ?$ g: V2 e/ F

  394. - X$ _8 g* k  U

  395. ! R: \" H! y8 P3 w5 x3 p. b* U: O9 }
  396. /*
      ~: X2 C  ~) u
  397. 无线处理任务
    , s/ [' d: W1 K/ w4 h2 e
  398. */
    7 h- e  q- s# Y; W/ S5 K
  399. void Task_Wireless( void *p_arg )
    - h  H6 l4 W; z* m) ~7 _
  400. {! Q+ \7 B& z0 v1 X* @0 m
  401. OS_ERR err;
    ; s/ X' Y( _7 L
  402. u8 *pdata = NULL;- W0 t  I/ e& f4 W8 a
  403. OS_MSG_SIZE Mes_size;/ R3 q) O0 n* ?7 Y
  404. CPU_TS ts;7 m9 @5 C; |* B" h3 u

  405. 2 r' U6 y) M  s, K1 D1 ~! Q5 i; R
  406. while( 1 )
    " y& B$ G4 ]4 ^
  407. {
    / S5 F& O# p+ G3 j$ A* |
  408. pdata = (u8 *)OSTaskQPend(0, OS_OPT_PEND_BLOCKING, &Mes_size, &ts, &err);6 h4 a2 S+ p- ^8 h' N
  409. if(NULL != pdata)% R% z1 c& o/ ?5 Q6 f" Z
  410. {5 Z) m& H, h8 U% d8 _
  411. //USART_printf(USART1, "\r\n 接收到 %s \r\n", WirelessBuff);
    ) H! I8 l1 J5 L" v9 y& }
  412. 4 z, z5 ?+ j5 M4 Q9 g

  413. : [& x$ F0 u1 E* i
  414. 2 C/ V0 Z' c' z
  415. }
    ( _- ]  q1 D. t0 a4 F, [
  416. }
    6 K" I5 P5 A" U& B9 o; G
  417. }: R* A0 k4 Y8 P# c
  418. & w- B. X" u3 E. m! |/ o

  419. 0 ^: N. L- F+ }  Y1 w  O
  420. /****************End of file****************/
复制代码

. _7 V# Y) Y' A7 W1 p
aderson 回答时间:2015-1-8 22:06:44
不要用鸡蛋那么大的芯片 不然小不了下来的。
zhous 回答时间:2015-1-8 22:43:43
智能手表用STM32F103???靠谱吗
晓枫VS枯叶 回答时间:2015-1-9 08:32:30
楼主你的代码缩进格式怎么全都没有,看的相当费劲.........
颩色四葉愺 回答时间:2015-1-9 10:49:59
adersonl 发表于 2015-1-8 22:064 H3 R7 }% d5 h8 m* u
不要用鸡蛋那么大的芯片 不然小不了下来的。
6 |) t& `* z1 \3 q! G
没办法啊   ram不够用   所以要用到外部运存,这就要用到stm32的fomc的地址线    只有Z以上的才有
aderson 回答时间:2015-1-9 11:28:59
颩色四葉愺 发表于 2015-1-9 10:499 [2 k3 W  o5 G0 J9 z/ {
没办法啊   ram不够用   所以要用到外部运存,这就要用到stm32的fomc的地址线    只有Z以上的才有 ...

' x$ d: Y4 I/ d" k# E5 t' j手表嘛。。8位口模拟下就差不多了吧,不然肯定 是太大或者太厚
MouseCat 回答时间:2015-2-14 10:16:06
基于什么硬件平台的?
deepin666 回答时间:2015-2-14 10:55:22
一头雾水啊
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版