欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
SIM系列GSM GPRS模塊例程(STM32源碼)
[打印本頁]
作者:
巽風
時間:
2018-5-15 12:50
標題:
SIM系列GSM GPRS模塊例程(STM32源碼)
0.png
(51.46 KB, 下載次數: 132)
下載附件
2018-5-15 17:47 上傳
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可以看到服務器發送的信息;
單片機源程序如下:
/**********************************************************************************
* 工程名 :GPRS_透傳模式
* 描述 :通過STM32開發板控制模塊進入透傳模式,連接上服務器后將收到服務器的數據返回給服務器
* 實驗平臺:STM32F10X
* 庫版本 :
* 硬件連接說明
使用單片串口2與GPRS模塊通信 注:使用串口2可以避免下載和通信不會沖突
STM32 GPRS模塊
PA3 (RXD2)->TXD
PA2 (TXD2)->RXD
GND ->GND
* 軟件功能說明
板子上電后運行指示燈RUNING_LED會以一秒的頻率閃爍
連接上服務器后將收到服務器的數據返回給服務器
**********************************************************************************/
#include "stm32f10x.h"
#include "usart.h"
#include "Led.h"
#include "SysTick.h"
#include "timer.h"
#include "string.h"
#define Buf2_Max 200 //串口2緩存長度
/************* 本地常量聲明 **************/
const char *string = "AT+CIPSTART=\"TCP\",\"14.125.48.205\",9015";//IP登錄服務器,需要根據自己的IP和端口做修改
/************* 本地變量聲明 **************/
char Uart2_Buf[Buf2_Max]; //串口2接收緩存
char *p1,*p2;
u8 Times=0,shijian=0;
vu8 Timer0_start; //定時器0延時啟動計數器
/************* 本地函數聲明 **************/
void System_Initialization(void); //STM32系統初始化
void Ram_Initialization(void); //內存變量初始化
void NVIC_Configuration(void); //中斷向量組初始化
void CLR_Buf2(void); //清串口2接收緩存
u8 Find(char *a); //查找字符串
void Second_AT_Command(char *b,char *a,u8 wait_time); //發送AT指令
void Wait_CREG(void); //查詢等待模塊注冊成功
void Set_ATE0(void); //取消回顯
void Connect_Server(void); //配置GPRS連接參數,并進入透傳模式
void Rec_Server_Data(void); //接收服務器數據并返回
/************* 外部函數和變量聲明*****************/
/*******************************************************************************
* 函數名 : main
* 描述 : 主函數
* 輸入 :
* 輸出 :
* 返回 :
* 注意 : 串口2負責與MG323模塊通信,串口1用于串口調試,可以避免在下載程序時數據
還發送到模塊
*******************************************************************************/
int main(void)
{
System_Initialization(); //系統初始化
Ram_Initialization(); //變量初始化
UART1_SendString("GPRS模塊GPRS測試程序\r\n");
UART1_SendString("GPRS模塊在注冊網絡\r\n");
Delay_nS(1);
UART2_SendString("+++");//退出透傳模式,避免模塊還處于透傳模式中
Delay_nS(2);
Wait_CREG(); //等待模塊注冊成功
UART1_SendString("GPRS模塊注冊成功\r\n");
UART1_SendString("GPRS模塊開始連接服務器\r\n");
Set_ATE0(); //取消回顯
Connect_Server(); //設置GPRS參數
UART1_SendString("連接成功\r\n");
while(1)
{
Rec_Server_Data();//接收數據并原樣返回
}
}
/*******************************************************************************
* 函數名 : System_Initialization
* 描述 : STM32系統初始化函數(初始化STM32時鐘及外設)
* 輸入 : 無
* 輸出 : 無
* 返回 : 無
* 說明 : 無
*******************************************************************************/
void System_Initialization(void)
{
RCC_Configuration(); //設置系統時鐘為72MHZ(這個可以根據需要改)
SysTick_Init_Config(); //初始化系統滴答時鐘SysTick
NVIC_Configuration(); //STM32中斷向量表配配置
Timer2_Init_Config(); //定時器2初始化配置
USART1_Init_Config(115200); //串口1初始化配置
USART2_Init_Config(115200); //串口2初始化配置
GPIO_Config(); //初始化GPIO
}
/*******************************************************************************
* 函數名 : Ram_Initialization
* 描述 : 變量初始化函數
* 輸入 : 無
* 輸出 : 無
* 返回 : 無
* 說明 : 無
*******************************************************************************/
void Ram_Initialization(void)
{
Times=0;
shijian=0;
Timer0_start=0;
p1=Uart2_Buf;
p2=p1;
}
/*******************************************************************************
* 函數名 : NVIC_Configuration
* 描述 : STM32中斷向量表配配置
* 輸入 : 無
* 輸出 : 無
* 返回值 : 無
* 說明 : 設置KEY1(PC11)的中斷優先組
*******************************************************************************/
void NVIC_Configuration(void)
{
NVIC_InitTypeDef NVIC_InitStructure; //定義NVIC初始化結構體
/* Set the Vector Table base location at 0x08000000 */
NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //設置中斷優先級組為2,先占優先級和從優先級各兩位(可設0~3)
/*定時器2中斷向量配置*/
NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn; //設置中斷向量號
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 3; //設置搶先優先級
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //設置響應優先級
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //使能NVIC
NVIC_Init(&NVIC_InitStructure);
/*串口1中斷向量配置*/
NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn; //設置中斷向量號
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2; //設置搶先優先級
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //設置響應優先級
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //使能NVIC
NVIC_Init(&NVIC_InitStructure);
/*串口2中斷向量配置*/
NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn; //設置中斷向量號
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; //設置搶先優先級
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //設置響應優先級
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //使能NVIC
NVIC_Init(&NVIC_InitStructure);
}
/*******************************************************************************
* 函數名 : USART2_IRQHandler
* 描述 : 串口1中斷服務程序
* 輸入 : 無
* 返回 : 無
* 說明 :
*******************************************************************************/
void USART2_IRQHandler(void)
{
u8 Res=0;
if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET)
{
Res=USART_ReceiveData(USART2);
*p1 = Res; //將接收到的字符串存到緩存中
p1++; //緩存指針向后移動
if(p1>&Uart2_Buf[Buf2_Max]) //如果緩存滿,將緩存指針指向緩存的首地址
{
p1=Uart2_Buf;
}
}
}
/*******************************************************************************
* 函數名 : TIM2_IRQHandler
* 描述 : 定時器2中斷斷服務函數
* 輸入 : 無
* 輸出 : 無
* 返回 : 無
* 說明 : 無
*******************************************************************************/
void TIM2_IRQHandler(void) //TIM2中斷
{
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;
}
p1=Uart2_Buf; //接收字符串的起始存儲位置
}
/*******************************************************************************
* 函數名 : 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,char *a,u8 wait_time)
{
u8 i;
char *c;
c = b; //保存字符串地址到c
CLR_Buf2();
i = 0;
while(i == 0)
{
if(!Find(a))
{
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();
}
/*******************************************************************************
* 函數名 : Wait_CREG
* 描述 : 等待模塊注冊成功
* 輸入 :
* 輸出 :
* 返回 :
* 注意 :
*******************************************************************************/
void Wait_CREG(void)
{
u8 i;
u8 k;
i = 0;
while(i == 0)
{
CLR_Buf2();
UART2_SendString("AT+CREG?"); //查詢等待模塊注冊成功
UART2_SendLR();
Delay_nMs(5000);
for(k=0;k<Buf2_Max;k++)
{
if(Uart2_Buf[k] == ':')
{
if((Uart2_Buf[k+4] == '1')||(Uart2_Buf[k+4] == '5')) //說明注冊成功
{
i = 1;
UART1_SendLR();
break;
}
}
}
UART1_SendString("注冊中.....");
}
}
/*******************************************************************************
* 函數名 : Set_ATE0
* 描述 : 取消回顯
* 輸入 :
* 輸出 :
* 返回 :
* 注意 :
*******************************************************************************/
void Set_ATE0(void)
{
Second_AT_Command("ATE0","OK",3); //取消回顯
}
/*******************************************************************************
* 函數名 : Connect_Server
* 描述 : GPRS連接服務器函數
* 輸入 :
……………………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
SIM系列GSM模塊例程(STM32).7z
(249.72 KB, 下載次數: 745)
2018-12-20 22:26 上傳
點擊文件名下載附件
例程
下載積分: 黑幣 -5
作者:
沈心齋
時間:
2018-5-24 10:06
學習一下,感謝分享
作者:
djw000824
時間:
2018-5-29 16:07
好好學習,天天向上!
作者:
sfxcjq16527@cha
時間:
2018-5-31 10:35
看下行不行
作者:
家定不舉棋
時間:
2018-7-5 23:34
贊一個!!!!!
作者:
Dramalife
時間:
2018-7-14 12:01
謝謝樓主!
作者:
guogongshao
時間:
2018-7-27 00:36
謝謝樓主
作者:
qwthh
時間:
2018-7-29 16:53
樓主用的什莫板子啊
作者:
Dramalife
時間:
2018-8-9 18:36
很好的資料
作者:
qq767402837
時間:
2018-8-11 10:58
謝謝非常不錯
作者:
lzts88
時間:
2018-8-11 18:04
收藏備用,謝謝分享
作者:
yinlingwei66
時間:
2018-8-30 14:26
樓主好人!
作者:
yinlingwei66
時間:
2018-8-31 13:50
學習一下,感謝分享
作者:
mapleleaf
時間:
2018-9-13 10:15
感謝分享,下載看看
作者:
kailaohuyouk
時間:
2018-10-19 15:53
學習一下
作者:
hawk717
時間:
2018-11-29 16:02
很好的資料,學習了
作者:
袁潔棟
時間:
2018-12-11 09:01
謝謝LZ分享,先下載
作者:
fire11f
時間:
2019-1-15 10:18
我想看看,好程序,謝謝樓主
作者:
wtfshq
時間:
2019-3-1 23:19
學習學習,感謝分享
作者:
motto6666
時間:
2019-3-5 14:52
謝謝樓主的分享
作者:
shen1993
時間:
2019-3-5 16:36
謝謝樓主的分享
作者:
shen1993
時間:
2019-3-5 16:37
我想看看,好程序,謝謝樓主
作者:
無亟待
時間:
2019-3-24 15:32
研究研究 謝謝大佬分享
作者:
Hsq19900916
時間:
2019-3-27 09:19
sfxcjq16527@cha 發表于 2018-5-31 10:35
看下行不行
能下載嗎?
作者:
Operaturn7
時間:
2019-4-7 00:26
難得的資料 需要下載了
作者:
asdsx
時間:
2019-5-29 11:57
難得的資料 需要下載了
作者:
宗270
時間:
2019-5-30 14:22
學習學習,謝謝樓主
作者:
scott817
時間:
2019-7-2 20:14
正在學習STM32
作者:
jopjob
時間:
2019-7-9 10:54
謝謝分享,目前這塊想搞下
作者:
linouba
時間:
2019-7-19 10:47
謝謝樓主
作者:
liuyongpc
時間:
2019-7-20 14:23
謝謝提供
作者:
slim443
時間:
2019-7-20 15:25
謝謝版主
作者:
Jasming
時間:
2019-8-5 21:15
下來研究下,謝謝分享!
作者:
DWF18046665737
時間:
2019-8-28 09:50
樓主能分享一下硬件電路嗎?
作者:
limimi
時間:
2019-8-28 13:26
很有用,感謝!
作者:
zrm0806
時間:
2019-10-17 11:03
謝謝樓主
作者:
涵之派大星
時間:
2019-11-25 09:41
學習一下,感謝分享
作者:
Lonlykey
時間:
2020-3-13 09:59
萬分感謝
作者:
xwyk1
時間:
2020-3-18 11:41
萬分感謝
作者:
黃黃工
時間:
2020-4-21 12:32
謝謝分享。這個例程很有用。
作者:
就想學好單片機
時間:
2020-4-25 12:24
感謝樓主分享,最近正好需要
作者:
曾翁
時間:
2020-5-4 14:56
感謝樓主,學習了,謝謝!
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1