|
安可信 GPRS A6 A7 开发板原理图、51/stm32代码及相关工具。AT指令,51和stm32源代码,以及使用手册,测试工具。
里面带GPRS A6 A7开发板原理图和封装库:Goouuu-GPRSModel-A7封装库.PcbLib
工具软件:
PDU短信编码器.zip
SOCKET调试助手.rar
sscom42.zip
果云A6调试助手.rar
手册:
Goouuu_A6模块使用手册..pdf
安信可GSM GPRS A6_A7_A6C模组用户开发手册20160721.pdf
51单片机和stm32单片机源码:
1.拨打电话.rar
2.发送TEXT短信.rar
3.发送中文短信.rar
4.接收短信控制LED灯.rar
以下是部分源码预览:
本程序通过手机短信控制LED的亮灭
使用单片机串口2与模块通信;接法如下
STC单片机 GPRS模块
P1.2(RXD2)->RXD
P1.3(TXD2)->TXD
GND ->GND
1、板子上电后运行指示灯RUNING_LED会以一秒的频率闪烁;
2、通过芯片的串口1可以监视模块的登录情况;
3、手机发送“onled”点亮LED;
4、手机发送“offled”熄灭LED;
5、使用串口2与模块通信,串口1用于将信息打印输出。
单片机源程序如下:
- /**********************************************************************************
- STM32F103C8T6
-
- GSM 短信控制
-
- * 硬件连接说明
- 使用单片串口2与GPRS模块通信 注:使用串口2可以避免下载和通信不会冲突
- STM32 GPRS模块
- PA3 (RXD2)->RXD
- PA2 (TXD2)->TXD
- GND ->GND
- PA9 PA10 串口1
-
- PB5 LED1 指示灯1
- PB6 LED2 指示灯2
-
- 指令: 发送短信到模块
- led1on --- LED1 打开
- led1off --- LED1 关闭
- led2on --- LED2 打开
- led2off --- LED2 关闭
- **********************************************************************************/
- #include "stm32f10x.h"
- #include "usart.h"
- #include "Led.h"
- #include "SysTick.h"
- #include "timer.h"
- #include "string.h"
- #define Automatic_Startup 1 //定义自启动 V1.2版本起有自启动功能
- //#define Buf1_Max 60 //串口1缓存长度
- #define Buf2_Max 200 //串口2缓存长度
- /************* 本地常量声明 **************/
- /************* 本地变量声明 **************/
- //char Uart1_Buf[Buf1_Max];
- char Uart2_Buf[Buf2_Max];
- u8 Times=0,First_Int = 0,shijian=0;
- vu8 Timer0_start; //定时器0延时启动计数器
- vu8 Uart2_Start; //串口2开始接收数据
- vu8 Uart2_End; //串口2接收数据结束
- /************* 本地函数声明 **************/
- void CLR_Buf2(void);
- u8 Find(char *a);
- void Second_AT_Command(char *b,u8 wait_time);
- void Set_Text_Mode(void);
- void Check_New_Message(void);
- void Wait_CREG(void);
- /************* 外部函数和变量声明*****************/
- /*******************************************************************************
- * 函数名 : main
- * 描述 : 主函数
- * 输入 :
- * 输出 :
- * 返回 :
- * 注意 : 串口2负责与GPRS模块通信,串口1用于串口调试,可以避免在下载程序时数据
- 还发送到模块
- *******************************************************************************/
- int main(void)
- {
- SysTick_Init_Config();
- GPIO_Config();
-
- USART1_Init_Config(115200);
- USART2_Init_Config(115200);
- Timer2_Init_Config();
- UART1_SendString("GPRS模块短信测试程序\r\n");
- UART1_SendString("GPRS模块在注册网络\r\n");
- Wait_CREG();
- UART1_SendString("GPRS模块注册成功\r\n");
- UART1_SendString("GPRS模块短信模式设置\r\n");
- Set_Text_Mode();
- UART1_SendString("设置成功,短信模式:TEXT\r\n");
- UART1_SendString("初始化完成\r\n");
- while(1)
- {
- Check_New_Message();
- }
- }
- /*******************************************************************************
- * 函数名 : USART2_IRQHandler
- * 描述 : 串口1中断服务程序
- * 输入 : 无
- * 返回 : 无
- * 说明 :
- *******************************************************************************/
- void USART2_IRQHandler(void)
- {
- u8 Res=0;
- Res =USART_ReceiveData(USART2);
- Uart2_Buf[First_Int] = Res; //将接收到的字符串存到缓存中
- First_Int++; //缓存指针向后移动
- if(First_Int > Buf2_Max) //如果缓存满,将缓存指针指向缓存的首地址
- {
- First_Int = 0;
- }
- }
- /*******************************************************************************
- * 函数名 : TIM2_IRQHandler
- * 描述 : 定时器2中断断服务函数
- * 输入 : 无
- * 输出 : 无
- * 返回 : 无
- * 说明 : 无
- *******************************************************************************/
- void TIM2_IRQHandler(void) //TIM3中断
- {
- static u8 flag =1;
- if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET) //检查TIM3更新中断发生与否
- {
-
- TIM_ClearITPendingBit(TIM2, TIM_IT_Update ); //清除TIMx更新中断标志
-
- if(Timer0_start)
- Times++;
- if(Times > shijian)
- {
- Timer0_start = 0;
- Times = 0;
- }
-
- if(flag)
- {
- LED4_ON();
- flag=0;
- }
- else
- {
- LED4_OFF();
- flag=1;
- }
- }
- }
- /*******************************************************************************
- * 函数名 : CLR_Buf2
- * 描述 : 清除串口2缓存数据
- * 输入 :
- * 输出 :
- * 返回 :
- * 注意 :
- *******************************************************************************/
- void CLR_Buf2(void)
- {
- u16 k;
- for(k=0;k<Buf2_Max;k++) //将缓存内容清零
- {
- Uart2_Buf[k] = 0x00;
- }
- First_Int = 0; //接收字符串的起始存储位置
- }
- /*******************************************************************************
- * 函数名 : Find
- * 描述 : 判断缓存中是否含有指定的字符串
- * 输入 :
- * 输出 :
- * 返回 : unsigned char:1 找到指定字符,0 未找到指定字符
- * 注意 :
- *******************************************************************************/
- u8 Find(char *a)
- {
- if(strstr(Uart2_Buf,a)!=NULL)
- return 1;
- else
- return 0;
- }
- /*******************************************************************************
- * 函数名 : Second_AT_Command
- * 描述 : 发送AT指令函数
- * 输入 : 发送数据的指针、发送等待时间(单位:S)
- * 输出 :
- * 返回 :
- * 注意 :
- *******************************************************************************/
- void Second_AT_Command(char *b,u8 wait_time)
- {
- u8 i;
- char *c;
- c = b; //保存字符串地址到c
- CLR_Buf2();
- i = 0;
- while(i == 0)
- {
- if(!Find("OK"))
- {
- if(Timer0_start == 0)
- {
- b = c; //将字符串地址给b
- for (; *b!='\0';b++)
- {
- while(USART_GetFlagStatus(USART2, USART_FLAG_TC)==RESET);
- USART_SendData(USART2,*b);//UART2_SendData(*b);
- }
- UART2_SendLR();
- Times = 0;
- shijian = wait_time;
- Timer0_start = 1;
- }
- }
- else
- {
- i = 1;
- Timer0_start = 0;
- }
- }
- CLR_Buf2();
- }
- /*******************************************************************************
- * 函数名 : Set_Text_Mode
- * 描述 : 设置短信为TEXT文本模式
- * 输入 :
- * 输出 :
- * 返回 :
- * 注意 :
- *******************************************************************************/
- void Set_Text_Mode(void)
- {
- Second_AT_Command("ATE0",3); //取消回显
- Second_AT_Command("AT+CMGF=1",3); //短信模式设置为TEXT
- }
- /*******************************************************************************
- * 函数名 : Check_Message_rec
- * 描述 : 检查是否有新信息,并执行信息内容指令
- * 输入 :
- * 输出 :
- * 返回 :
- * 注意 :
- *******************************************************************************/
- void Check_New_Message(void)
- {
- if(strstr(Uart2_Buf,"+CMT:")!=NULL) //若缓存字符串中含有"+CMT:"就表示有新的短信
- {
-
- UART1_SendString("收到新短信:\r\n");
- UART1_SendString(Uart2_Buf); //把模块返回的信息原样输出
- if(strstr(Uart2_Buf,"led1on")!=NULL)
- {
- LED1_ON();
- }
- if(strstr(Uart2_Buf,"led1off")!=NULL)
- {
- LED1_OFF();
- }
- if(strstr(Uart2_Buf,"led2on")!=NULL)
- {
- LED2_ON();
- }
- if(strstr(Uart2_Buf,"led2off")!=NULL)
- {
- LED2_OFF();
- }
- CLR_Buf2();
-
- }
- }
- /*******************************************************************************
- * 函数名 : Wait_CREG
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
GPRS A6,A7资料.7z
(10.88 MB, 下载次数: 197)
|
评分
-
查看全部评分
|