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

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

[复制链接]
相思谷 发布时间:2015-1-8 22:32
如题,前阵子本人买了一块GSM模块,PTM100,实现了通过STM32控制GSM模块发送短信及彩信;
: I% x+ Z4 h$ Q% r: y4 e) h趁此机会将源码上传与大家共享,希望大家拍砖  0 R% X' \( R# X  j. w
PS:发帖字数有限,只能发了main函数部分,其他部分在附件中,大家可自行下载查看' X6 c$ Q+ m0 ?" N) m* Q- u7 E0 n5 V) A8 U
7 q- ]6 K6 s" T7 x/ n( }
int main(void)
/ d9 E( f% Y1 ~/ {% x* w* f$ I{        3 R6 d9 s, J4 i' L: x
        u8 count_error=0,GSM_Init_Flag=0x00;
$ W7 Q! t( ^' L2 T        u8 length;
. }; Z( P" y/ o: I- A* u% [        RCC_Configuration();
9 ?; r; t8 n/ z* _+ W9 |) V        GPIO_Configuration();         ; H2 r  E1 c( J3 H! H) A
        NVIC_Configuration();
. |7 P! {* U2 S        USART_Configuration();$ D* `+ h5 T3 H! {  h- z# m: |& [0 R8 Q
        gsm_count=0;% R  v' v  v# T* h  P
        GPIO_SetBits(GPIOA,GPIO_Pin_0);           5 o* s4 Q4 \* {/ J+ ~7 O
        GPIO_SetBits(GPIOA,GPIO_Pin_4);& k5 E! ^. ^$ b5 K
        GPIO_SetBits(GPIOA,GPIO_Pin_5);          
; L: ?; o- O9 J, D3 L: }        GPIO_SetBits(GPIOA,GPIO_Pin_6);( k: c* u6 N# P1 n. S
        GPIO_SetBits(GPIOA,GPIO_Pin_7);             ]) ]5 G1 A) {+ C
        GPIO_SetBits(GPIOA,GPIO_Pin_8);6 f5 p' s4 \$ B2 B& K" n! U
        GSM_Init_Flag=CheckGSM();4 i2 @. l* h# J  R; y; H

5 ~: ^& k0 G! u        while(1)3 C& @7 E* k+ q2 H; ]" x  P8 `8 ]
        {        - e" ]7 E, u. ?) I
                if(GSM_Init_Flag==USART_ERROR)                       
- B' z* C2 t7 l! D                {5 l9 o% l& h$ T0 u2 g
                        if(count_error==0)/ N- n. _' ^0 S* C
                        {. a# y/ ~8 _' U
                                USART2_SendToPC("USART_ERROR\n",12);) y, d$ L2 P1 o% u3 q9 r; L
                                count_error++;
* d% U$ E2 u) G                        }; b9 K& G1 c, r" E2 r& d
                        GPIO_ResetBits(GPIOA,GPIO_Pin_0);( N( H4 q0 A; J5 X0 Z
                        Delay_us(10000);2 O( m% c; N2 O- _5 a) X1 z
                        GPIO_SetBits(GPIOA,GPIO_Pin_0);
5 w) ]! @, K* p; \5 \4 ^0 X& m: M  a' ]                        Delay_us(10000);
& g6 H% ]+ _* B% c6 Z# x) T                }
0 M0 K2 z4 w2 k0 j& r  j" ?                else if(GSM_Init_Flag==CIMI_ERROR)               
) K, X" A6 p  ~# \8 d7 _* m                {
5 p( |( j3 T' P) x' b7 F4 k- T                        if(count_error==0)4 d7 A" Z5 V5 r/ O$ ]
                        {
7 u; f. W  p$ J                                USART2_SendToPC("CIMI_ERROR\n",11);
- P4 e% ?) R* f+ |7 E: W$ O2 M                                count_error++;
9 o' G/ y( I8 y- ^: v2 m                        }% K/ j! Z& o0 [( e# |
               
4 k) T# Z- r; W6 B                        GPIO_ResetBits(GPIOA,GPIO_Pin_4);, Q* o- M( A6 E8 L! a* c* i
                        Delay_us(10000);: [/ C+ q( ?' J; G9 F/ P+ c
                        GPIO_SetBits(GPIOA,GPIO_Pin_4);
: X+ U3 g# J, k$ f                        Delay_us(10000);, k& j7 v0 S5 ]# K- `
                }( \$ o2 ]6 a; m9 |. u" r6 }
                else if(GSM_Init_Flag==CREG_ERROR)                0 t' y: i$ O) p) {1 |
                {
: Z4 d3 c% _' `# @! w; F3 F. o                        if(count_error==0)+ Q/ ]+ u6 Q- j4 B. @$ g
                        {
$ O; p. T0 ?* E* m  e                                USART2_SendToPC("CREG_ERROR\n",11);
1 f7 k. f, [) `+ R                                count_error++;
8 E5 z& V! e) i7 t' b                        }
) Q( b( n& w: l+ Y                        % }# g/ ~! Y- t  v- x8 t! Y
                        GPIO_ResetBits(GPIOA,GPIO_Pin_5);
" Z* v- l8 d6 A" F                        Delay_us(10000);; k) q' e5 g/ U6 n; d+ w
                        GPIO_SetBits(GPIOA,GPIO_Pin_5);# r& ^/ q" X& M- ^, F! F8 {+ E; n
                        Delay_us(10000);
) b# D' E& G4 z- P                }
3 \* h) R# {. j, j2 V" F4 c, }                else if(GSM_Init_Flag==CSQ_ERROR)                        : Z1 n1 n$ ]4 G, Y* h! v
                {
) `  R: }) `% Q- f% L                        if(count_error==0)6 w; q. N! r' [0 _2 r/ f
                        {  Q$ \" k$ n+ f* v
                                USART2_SendToPC("CSQ_ERROR\n",10);
, F  N$ Y& q8 P/ G$ y                                count_error++;
% X$ A5 L6 P. x# c: g                        }
0 `/ L$ C- d  v; `  O- [" q                        4 r, J+ j6 m) P1 S! @4 v' ^
                        GPIO_ResetBits(GPIOA,GPIO_Pin_6);
6 a+ _: A! u: U  N                        Delay_us(10000);
! P: x7 V: j! y3 U3 b                        GPIO_SetBits(GPIOA,GPIO_Pin_6);
: ^' Z% F0 b* |/ i; {+ q; E                        Delay_us(10000);4 w7 M( I0 C7 i
                }
$ v! n( F& o0 |9 }, ~+ s                else6 D9 K0 h* K. ^( p
                {        * {- o& ]* g7 ~5 F& W
                        count_error=0;* `0 L1 u. _( t% X/ R
                        GPIO_ResetBits(GPIOA,GPIO_Pin_7);                 
0 T4 n5 C" _3 @                        Delay_us(10000);, K* ~9 r- r4 e+ I% ^' Z* I
                        GPIO_SetBits(GPIOA,GPIO_Pin_7);
! k! K$ v7 @- g- B3 o: `3 a5 ]  V                        Delay_us(10000);
7 O" n' r% ]9 n                }  h* [' R/ U% A+ g9 q
+ j3 o( _# J3 X8 M2 x
                if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_1)==0): a6 o( g- w9 W7 b
                {
) a8 t8 c% }; L# _4 r0 ^                        Delay_us(15000);
0 p$ Q9 X) r/ A& G) K: A- j                        if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_1)==0)
; \1 x( `* o  _) g* h2 _& C                        while(!GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_1));
1 C+ ~  O! L1 P. }! p                        Message_Send(Phone_Num,Title,strlen(Title),MMS,3286);/ ~8 b% S2 k. {+ ?
                }
+ p- l# N: U2 n% K' n                * `" J. n( S' ~; A- H# G
        }! e/ I) }5 M  j' U! z3 \
}) [# D! L1 |; O4 G; e. I

/ T& `) r# ~6 D: ]6 f" }/ M; ~$ o) u1 p+ u" {

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; U( [- a) e5 H. n6 T6 M+ v
Delay_us(10000),大哥这个只是玩玩的程序吧
+ \/ j: ?* n6 s4 C" c' }
void Delay_us(unsigned int count)4 N, T# y  _- e, w# F" v; _
{
& A7 p( t/ f- |# N' I) d, ^/ E# u        unsigned int i=0;
$ R2 R& o! j+ J/ r. I        while(count--)
. d" M' B% o- _7 m$ f" v, k1 j        {+ I7 Z+ Z2 W0 D( r( V$ M4 ~
                for(i=0;i<24;i++);
2 v7 V- |( R6 y7 ?7 b& p% w2 N' ?; H+ u7 k        }4 ^* @1 ]+ g  f- P; g. Y$ u/ ]
}
+ T+ X) L& o2 d- K3 W0 c
0 g' f9 E) d+ s5 s. z8 t这是延时函数,只是大概延时了一段时间,因为只是自己学的玩的,没那么较真
相思谷 回答时间:2015-1-9 11:30:13
zhous 发表于 2015-1-8 22:40* C9 A; u) j; \% f" }) {" `/ j
可惜GSM模块太贵了,不然我也搞一个
+ m% j( t: b( _2 n0 e$ i3 m
玩玩还是可以的,总归是为了学习,花点钱也值了
相思谷 回答时间:2015-1-9 11:29:47
zhous 发表于 2015-1-8 22:40
9 M- v% r# e& ]* l6 z可惜GSM模块太贵了,不然我也搞一个

1 ^1 M/ |# R, h+ [玩玩还是可以的,总归是为了学习,花点钱也值了
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
4 e5 M4 K' o: A4 w8 d* U: H多少银子买的?使用什么接口通信。
% C- G5 d  R; f4 u  y2 b
不到100,串口通讯
相思谷 回答时间:2015-1-9 13:23:36
巅峰残狼 发表于 2015-1-9 13:05
, o3 M! Q2 ^) T) m. t' \感谢分享,很不错哦

) t; j' _1 S: @7 A( J/ h0 a, A7 @谢谢支持
相思谷 回答时间:2015-1-9 13:24:00
拼命三郎 发表于 2015-1-9 12:35
, ]" Y; n# M" z7 v3 ]; A支持一下,祝你早日拿到板子

" R) e$ N7 F, o嘿嘿,谢谢
相思谷 回答时间:2015-1-9 13:24:18
默默前行 发表于 2015-1-9 12:35
9 e: N* w8 _; _7 H! z1 m4 J赞一个。。。。

4 o6 Q/ m! j9 m# p6 g) L, q0 s谢谢支持
相思谷 回答时间:2015-1-9 13:24:36

( u- o: C6 L7 ~$ [' L" T4 }谢谢支持
12下一页
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版