|
如题,前阵子本人买了一块GSM模块,PTM100,实现了通过STM32控制GSM模块发送短信及彩信; 趁此机会将源码上传与大家共享,希望大家拍砖 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) { 3 R6 d9 s, J4 i' L: x u8 count_error=0,GSM_Init_Flag=0x00; u8 length; RCC_Configuration(); GPIO_Configuration(); ; H2 r E1 c( J3 H! H) A NVIC_Configuration(); 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); 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 while(1)3 C& @7 E* k+ q2 H; ]" x P8 `8 ] { - e" ]7 E, u. ?) I if(GSM_Init_Flag==USART_ERROR) {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++; }; 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); Delay_us(10000); } else if(GSM_Init_Flag==CIMI_ERROR) { if(count_error==0)4 d7 A" Z5 V5 r/ O$ ] { USART2_SendToPC("CIMI_ERROR\n",11); count_error++; }% K/ j! Z& o0 [( e# | 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); 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 | { if(count_error==0)+ Q/ ]+ u6 Q- j4 B. @$ g { USART2_SendToPC("CREG_ERROR\n",11); count_error++; } % }# g/ ~! Y- t v- x8 t! Y GPIO_ResetBits(GPIOA,GPIO_Pin_5); 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); } else if(GSM_Init_Flag==CSQ_ERROR) : Z1 n1 n$ ]4 G, Y* h! v { if(count_error==0)6 w; q. N! r' [0 _2 r/ f { Q$ \" k$ n+ f* v USART2_SendToPC("CSQ_ERROR\n",10); count_error++; } 4 r, J+ j6 m) P1 S! @4 v' ^ GPIO_ResetBits(GPIOA,GPIO_Pin_6); Delay_us(10000); GPIO_SetBits(GPIOA,GPIO_Pin_6); Delay_us(10000);4 w7 M( I0 C7 i } 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); Delay_us(10000);, K* ~9 r- r4 e+ I% ^' Z* I GPIO_SetBits(GPIOA,GPIO_Pin_7); Delay_us(10000); } 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 { Delay_us(15000); if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_1)==0) while(!GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_1)); Message_Send(Phone_Num,Title,strlen(Title),MMS,3286);/ ~8 b% S2 k. {+ ? } * `" J. n( S' ~; A- H# G }! e/ I) }5 M j' U! z3 \ }) [# D! L1 |; O4 G; e. I / M; ~$ o) u1 p+ u" { |
main.zip
下载9.47 KB, 下载次数: 101
微信公众号
手机版
void Delay_us(unsigned int count)4 N, T# y _- e, w# F" v; _
{
unsigned int i=0;
while(count--)
{+ I7 Z+ Z2 W0 D( r( V$ M4 ~
for(i=0;i<24;i++);
}4 ^* @1 ]+ g f- P; g. Y$ u/ ]
}
这是延时函数,只是大概延时了一段时间,因为只是自己学的玩的,没那么较真
玩玩还是可以的,总归是为了学习,花点钱也值了
玩玩还是可以的,总归是为了学习,花点钱也值了
不到100,串口通讯
谢谢支持
嘿嘿,谢谢
谢谢支持
谢谢支持