标题:
stm32使用gsm模块打电话代码
[打印本页]
作者:
211209
时间:
2018-6-24 11:20
标题:
stm32使用gsm模块打电话代码
stm32使用gsm模块打电话代码
单片机源程序如下:
/*****************************************************
接线说明:
STM32 A6&A7
GND <-----> GND
PA2 ------> U_RXD
PA3 <------ U_TXD
//用于调试可不接
STM32 USB-TTL模块
GND ------> GND
TX1 ------> RXD
***********************************************************/
#include "stm32f10x.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "usart2.h"
//常量
#define Success 1U
#define Failure 0U
//定义变量
unsigned long Time_Cont = 0; //定时器计数器
char phoneNumber[] = "1771922xxxx"; //替换成需要被拨打电话的号码
void errorLog(int num);
void phone(char *number);
unsigned int sendCommand(char *Command, char *Response, unsigned long Timeout, unsigned char Retry);
void Sys_Soft_Reset(void);
int main(void)
{
delay_init();
NVIC_Configuration(); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
uart_init(9600); //串口初始化为9600
USART2_Init(115200); //串口2波特率9600
u2_printf("AT\r\n");
Init_LEDpin();
printf("Welcome to use!\r\n");
printf("ILoveMcu.taobao.com!\r\n");
if (sendCommand("AT\r\n", "OK", 3000, 10) == Success);
else errorLog(1);
delay_ms(10);
if (sendCommand("AT+CPIN?\r\n", "READY", 1000, 10) == Success);
else errorLog(2);
delay_ms(10);
if (sendCommand("AT+CREG?\r\n", "CREG: 1", 1000, 10) == Success);
else errorLog(3);
delay_ms(10);
phone(phoneNumber); //打电话
while(1)
{
}
}
void errorLog(int num)
{
printf("ERROR%d\r\n",num);
while (1)
{
if (sendCommand("AT\r\n", "OK", 100, 10) == Success)
{
Sys_Soft_Reset();
}
delay_ms(200);
}
}
void Sys_Soft_Reset(void)
{
SCB->AIRCR =0X05FA0000|(u32)0x04;
}
void phone(char *number)
{
char send_buf[20] = {0};
memset(send_buf, 0, 20); //清空
strcpy(send_buf, "ATD");
strcat(send_buf, number);
strcat(send_buf, ";\r\n");
if (sendCommand(send_buf, "SOUNDER", 10000, 10) == Success);
else errorLog(4);
}
unsigned int sendCommand(char *Command, char *Response, unsigned long Timeout, unsigned char Retry)
{
unsigned char n;
USART2_CLR_Buf();
for (n = 0; n < Retry; n++)
{
u2_printf(Command); //发送GPRS指令
printf("\r\n***************send****************\r\n");
printf(Command);
Time_Cont = 0;
while (Time_Cont < Timeout)
{
delay_ms(100);
Time_Cont += 100;
if (strstr(USART2_RX_BUF, Response) != NULL)
{
printf("\r\n***************receive****************\r\n");
printf(USART2_RX_BUF);
USART2_CLR_Buf();
return Success;
}
}
Time_Cont = 0;
}
printf("\r\n***************receive****************\r\n");
printf(USART2_RX_BUF);
USART2_CLR_Buf();
return Failure;
}
复制代码
所有资料51hei提供下载:
01.STM32拨打电话.rar
(319.11 KB, 下载次数: 42)
2018-6-30 02:53 上传
点击文件名下载附件
下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1