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

STM32 控制GSM模块发送彩信源码分享

[复制链接]
相思谷 发布时间:2015-1-8 22:32
如题,前阵子本人买了一块GSM模块,PTM100,实现了通过STM32控制GSM模块发送短信及彩信;
' K2 w! n. X, s. C, o7 L* s, k7 Y1 l趁此机会将源码上传与大家共享,希望大家拍砖  8 B) t2 b) A" @1 ^. v4 N
PS:发帖字数有限,只能发了main函数部分,其他部分在附件中,大家可自行下载查看
2 L. J" D- G( K  {' h
' P, A' E+ |# n- f9 Eint main(void)1 P- R) g9 h( m
{        2 l6 g1 X! C; q* u0 p$ g# L
        u8 count_error=0,GSM_Init_Flag=0x00;
+ r0 f- E+ ^3 A; `* S) V        u8 length;& G. C; d/ X4 {  ~
        RCC_Configuration();
6 d  q; t, ]+ Z        GPIO_Configuration();         + {3 i/ p+ L5 O$ ?# T% E
        NVIC_Configuration();
' l/ T$ t' u! Q0 [3 D        USART_Configuration();0 r! u1 j& b9 b3 [- V& Y
        gsm_count=0;% n; ~; A( I7 f  k1 W2 I5 @
        GPIO_SetBits(GPIOA,GPIO_Pin_0);           8 O4 J/ ~0 Q% E% U4 f2 H2 X
        GPIO_SetBits(GPIOA,GPIO_Pin_4);
, }* L0 L6 j& Q; [" V) ]+ ~        GPIO_SetBits(GPIOA,GPIO_Pin_5);          
3 s! Y5 Z1 z" Z, e* N. ^$ s1 U+ {9 ]        GPIO_SetBits(GPIOA,GPIO_Pin_6);9 o1 \" Y: L1 s3 _; D, s* F
        GPIO_SetBits(GPIOA,GPIO_Pin_7);          
3 u3 Q' c& R: i" m, @        GPIO_SetBits(GPIOA,GPIO_Pin_8);
% M& m3 d5 J" @9 N5 s3 S        GSM_Init_Flag=CheckGSM();" q! Q8 J9 n6 e
: p1 x5 g. c) N5 ?: S0 \, o  y" e
        while(1)
' u" x5 @4 {6 r1 b& w/ V        {        : U3 \* ?) o8 o+ X- j) t: ]
                if(GSM_Init_Flag==USART_ERROR)                        & L/ |. q8 }% h
                {3 \, H7 G: c0 o: }
                        if(count_error==0)
; ]% r; z4 @, `. L8 Q1 o/ w                        {! v0 _8 V3 b" ]6 ]8 u5 M
                                USART2_SendToPC("USART_ERROR\n",12);: R8 L5 G: n" j! z( K: L0 }# t0 s
                                count_error++;
# y2 T! S1 z3 L5 [                        }) }: j5 _/ L7 {5 P" ]
                        GPIO_ResetBits(GPIOA,GPIO_Pin_0);& s/ d1 y; z; Y( {7 `$ C
                        Delay_us(10000);9 {0 R/ M7 g% r* f, v
                        GPIO_SetBits(GPIOA,GPIO_Pin_0);4 o& Q+ Z# y/ z7 Y! g
                        Delay_us(10000);
8 k4 d/ S: a) ?  R7 @  T3 |                }
- ^2 E9 w& }) ?/ w& U                else if(GSM_Init_Flag==CIMI_ERROR)               
6 ^9 Y/ j; \4 ^1 o- b+ ]' u& J4 w                {7 a) \& Y0 Y, G' p0 E' o* k+ Q
                        if(count_error==0)+ n9 x$ X4 t8 n5 f- N! R
                        {9 ~0 [# M, G. V" D' Z3 p1 w
                                USART2_SendToPC("CIMI_ERROR\n",11);
' E! p- {6 F7 |- l                                count_error++;4 R  C0 v0 {: n8 R; B
                        }" ~' X  N0 r# x& r
                & o  o9 W' C6 v2 |* O& q9 I& l
                        GPIO_ResetBits(GPIOA,GPIO_Pin_4);
# C# g- n$ d3 O( W5 S                        Delay_us(10000);
, w7 B# ^3 D' ~& G7 v2 E                        GPIO_SetBits(GPIOA,GPIO_Pin_4);: ]) n  I% g2 z( y
                        Delay_us(10000);7 y8 C% d& r$ U( n- ~( e7 n+ p) L- p
                }
$ U& C$ V8 a& V7 G! \                else if(GSM_Init_Flag==CREG_ERROR)               
9 z8 I  U6 Q7 G0 t6 N- Y/ d8 @  g                {0 ^, G' D: U8 `8 w$ \/ R2 L# _
                        if(count_error==0)
$ m" \* J$ M* n' j6 r! g9 D                        {$ l1 ]- t! K- F) @
                                USART2_SendToPC("CREG_ERROR\n",11);" t! Q5 R9 U" S! g+ k, Z) Y
                                count_error++;- B. r8 J9 d  H( v
                        }
0 G; @0 w4 i: l+ y. H8 J& E' X                        " g  j, i7 ?4 O. z
                        GPIO_ResetBits(GPIOA,GPIO_Pin_5);
/ j& n9 L, i0 @- P  w                        Delay_us(10000);
% Z# E2 L( U9 r5 m' ^0 X5 c                        GPIO_SetBits(GPIOA,GPIO_Pin_5);( d+ f# p7 v: ^! @; P9 }
                        Delay_us(10000);1 x- V, G- e5 s
                }
& q" }; ?! E9 X& W                else if(GSM_Init_Flag==CSQ_ERROR)                       
2 m* x9 Z; M" F- E" S! f                {  p2 b( |6 j/ r" g
                        if(count_error==0)$ k2 Q6 U! N# H
                        {
- G' [. K8 R: I% I$ T                                USART2_SendToPC("CSQ_ERROR\n",10);
0 o- S$ u1 F7 v  g  G+ L                                count_error++;
3 r# q0 f2 {& W9 T# m! T+ A7 g                        }' b+ ]6 W! y* s8 {) i
                        9 I' m  t. t% I1 l3 M) D0 D! P
                        GPIO_ResetBits(GPIOA,GPIO_Pin_6);$ N9 P8 ?0 K, F% R
                        Delay_us(10000);, f6 ?- w+ I  q, H
                        GPIO_SetBits(GPIOA,GPIO_Pin_6);
6 u# S0 l( n" @+ B+ q                        Delay_us(10000);
1 _$ m6 Z$ O: D8 F6 G                } % W4 v7 _( v/ c4 @% N; `+ N
                else
9 R1 ^1 w4 P* x+ J* x                {        7 c2 D8 q4 i; ]! s0 T8 H+ _8 E
                        count_error=0;
5 J% z$ {! a3 W2 ~- S/ v  w& y                        GPIO_ResetBits(GPIOA,GPIO_Pin_7);                 
8 Q. Q0 f& G- e' L& R  g                        Delay_us(10000);
. X" @0 o% l: }/ ^( r  e1 j                        GPIO_SetBits(GPIOA,GPIO_Pin_7);
: ~6 M/ Z: ]0 F/ m8 p) \                        Delay_us(10000);1 ^! m, {8 e0 c6 _( W& S7 V
                }; g) E2 [  n8 j) x
2 \2 `4 U& `0 M* N3 {5 E! K
                if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_1)==0)
/ M1 X" e! g% B                {
9 V& |. Y" K( `! o                        Delay_us(15000);
9 T( M9 D/ t$ e( }9 ^1 w! M                        if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_1)==0)/ C( g2 K/ b0 Q! W5 e# }
                        while(!GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_1));
0 h6 L/ q5 s* \6 [7 V: X. s                        Message_Send(Phone_Num,Title,strlen(Title),MMS,3286);6 w( q# q+ k' E" j5 F% r
                }- E% O: O- X8 D+ F
                  P1 x5 s9 o, A2 f8 f1 i0 }
        }
' H* n, T1 f2 ?}
" M6 B$ t! i* ?$ ~) j: ~5 k/ x+ R+ \, R; z
  n5 u8 Z& U. {2 b
8 h" _5 R# n) d) x2 V4 p8 h

main.zip

下载

9.47 KB, 下载次数: 101

赞 收藏 评论23 发布时间:2015-1-8 22:32

举报

23个回答
相思谷 回答时间:2015-1-12 15:49:52
qzwx741 发表于 2015-1-12 14:20
. ^5 X) [$ T! d, o2 zDelay_us(10000),大哥这个只是玩玩的程序吧

+ F. O9 k: `! M6 Avoid Delay_us(unsigned int count)
: X2 V6 }' d/ O8 K{3 ^# f! W  h0 C- u' c6 U
        unsigned int i=0;, U0 Q8 `* Q( n2 J3 B/ m: o5 ^$ h* a
        while(count--): B" V  j% k7 a- j% P8 u2 }
        {
# @- i6 f+ B0 m& l, G$ |0 H                for(i=0;i<24;i++);
  ?! d1 O; T  d" G4 T        }
: c. P  S/ z. |6 T8 e! b}) s# E+ ?8 {; |7 u5 M" d0 V  k+ V
) m+ C* S' Z( T
这是延时函数,只是大概延时了一段时间,因为只是自己学的玩的,没那么较真
相思谷 回答时间:2015-1-9 11:30:13
zhous 发表于 2015-1-8 22:40; }# ~; K* x( R' B
可惜GSM模块太贵了,不然我也搞一个
! Q* H8 i7 W" c! t
玩玩还是可以的,总归是为了学习,花点钱也值了
相思谷 回答时间:2015-1-9 11:29:47
zhous 发表于 2015-1-8 22:405 N. D# k! ^! R# }
可惜GSM模块太贵了,不然我也搞一个

4 a  [, I" E, k1 U. L玩玩还是可以的,总归是为了学习,花点钱也值了
zhous 回答时间:2015-1-8 22:40:47
可惜GSM模块太贵了,不然我也搞一个
党国特派员 回答时间:2015-1-9 00:29:03
23.png
相思谷 回答时间:2015-1-9 08:47:55
自己顶一下
默默前行 回答时间:2015-1-9 12:35:50
赞一个。。。。
拼命三郎 回答时间:2015-1-9 12:35:58
支持一下,祝你早日拿到板子
pythonworld 回答时间:2015-1-9 12:38:00
多少银子买的?使用什么接口通信。
巅峰残狼 回答时间:2015-1-9 13:05:28
感谢分享,很不错哦
相思谷 回答时间:2015-1-9 13:23:19
pythonworld 发表于 2015-1-9 12:38
9 U2 G9 a/ X# H" u6 ]多少银子买的?使用什么接口通信。
0 J& [" }% J; q( ^
不到100,串口通讯
相思谷 回答时间:2015-1-9 13:23:36
巅峰残狼 发表于 2015-1-9 13:05
2 e; g7 U# G# P: y# |感谢分享,很不错哦

7 w( V3 J7 ~1 r谢谢支持
相思谷 回答时间:2015-1-9 13:24:00
拼命三郎 发表于 2015-1-9 12:35! j& b! @) C1 M8 o- m+ G  C: b3 I
支持一下,祝你早日拿到板子
& E8 \( {! [! \, D, R6 o4 [
嘿嘿,谢谢
相思谷 回答时间:2015-1-9 13:24:18
默默前行 发表于 2015-1-9 12:35
& X. V5 {& j. U( W0 \赞一个。。。。
( U. M2 `! f/ W! w
谢谢支持
相思谷 回答时间:2015-1-9 13:24:36
1 {# h" u4 K" C- i
谢谢支持
12下一页
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版