对使用GSM模块使用有挺大参考作用,使用串口与CDNA指令完成。希望帮到大家学习
单片机源程序如下:
/**
******************************************************************************
* @file main.c
* @author GXNU_LPK
* @version V1.0
* @brief 用3.5.0版本库建的工程模板
******************************************************************************
* @attention
*
* 实验平台: STM32F103CT6核心板
* 实验内容:GSM(SIM900A)模块通过服务器实现网络授时
* 备 注:Get_net_time.c这部分的代码来源于https://blog.csdn.net/ludaoyi88/article/details/51757664 ,
* 根据此ludaoyi123博主提供的思路和代码进行测试和修改而来,经实验测试和改善后目前已初步达到实验目的,但
* 稳定性方面略微存在一些欠缺,请学习者自行改善,仅供学习,不得用于其他用途
******************************************************************************
*/
#include "stm32f10x.h"
#include "GSM.h"
#include "AT_Cmd.h"
#include "usart2.h"
#include "usart1.h"
#include "delay.h"
#include "string.h"
#include "rtc.h"
#include "Get_net_time.h"
/**
* @brief 主函数
* @param 无
* @retval 无
*/
int main(void)
{
u8 res;
delay_init();
Usart2_Init(115200); //初始化串口2
delay_ms(3);
Usart1_Init(115200); //初始化串口1
if(RTC_Init()==0)
printf("RTC初始化成功\r\n");
else
printf("RTC初始化失败\r\n");
printf("初始化SIM900A中...\r\n");
res=1;
while(res)
{
res=GSM_Dect();
delay_ms(2000);
}
res=1;
// while(res)
// {
// res=SIM900A_CONNECT_SERVER_SEND_INFOR((u8*)"time.nist.gov",(u8*)"13");//连接授时服务器(国外)
// }
// Get_Sever_Time();//提取获取到的时间并存入STM32和GSM模块内部RTC中
Get_GSM_RTCtime();//直接从GSM模块内部获取时间,初次上电时需要手动复位
printf("\r\n系统初始化完成\r\n");
while(1)
{
display_time();//显示STM32内部RTC的时间
delay_ms(1000);
}
}
全部资料51hei下载地址:
GSM通过服务器或内部网络授.7z
(771.75 KB, 下载次数: 30)
|