找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3302|回复: 0
打印 上一主题 下一主题
收起左侧

stm32使用gsm模块打电话代码

[复制链接]
跳转到指定楼层
楼主
ID:251082 发表于 2018-6-24 11:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
stm32使用gsm模块打电话代码

单片机源程序如下:
  1. /*****************************************************       
  2. 接线说明:
  3. STM32                                        A6&A7
  4. GND                <----->        GND
  5. PA2                ------>        U_RXD
  6. PA3                <------        U_TXD

  7. //用于调试可不接
  8. STM32                                        USB-TTL模块
  9. GND                ------>        GND
  10. TX1                ------>        RXD
  11. ***********************************************************/

  12. #include "stm32f10x.h"
  13. #include "delay.h"
  14. #include "usart.h"
  15. #include "led.h"
  16. #include "usart2.h"


  17. //常量
  18. #define Success 1U
  19. #define Failure 0U

  20. //定义变量
  21. unsigned long  Time_Cont = 0;       //定时器计数器

  22. char phoneNumber[] = "1771922xxxx";                //替换成需要被拨打电话的号码


  23. void errorLog(int num);
  24. void phone(char *number);
  25. unsigned int sendCommand(char *Command, char *Response, unsigned long Timeout, unsigned char Retry);
  26. void Sys_Soft_Reset(void);

  27. int main(void)
  28. {       
  29.         delay_init();
  30.        
  31.         NVIC_Configuration();          //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
  32.         uart_init(9600);         //串口初始化为9600
  33.         USART2_Init(115200);        //串口2波特率9600
  34.         u2_printf("AT\r\n");
  35.         Init_LEDpin();
  36.        
  37.        
  38.        
  39.         printf("Welcome to use!\r\n");
  40.         printf("ILoveMcu.taobao.com!\r\n");
  41.        
  42.         if (sendCommand("AT\r\n", "OK", 3000, 10) == Success);
  43.         else errorLog(1);
  44.         delay_ms(10);

  45.         if (sendCommand("AT+CPIN?\r\n", "READY", 1000, 10) == Success);
  46.         else errorLog(2);
  47.         delay_ms(10);

  48.         if (sendCommand("AT+CREG?\r\n", "CREG: 1", 1000, 10) == Success);
  49.         else errorLog(3);
  50.         delay_ms(10);

  51.         phone(phoneNumber);                //打电话
  52.        
  53.         while(1)
  54.         {
  55.                
  56.         }
  57. }

  58. void errorLog(int num)
  59. {
  60.         printf("ERROR%d\r\n",num);
  61.         while (1)
  62.         {
  63.                 if (sendCommand("AT\r\n", "OK", 100, 10) == Success)
  64.                 {
  65.                         Sys_Soft_Reset();
  66.                 }
  67.                 delay_ms(200);
  68.         }
  69. }

  70. void Sys_Soft_Reset(void)
  71. {  
  72.     SCB->AIRCR =0X05FA0000|(u32)0x04;      
  73. }

  74. void phone(char *number)
  75. {
  76.         char send_buf[20] = {0};
  77.         memset(send_buf, 0, 20);    //清空
  78.         strcpy(send_buf, "ATD");
  79.         strcat(send_buf, number);
  80.         strcat(send_buf, ";\r\n");

  81.         if (sendCommand(send_buf, "SOUNDER", 10000, 10) == Success);
  82.         else errorLog(4);
  83. }

  84. unsigned int sendCommand(char *Command, char *Response, unsigned long Timeout, unsigned char Retry)
  85. {
  86.         unsigned char n;
  87.         USART2_CLR_Buf();
  88.         for (n = 0; n < Retry; n++)
  89.         {
  90.                 u2_printf(Command);                 //发送GPRS指令
  91.                
  92.                 printf("\r\n***************send****************\r\n");
  93.                 printf(Command);
  94.                
  95.                 Time_Cont = 0;
  96.                 while (Time_Cont < Timeout)
  97.                 {
  98.                         delay_ms(100);
  99.                         Time_Cont += 100;
  100.                         if (strstr(USART2_RX_BUF, Response) != NULL)
  101.                         {                               
  102.                                 printf("\r\n***************receive****************\r\n");
  103.                                 printf(USART2_RX_BUF);
  104.                                 USART2_CLR_Buf();
  105.                                 return Success;
  106.                         }
  107.                        
  108.                 }
  109.                 Time_Cont = 0;
  110.         }
  111.         printf("\r\n***************receive****************\r\n");
  112.         printf(USART2_RX_BUF);
  113.         USART2_CLR_Buf();
  114.         return Failure;
  115. }
复制代码

所有资料51hei提供下载:
01.STM32拨打电话.rar (319.11 KB, 下载次数: 42)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表