久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 17909|回復: 41
打印 上一主題 下一主題
收起左側

SIM系列GSM GPRS模塊例程(STM32源碼)

  [復制鏈接]
跳轉到指定樓層
樓主


stm32源碼列表:
1.撥打電話
10.GPRS_透傳模式
11.綜合演示程序STM32
12.GPS測試程序
13.藍牙測試程序
14.手機通過藍牙控制LED
2.接聽電話
3.發送TEXT短信
4.發送中文短信
5.接收短信控制LED燈
6.GPRS_TCP程序(動態IP)
7.GPRS_TCP程序(域名)
8.GPRS_UDP程序(動態IP)
9.GPRS_UDP程序(域名)

本程序通過GPRS服務器控制LED的亮滅
使用單片機串口2與模塊通信;接法如下
    STM32      GPRS模塊
    PA3 (RXD2)->RXD
    PA2 (TXD2)->TXD
    GND      ->GND
1、1、板子上電后運行指示燈RUNING_LED會以一秒的頻率閃爍;
2、通過單片機的串口1,可以監視模塊的登錄情況;
3、手機發送“onled”點亮LED;
4、手機發送“offled”熄滅LED;
5、單片機每隔10秒會向服務器發送心跳幀“OK”
6、通過串口助手監控單片機的串口1可以看到服務器發送的信息;

單片機源程序如下:
  1. /**********************************************************************************
  2. * 工程名  :GPRS_透傳模式
  3. * 描述    :通過STM32開發板控制模塊進入透傳模式,連接上服務器后將收到服務器的數據返回給服務器
  4. * 實驗平臺:STM32F10X
  5. * 庫版本  :


  6. * 硬件連接說明
  7.          使用單片串口2與GPRS模塊通信  注:使用串口2可以避免下載和通信不會沖突
  8.          STM32      GPRS模塊
  9.          PA3 (RXD2)->TXD
  10.          PA2 (TXD2)->RXD
  11.          GND              ->GND

  12. * 軟件功能說明
  13.    板子上電后運行指示燈RUNING_LED會以一秒的頻率閃爍
  14.          連接上服務器后將收到服務器的數據返回給服務器
  15. **********************************************************************************/

  16. #include "stm32f10x.h"
  17. #include "usart.h"
  18. #include "Led.h"
  19. #include "SysTick.h"
  20. #include "timer.h"
  21. #include "string.h"

  22. #define Buf2_Max 200                                           //串口2緩存長度
  23. /*************        本地常量聲明        **************/
  24. const char *string = "AT+CIPSTART=\"TCP\",\"14.125.48.205\",9015";//IP登錄服務器,需要根據自己的IP和端口做修改

  25. /*************  本地變量聲明        **************/

  26. char Uart2_Buf[Buf2_Max]; //串口2接收緩存
  27. char *p1,*p2;            
  28. u8 Times=0,shijian=0;

  29. vu8 Timer0_start;        //定時器0延時啟動計數器

  30. /*************        本地函數聲明        **************/
  31. void System_Initialization(void); //STM32系統初始化
  32. void Ram_Initialization(void);    //內存變量初始化
  33. void NVIC_Configuration(void);    //中斷向量組初始化
  34. void CLR_Buf2(void);              //清串口2接收緩存
  35. u8 Find(char *a);                 //查找字符串
  36. void Second_AT_Command(char *b,char *a,u8 wait_time);  //發送AT指令
  37. void Wait_CREG(void);                          //查詢等待模塊注冊成功
  38. void Set_ATE0(void);                           //取消回顯
  39. void Connect_Server(void);                     //配置GPRS連接參數,并進入透傳模式
  40. void Rec_Server_Data(void);                    //接收服務器數據并返回


  41. /*************  外部函數和變量聲明*****************/




  42. /*******************************************************************************
  43. * 函數名 : main
  44. * 描述   : 主函數
  45. * 輸入   :
  46. * 輸出   :
  47. * 返回   :
  48. * 注意   : 串口2負責與MG323模塊通信,串口1用于串口調試,可以避免在下載程序時數據
  49.                                          還發送到模塊
  50. *******************************************************************************/
  51. int main(void)
  52. {
  53.         System_Initialization(); //系統初始化
  54.         Ram_Initialization();    //變量初始化

  55.         UART1_SendString("GPRS模塊GPRS測試程序\r\n");
  56.         UART1_SendString("GPRS模塊在注冊網絡\r\n");
  57.         Delay_nS(1);
  58.         UART2_SendString("+++");//退出透傳模式,避免模塊還處于透傳模式中
  59.   Delay_nS(2);
  60.         Wait_CREG();   //等待模塊注冊成功
  61.         UART1_SendString("GPRS模塊注冊成功\r\n");
  62.         UART1_SendString("GPRS模塊開始連接服務器\r\n");
  63.         Set_ATE0();    //取消回顯
  64.         Connect_Server(); //設置GPRS參數
  65.         UART1_SendString("連接成功\r\n");

  66.         while(1)
  67.         {
  68.                 Rec_Server_Data();//接收數據并原樣返回        
  69.         }
  70. }

  71. /*******************************************************************************
  72. * 函數名  : System_Initialization
  73. * 描述    : STM32系統初始化函數(初始化STM32時鐘及外設)
  74. * 輸入    : 無
  75. * 輸出    : 無
  76. * 返回    : 無
  77. * 說明    : 無
  78. *******************************************************************************/
  79. void System_Initialization(void)
  80. {
  81.         RCC_Configuration();                //設置系統時鐘為72MHZ(這個可以根據需要改)
  82.   SysTick_Init_Config();  //初始化系統滴答時鐘SysTick
  83.   NVIC_Configuration();                //STM32中斷向量表配配置
  84.         Timer2_Init_Config();                //定時器2初始化配置
  85.         USART1_Init_Config(115200);        //串口1初始化配置
  86.         USART2_Init_Config(115200);        //串口2初始化配置        
  87.         GPIO_Config();          //初始化GPIO
  88. }
  89. /*******************************************************************************
  90. * 函數名  : Ram_Initialization
  91. * 描述    : 變量初始化函數
  92. * 輸入    : 無
  93. * 輸出    : 無
  94. * 返回    : 無
  95. * 說明    : 無
  96. *******************************************************************************/
  97. void Ram_Initialization(void)
  98. {
  99.         Times=0;
  100.         shijian=0;
  101.         Timer0_start=0;
  102.         p1=Uart2_Buf;
  103.         p2=p1;
  104. }

  105. /*******************************************************************************
  106. * 函數名  : NVIC_Configuration
  107. * 描述    : STM32中斷向量表配配置
  108. * 輸入    : 無
  109. * 輸出    : 無
  110. * 返回值  : 無
  111. * 說明    : 設置KEY1(PC11)的中斷優先組
  112. *******************************************************************************/
  113. void NVIC_Configuration(void)
  114. {
  115.         NVIC_InitTypeDef NVIC_InitStructure;                                                //定義NVIC初始化結構體

  116.   /* Set the Vector Table base location at 0x08000000 */
  117.   NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);
  118.         
  119.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);                                    //設置中斷優先級組為2,先占優先級和從優先級各兩位(可設0~3)
  120.         
  121.         /*定時器2中斷向量配置*/
  122.         NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;                                    //設置中斷向量號
  123.         NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 3;        //設置搶先優先級
  124.         NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;                          //設置響應優先級
  125.         NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                                    //使能NVIC
  126.         NVIC_Init(&NVIC_InitStructure);
  127.         /*串口1中斷向量配置*/
  128.         NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;                                  //設置中斷向量號
  129.         NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;        //設置搶先優先級
  130.         NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;                          //設置響應優先級
  131.         NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                                    //使能NVIC
  132.         NVIC_Init(&NVIC_InitStructure);
  133.   /*串口2中斷向量配置*/
  134.   NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn;                                  //設置中斷向量號
  135.         NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;        //設置搶先優先級
  136.         NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;                          //設置響應優先級
  137.         NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                                    //使能NVIC
  138.         NVIC_Init(&NVIC_InitStructure);
  139. }
  140. /*******************************************************************************
  141. * 函數名  : USART2_IRQHandler
  142. * 描述    : 串口1中斷服務程序
  143. * 輸入    : 無
  144. * 返回    : 無
  145. * 說明    :
  146. *******************************************************************************/
  147. void USART2_IRQHandler(void)                        
  148. {
  149.                         u8 Res=0;
  150.       if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET)
  151.                         {
  152.                         Res=USART_ReceiveData(USART2);
  153.                         *p1 = Res;            //將接收到的字符串存到緩存中
  154.                         p1++;                                        //緩存指針向后移動
  155.                         if(p1>&Uart2_Buf[Buf2_Max])                       //如果緩存滿,將緩存指針指向緩存的首地址
  156.                         {
  157.                                 p1=Uart2_Buf;
  158.                         }
  159.                   }                        
  160. }         

  161. /*******************************************************************************
  162. * 函數名  : TIM2_IRQHandler
  163. * 描述    : 定時器2中斷斷服務函數
  164. * 輸入    : 無
  165. * 輸出    : 無
  166. * 返回    : 無
  167. * 說明    : 無
  168. *******************************************************************************/
  169. void TIM2_IRQHandler(void)   //TIM2中斷
  170. {
  171.         static u8 flag =1;

  172.         if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET)  //檢查TIM3更新中斷發生與否
  173.         {
  174.                
  175.                 TIM_ClearITPendingBit(TIM2, TIM_IT_Update  );  //清除TIMx更新中斷標志
  176.                
  177.                 if(Timer0_start)
  178.                 Times++;
  179.                 if(Times > shijian)
  180.                 {
  181.                         Timer0_start = 0;
  182.                         Times = 0;
  183.                 }
  184.                
  185.                 if(flag)
  186.                 {
  187.                         LED4_ON();
  188.                         flag=0;
  189.                 }
  190.                 else
  191.                 {
  192.                         LED4_OFF();
  193.                         flag=1;
  194.                 }
  195.         }        
  196. }

  197. /*******************************************************************************
  198. * 函數名 : CLR_Buf2
  199. * 描述   : 清除串口2緩存數據
  200. * 輸入   :
  201. * 輸出   :
  202. * 返回   :
  203. * 注意   :
  204. *******************************************************************************/
  205. void CLR_Buf2(void)
  206. {
  207.         u16 k;
  208.         for(k=0;k<Buf2_Max;k++)      //將緩存內容清零
  209.         {
  210.                 Uart2_Buf[k] = 0x00;
  211.         }
  212.   p1=Uart2_Buf;               //接收字符串的起始存儲位置
  213. }

  214. /*******************************************************************************
  215. * 函數名 : Find
  216. * 描述   : 判斷緩存中是否含有指定的字符串
  217. * 輸入   :
  218. * 輸出   :
  219. * 返回   : unsigned char:1 找到指定字符,0 未找到指定字符
  220. * 注意   :
  221. *******************************************************************************/

  222. u8 Find(char *a)
  223. {
  224.   if(strstr(Uart2_Buf,a)!=NULL)
  225.             return 1;
  226.         else
  227.                         return 0;
  228. }

  229. /*******************************************************************************
  230. * 函數名 : Second_AT_Command
  231. * 描述   : 發送AT指令函數
  232. * 輸入   : 發送數據的指針、發送等待時間(單位:S)
  233. * 輸出   :
  234. * 返回   :
  235. * 注意   :
  236. *******************************************************************************/

  237. void Second_AT_Command(char *b,char *a,u8 wait_time)         
  238. {
  239.         u8 i;
  240.         char *c;
  241.         c = b;                                                                                //保存字符串地址到c
  242.         CLR_Buf2();
  243.   i = 0;
  244.         while(i == 0)                    
  245.         {
  246.                 if(!Find(a))
  247.                 {
  248.                         if(Timer0_start == 0)
  249.                         {
  250.                                 b = c;                                                        //將字符串地址給b
  251.                                 for (; *b!='\0';b++)
  252.                                 {
  253.                                         while(USART_GetFlagStatus(USART2, USART_FLAG_TC)==RESET);
  254.                                         USART_SendData(USART2,*b);//UART2_SendData(*b);
  255.                                 }
  256.                                 UART2_SendLR();        
  257.                                 Times = 0;
  258.                                 shijian = wait_time;
  259.                                 Timer0_start = 1;
  260.                    }
  261.     }
  262.            else
  263.                 {
  264.                         i = 1;
  265.                         Timer0_start = 0;
  266.                 }
  267.         }
  268.         CLR_Buf2();
  269. }

  270. /*******************************************************************************
  271. * 函數名 : Wait_CREG
  272. * 描述   : 等待模塊注冊成功
  273. * 輸入   :
  274. * 輸出   :
  275. * 返回   :
  276. * 注意   :
  277. *******************************************************************************/
  278. void Wait_CREG(void)
  279. {
  280.         u8 i;
  281.         u8 k;
  282.         i = 0;
  283.   while(i == 0)                                
  284.         {
  285.                 CLR_Buf2();        
  286.                 UART2_SendString("AT+CREG?");   //查詢等待模塊注冊成功
  287.                 UART2_SendLR();
  288.                 Delay_nMs(5000);                                                  
  289.             for(k=0;k<Buf2_Max;k++)                              
  290.             {
  291.                         if(Uart2_Buf[k] == ':')
  292.                         {
  293.                                 if((Uart2_Buf[k+4] == '1')||(Uart2_Buf[k+4] == '5'))   //說明注冊成功
  294.                                 {
  295.                                         i = 1;
  296.                                         UART1_SendLR();
  297.                                   break;
  298.                                 }
  299.                         }
  300.                 }
  301.                 UART1_SendString("注冊中.....");
  302.         }
  303. }

  304. /*******************************************************************************
  305. * 函數名 : Set_ATE0
  306. * 描述   : 取消回顯
  307. * 輸入   :
  308. * 輸出   :
  309. * 返回   :
  310. * 注意   :
  311. *******************************************************************************/
  312. void Set_ATE0(void)
  313. {
  314.         Second_AT_Command("ATE0","OK",3);                                                                //取消回顯               
  315. }
  316. /*******************************************************************************
  317. * 函數名 : Connect_Server
  318. * 描述   : GPRS連接服務器函數
  319. * 輸入   :
  320. ……………………

  321. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
SIM系列GSM模塊例程(STM32).7z (249.72 KB, 下載次數: 745)


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏20 分享淘帖 頂1 踩
回復

使用道具 舉報

沙發
ID:337080 發表于 2018-5-24 10:06 | 只看該作者
學習一下,感謝分享
回復

使用道具 舉報

板凳
ID:145750 發表于 2018-5-29 16:07 | 只看該作者
好好學習,天天向上!
回復

使用道具 舉報

地板
ID:341998 發表于 2018-5-31 10:35 | 只看該作者
看下行不行
回復

使用道具 舉報

5#
ID:156653 發表于 2018-7-5 23:34 | 只看該作者
贊一個!!。!
回復

使用道具 舉報

6#
ID:159271 發表于 2018-7-14 12:01 | 只看該作者
謝謝樓主!
回復

使用道具 舉報

7#
ID:379678 發表于 2018-7-27 00:36 | 只看該作者
謝謝樓主
回復

使用道具 舉報

8#
ID:364328 發表于 2018-7-29 16:53 | 只看該作者
樓主用的什莫板子啊
回復

使用道具 舉報

9#
ID:159271 發表于 2018-8-9 18:36 | 只看該作者
很好的資料
回復

使用道具 舉報

10#
ID:339027 發表于 2018-8-11 10:58 | 只看該作者
謝謝非常不錯
回復

使用道具 舉報

11#
ID:341045 發表于 2018-8-11 18:04 | 只看該作者
收藏備用,謝謝分享
回復

使用道具 舉報

12#
ID:391536 發表于 2018-8-30 14:26 | 只看該作者
樓主好人!
回復

使用道具 舉報

13#
ID:391536 發表于 2018-8-31 13:50 | 只看該作者
學習一下,感謝分享
回復

使用道具 舉報

14#
ID:80456 發表于 2018-9-13 10:15 | 只看該作者
感謝分享,下載看看
回復

使用道具 舉報

15#
ID:412317 發表于 2018-10-19 15:53 | 只看該作者
學習一下
回復

使用道具 舉報

16#
ID:435823 發表于 2018-11-29 16:02 | 只看該作者
很好的資料,學習了
回復

使用道具 舉報

17#
ID:64178 發表于 2018-12-11 09:01 | 只看該作者
謝謝LZ分享,先下載
回復

使用道具 舉報

18#
ID:468339 發表于 2019-1-15 10:18 | 只看該作者
我想看看,好程序,謝謝樓主
回復

使用道具 舉報

19#
ID:301623 發表于 2019-3-1 23:19 | 只看該作者

學習學習,感謝分享
回復

使用道具 舉報

20#
ID:324649 發表于 2019-3-5 14:52 | 只看該作者
謝謝樓主的分享
回復

使用道具 舉報

21#
ID:365724 發表于 2019-3-5 16:36 | 只看該作者
謝謝樓主的分享
回復

使用道具 舉報

22#
ID:365724 發表于 2019-3-5 16:37 | 只看該作者
我想看看,好程序,謝謝樓主
回復

使用道具 舉報

23#
ID:485411 發表于 2019-3-24 15:32 | 只看該作者
研究研究 謝謝大佬分享
回復

使用道具 舉報

24#
ID:498897 發表于 2019-3-27 09:19 | 只看該作者

能下載嗎?
回復

使用道具 舉報

25#
ID:506025 發表于 2019-4-7 00:26 來自手機 | 只看該作者
難得的資料 需要下載了
回復

使用道具 舉報

26#
ID:550060 發表于 2019-5-29 11:57 | 只看該作者
難得的資料 需要下載了
回復

使用道具 舉報

27#
ID:421518 發表于 2019-5-30 14:22 | 只看該作者
學習學習,謝謝樓主
回復

使用道具 舉報

28#
ID:576684 發表于 2019-7-2 20:14 | 只看該作者
正在學習STM32
回復

使用道具 舉報

29#
ID:101532 發表于 2019-7-9 10:54 | 只看該作者
謝謝分享,目前這塊想搞下
回復

使用道具 舉報

30#
ID:309115 發表于 2019-7-19 10:47 | 只看該作者
謝謝樓主
回復

使用道具 舉報

31#
ID:220026 發表于 2019-7-20 14:23 | 只看該作者
謝謝提供
回復

使用道具 舉報

32#
ID:302666 發表于 2019-7-20 15:25 | 只看該作者
謝謝版主
回復

使用道具 舉報

33#
ID:190145 發表于 2019-8-5 21:15 | 只看該作者
下來研究下,謝謝分享!
回復

使用道具 舉報

34#
ID:601536 發表于 2019-8-28 09:50 | 只看該作者
樓主能分享一下硬件電路嗎?
回復

使用道具 舉報

35#
ID:431829 發表于 2019-8-28 13:26 | 只看該作者
很有用,感謝!
回復

使用道具 舉報

36#
ID:230666 發表于 2019-10-17 11:03 | 只看該作者
謝謝樓主
回復

使用道具 舉報

37#
ID:621258 發表于 2019-11-25 09:41 | 只看該作者
學習一下,感謝分享
回復

使用道具 舉報

38#
ID:703591 發表于 2020-3-13 09:59 | 只看該作者
萬分感謝
回復

使用道具 舉報

39#
ID:710749 發表于 2020-3-18 11:41 | 只看該作者
萬分感謝
回復

使用道具 舉報

40#
ID:734166 發表于 2020-4-21 12:32 | 只看該作者
謝謝分享。這個例程很有用。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 一级特黄视频 | 亚洲在线一区二区三区 | 久久国产一区 | 一本色道久久综合亚洲精品高清 | 免费高潮视频95在线观看网站 | 精品欧美黑人一区二区三区 | 亚洲人成一区二区三区性色 | 国产一区久久久 | 91性高湖久久久久久久久_久久99 | 在线伊人| 国产精品久久国产精品 | 激情在线视频 | 国产资源在线视频 | 久久久国产精品 | 免费精品 | 亚洲视频免费在线 | 国产成人精品免费 | 欧美精品一 | 精品一级 | 中文在线视频 | 最新中文字幕久久 | 黄视频免费观看 | 91手机精品视频 | 日韩在线免费 | 国产小视频在线观看 | 久草网址 | www亚洲精品 | 宅女噜噜66国产精品观看免费 | 中国一级特黄真人毛片免费观看 | 综合久久99 | 国产激情在线观看 | 国产91久久久久蜜臀青青天草二 | 国产精品美女久久久久久不卡 | 久久久久久成人 | 2018国产精品 | 天天综合永久 | 四虎影院免费在线 | 蜜桃视频在线观看免费视频网站www | 日韩喷潮 | 欧美aaaaa | 国产一极毛片 |