求STM32与MG323程序
时间:10-02
整理:3721RD
点击:
,本人在用STM32做与MG323芯片的程序,一直没通过编译,请问有哪位高人在做这方面的程序,能帮下忙吗这是本人写的程序
// #include "sys.h"
#include "mg323.h"
//#include"usart.h"
//#include "delay_ms.h"
//#include "lcd.h"
//#include"putout.h"
//#include "string.h"
#include<iostream>
#include <stdio.h>
#include <string.h>
//#include<windows.h>
#include<stdio.h>
//#include<wchar.h>
//#include<memory.h>
extern char ascii_table_8x16[95][16];
struct uart
{
char rx0buf[64];
char rx0buf_cnt;
}
//uart0_rec; //--定义发送缓冲区
struct gprs{
char car[64];
}
struct uart uart0_rec;
struct gprs gprs_report;
//gprs_report; //---GPRS接受缓冲区
void clear_rx0buf() //--擦除缓冲区
{
int i;
for(i=0;i<120;i++)
{
uart0_rec.rx0buf[i]=0;
}
}
void GPRS_POWER(char x) //---GPRS开机
{
mg323power=x;
}
void GPRS_RESET(char x)//---GPRS复位
{
mg323rest=x;
}
void uart0_send(char *dp)//--发送函数
{
while(*dp!='\0')
{
USART1->DR=*dp;
dp++;
while((USART1->SR&0X40)==0);
}
}
/*
void* memset(void* s, int c, size_t n)
{
unsigned char* p = (unsigned char*) s;
while (n > 0){
*p++ = (unsigned char) c;
--n;
}
return s;
}
*/
// void *memset(void *s,int c,size_t n);
// char *strstr(char *str1, char *str2);
//char buf_login[];
//char cmp[];
//char adc[];
/*
void strstr()
{
}
char ascii[]
{
*,!,",#,$,%,&,',(,),*,+,,,-,.,/,0,1,2,3,4,5,6,7,8,9,
:,;,<,=,>,?,@,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,
U,V,W,X,Y,Z,[,\,],^,_,`,a,b,c,d,e,f,g,h,i,g,k,l,m,n,o,
p,q,r,s,t,u,v,w,x,y,z,{,|,},~
}
*/
unsigned char gprs_login_test(unsigned char portnum)
{
int i;
unsigned char step, step_1_count, step_cnt = 0;
unsigned char temp, temp1, tmp;
unsigned char buf[120];
unsigned char *p_strchr;
unsigned char flag_gprs;
// struct uart uart0_rec;
// struct gprs gprs_report;
char cmp[];
char adc[];
char buf_login[];
memset((void *)buf, 0x0, sizeof(buf));//----------------------
//for(i=0;i<120;i++)buf[i]=0;
step = 1;
step_1_count = 0;
flag_gprs = 1;
gprs_report.car[0] = adc[0];
while(flag_gprs){
switch(step){
case 1://上电
memset((void *)buf, 0x0, sizeof(buf)); //--------------- 系统函数
//for(i=0;i<120;i++)buf[i]=0; //-----------
sprintf((char *)buf, "this is #%02x times\r\n", step_1_count);//-----------------------系统函数
//clear_screen(); //---------------------
//display_string_8x16ring_8x16("(char *)buf"); //-------------
// display_string_8x16ring_8x16
step_1_count ++;
if(step_1_count > 5){
return 0;
}
uart0_rec.rx0buf_cnt = 0;
memset((void *)uart0_rec.rx0buf, 0x0, sizeof(uart0_rec.rx0buf));//擦除缓冲区 ----------系统函数
//for(i=0;i<120;i++)uart0_rec.rx0buf[0]=0;//-------
uart0_send("AT^SMSO\r");
delay_ms(1000);
//clear_screen(); //--------------------------------
//display_string_8x16("Power OFF MG323B\r\n"); //------------------
GPRS_RESET(1);
GPRS_POWER(1); //先置低onoff,两种情况
// 1之前工作,置低可以是模块关机
// 2之前没有工作,提前将onoff置低,可靠性高
delay_ms(1000);
//GPRS_POWER_ENABLE(0); //关闭供电mos管切断590电源
GPRS_POWER(0);
GPRS_RESET(0);
delay_ms(1000);
//clear_screen(); //------------------
//display_string_8x16("Power ON MG323B\r\n");//--------------
// GPRS_POWER_ENABLE(1); //打开供电mos管
delay_ms(1000); //延时等待,等待电路中的电容充电过程
GPRS_POWER(1);
delay_ms(2000);
GPRS_POWER(0);
delay_ms(2000);
temp = 200;
while((temp != 0) && (uart0_rec.rx0buf_cnt == 0)){
temp --;
delay_ms(50);
}
if(uart0_rec.rx0buf_cnt != 0){//uart0收到数
delay_ms(100);
if(strstr(uart0_rec.rx0buf, "SYSSTART")){//上电成功
step ++;//下一次执行下一步
//clear_screen(); //-----------------------
//display_string_8x16("power ok\r\n"); //----------------
uart0_rec.rx0buf_cnt = 0;
memset((void *)uart0_rec.rx0buf, 0x0, sizeof(uart0_rec.rx0buf));//擦除缓冲区
//for(i=0;i<120;i++)uart0_rec.rx0buf[0]=0;
}else{//收到的数不对
step = 1;
//clear_screen(); //---------------------------
// display_string_8x16("wrong data:");//-------------------
delay_ms(1000);
//clear_screen(); //---------------
// display_string_8x16("uart0_rec.rx0buf");//---------------
delay_ms(1000);
//clear_screen(); //-------------
//display_string_8x16("\r\ngo to step 1\r\n"); //---------------------------
uart0_rec.rx0buf_cnt = 0;
memset((void *)uart0_rec.rx0buf, 0x0, sizeof(uart0_rec.rx0buf));//擦除缓冲区
//for(i=0;i<120;i++)uart0_rec.rx0buf[0]=0;//-----------
}
}else{
//clear_screen(); //-------------------
//display_string_8x16("step1 get nothing\r\ngo to step 1\r\n");//--------------
step = 1;
}
//flag ++;
break;
case 2://AT
uart0_send("AT\r\n");
//clear_screen(); //-----------
//display_string_8x16("at\r\n");//-------------
temp = 10;
//100 大概20秒 时间不够 现在改为200,40s
while((temp != 0) && (uart0_rec.rx0buf_cnt == 0)){
temp --;
delay_ms(200);
}
if(uart0_rec.rx0buf_cnt != 0){
delay_ms(50);
if(strstr(uart0_rec.rx0buf, "OK")){
step ++;//下一次执行下一步
//clear_screen(); //---------------------
//display_string_8x16("GPRS AT OK\r\n");//-----------------
uart0_rec.rx0buf_cnt = 0;
memset((void *)uart0_rec.rx0buf, 0x0, sizeof(uart0_rec.rx0buf));//擦除缓冲区
//for(i=0;i<120;i++)uart0_rec.rx0buf[0]=0;
}else{//收到的数不对
step = 1;
//clear_screen(); //-----------------
//display_string_8x16("uart0 get wrong data:");//--------------------
delay_ms(1000);
//clear_screen(); //-----------------
//display_string_8x16("uart0_rec.rx0buf"); //------------------
delay_ms(1000);
//clear_screen(); //--------------------
// display_string_8x16("\r\ngo to step 1\r\n");//-------------
uart0_rec.rx0buf_cnt = 0;
memset((void *)uart0_rec.rx0buf, 0x0, sizeof(uart0_rec.rx0buf));//擦除缓冲区
//for(i=0;i<120;i++)uart0_rec.rx0buf[0]=0;//--------------
}
}else{
//clear_screen(); //--------------------
// display_string_8x16("uart0 get nothing\r\ngo to step 1\r\n");//-------------
step ++; //----
}
//flag ++;
break;
case 3://ATE0
uart0_send("ATE0\r\n");
//clear_screen(); //--------------------
// display_string_8x16("ate0\r\n");//---------------------
temp = 60;
while((temp != 0) && (uart0_rec.rx0buf_cnt == 0)){
temp --;
delay_ms(200);
} //
if(uart0_rec.rx0buf_cnt != 0){//uart0收到数
delay_ms(50);
if(strstr(uart0_rec.rx0buf, "OK")){//
step ++;//下一次执行下一步
//clear_screen(); //--------------
// display_string_8x16("ATE0 OK\r\n");//---------------
uart0_rec.rx0buf_cnt = 0;
memset((void *)uart0_rec.rx0buf, 0x0, sizeof(uart0_rec.rx0buf));//擦除缓冲区
//for(i=0;i<120;i++)uart0_rec.rx0buf[0]=0;//--------------
}else{//收到的数不对
step = 1;
//clear_screen(); //----------------
//display_string_8x16("uart0 get wrong data:");//-------------
delay_ms(1000);
//clear_screen(); //-----------------
//display_string_8x16("uart0_rec.rx0buf");//----------------
delay_ms(1000);
//clear_screen(); //---------------------------
// display_string_8x16("\r\ngo to step 1\r\n");//----------------------
uart0_rec.rx0buf_cnt = 0;
memset((void *)uart0_rec.rx0buf, 0x0, sizeof(uart0_rec.rx0buf));//擦除缓冲区
//for(i=0;i<120;i++)uart0_rec.rx0buf[0]=0;//--------------
}
}else{
//clear_screen(); //--------------------------
// display_string_8x16("uart0 get nothing\r\ngo to step 1\r\n");//----------------
step = 1;
}
//flag ++;
break;
case 4://AT+CREG?
clear_rx0buf();
uart0_send("AT^SISO?\r\n");
delay_ms(1000);
//clear_screen(); //-------------------
//display_string_8x16("uart0_rec.rx0buf");
clear_rx0buf();
//clear_screen(); //----------------
//display_string_8x16("at%creg\r\n"); //--------------
for(temp1 = 0; temp1 <20; temp1 ++){
uart0_send("AT+CREG?\r\n");
temp = 150;
while((temp != 0) && (uart0_rec.rx0buf_cnt == 0)){
temp --;
delay_ms(50);
}
if(uart0_rec.rx0buf_cnt != 0){//有数据返回
delay_ms(50);
if((strstr(uart0_rec.rx0buf, "CREG: 0,5")) || (strstr(uart0_rec.rx0buf, "CREG: 0,1"))){//网络正常
//step ++;
temp1 = 20;
//clear_screen(); //--------------------
// display_string_8x16("uart0_rec.rx0buf");//--------------------
uart0_rec.rx0buf_cnt = 0;
memset((void *)uart0_rec.rx0buf, 0x0, sizeof(uart0_rec.rx0buf));//擦除缓冲区
//for(i=0;i<120;i++)uart0_rec.rx0buf[0]=0;//----------
uart0_send("AT+CSQ\r\n");
delay_ms(1000);
uart0_send("AT+CSQ\r\n");
delay_ms(1000);
uart0_send("AT+CSQ\r\n");
delay_ms(1000);
uart0_send("AT+CSQ\r\n");
delay_ms(1000);
uart0_send("AT+CSQ\r\n");
delay_ms(1000);
//clear_screen(); //------------------------
//display_string_8x16("uart0_rec.rx0buf");//----------
step ++;
step_cnt = 0;
}else{//返回数据不对
delay_ms(500);
//clear_screen(); //-------------------------
// display_string_8x16("uart0_rec.rx0buf");//----------------
uart0_rec.rx0buf_cnt = 0;
memset((void *)uart0_rec.rx0buf, 0x0, sizeof(uart0_rec.rx0buf));//擦除缓冲区
//for(i=0;i<120;i++)uart0_rec.rx0buf[0]=0;//----
}
}else{//没有数据返回
step = 1;
temp1 = 20;
//clear_screen(); //----------------------------------------
// display_string_8x16("creg go to step 1\r\n");//----------------
uart0_rec.rx0buf_cnt = 0;
memset((void *)uart0_rec.rx0buf, 0x0, sizeof(uart0_rec.rx0buf));//擦除缓冲区
//for(i=0;i<120;i++)uart0_rec.rx0buf[0]=0;//---------
}
}
//flag ++;
break;
case 5://AT+CGDCONT=1,"IP","CMNET"
//uart0_send("AT^SISC=0\r");
delay_ms(1000);
uart0_send("AT+CGACT=1,1\r");
delay_ms(1000);
temp = 0;
while(1){
if(strstr(uart0_rec.rx0buf, "OK")){
break;
}
temp ++;
if(temp > 25){
break;
}
memset((void *)buf, 0x0, sizeof(buf));//--------
//for(i=0;i<120;i++)buf[i]=0;//-------------
sprintf(buf, "AT CGACT try times %d\r\n", temp);
delay_ms(1000);
}
uart0_send("AT^SICS=0,conType,GPRS0\r");
delay_ms(1500);
uart0_send("AT^SISS=0,srvType,Socket\r");
delay_ms(1500);
uart0_send("AT^SISS=0,conid,0\r");
delay_ms(1500);
//uart0_send("AT^SISS=0,address,\"socktcp://111.017.191.202:09098\"\r");
//uart0_send("AT^SISS=0,address,\"socktcp://218.201.102.222:08081\"\r");
uart0_send("AT^SISS=0,address,\"socktcp://111.017.191.202:08081\"\r");
delay_ms(1500);
//clear_rx0buf();
uart0_send("AT^SISO=0\r");
delay_ms(1000);
//clear_screen(); //---------------------------
//display_string_8x16("uart0_rec.rx0buf");//----------------------
delay_ms(1000);
//clear_screen(); //--------------------
// display_string_8x16("ldldldl\r\n");//-------------------
temp = 0;
while(1){
if(strstr(uart0_rec.rx0buf, "OK")){
break;
}
if(strstr(uart0_rec.rx0buf, "ERROR")){ //如果错误则退出
step = 5;
step_cnt ++; // 总的循环计数增加
break;
}
temp ++;
if(temp > 10){
step_cnt ++;
break;
}
delay_ms(1000);
memset((void *)buf, 0x0, sizeof(buf));//--------------
//for(i=0;i<120;i++)buf[i]=0;//-----------
sprintf(buf, "AT SISO try times %d\r\n", temp); //相当于拨号登录
// 有可能会出现暂时登陆不上所以要多尝试几次
//uart0_send("AT^SISO=0\r");
//clear_screen();//------------------------
// display_string_8x16("buf");//----------------
}
//delay_ms(15000);
if(strstr(uart0_rec.rx0buf, "OK")){
//clear_screen(); //--------------------------
//display_string_8x16("tcp connect ok\r\n");//----------------
step = 6;
}
if(step_cnt > 3){
step = 1;
}
delay_ms(2000);
break;
case 6: //AT%ETCPIP
buf_init();
clear_rx0buf();
uart0_send("AT^SISW=0,");
memset((void *)buf, 0x0, sizeof(buf));//-----------------
//for(i=0;i<120;i++)buf[i]=0;//-----------------
sprintf((char *)buf, "%d\r", 15);
uart0_send((char *)buf);
delay_ms(2000);
if(strstr(uart0_rec.rx0buf, "\r\n")){
//clear_screen(); //-----------------------
//display_string_8x16("rx sisw's back\r\n");//---------------
}else{
step = 1;
}
step = 7;
break;
case 7:
delay_ms(2000);
//clear_screen(); //--------------------------
//display_string_8x16("uart0_rec.rx0buf"); //--------------------
clear_rx0buf();
for(temp = 0; temp < 15; temp ++){
temp1 = buf_login[temp];
uart0_send_char(temp1);
}
delay_ms(2000);
//clear_screen(); //-------------------------
//display_string_8x16("uart0_rec.rx0buf");//----------------------
if(strstr(uart0_rec.rx0buf, "OK")){
//clear_screen(); //----------------------
//display_string_8x16("tcp connect ok\r\n");//--------------
step = 8;
}else{
//clear_screen(); //-------------------------------
//display_string_8x16("tcp connect ERROR\r\n");//---------------
step = 1;
}
clear_rx0buf();
delay_ms(2000);
//uart0_send("AT^SISC=0\r");
delay_ms(5000);
break;
case 8:
clear_rx0buf();
uart0_send("AT^SISO?\r\n");
delay_ms(1000);
//clear_screen(); //------------------
//display_string_8x16("uart0_rec.rx0buf"); //-----------
clear_rx0buf();
clear_rx0buf();
uart0_send("AT^SISR=0,64\r\n");
memset((void *)cmp, 0x0, sizeof(cmp));//---------------
//for(i=0;i<120;i++)cmp[i]=0; //--------------------
cmp[0] = 0x0d;
cmp[1] = 0x0a;
cmp[2] = 0xaa;
cmp[3] = 0x10;
delay_ms(2000);
if (strstr(uart0_rec.rx0buf, "^SISR:") && strstr(uart0_rec.rx0buf, cmp)){
// if (strstr(uart0_rec.rx0buf, "^SISR:") && strstr(uart0_rec.rx0buf, "OK\r\n")){
for(tmp = 0; tmp < uart0_rec.rx0buf_cnt; tmp ++){
memset((void *)buf, 0x0, sizeof(buf));//-------------
//for(i=0;i<120;i++)buf[i]=0;//----------
sprintf((char *)buf, "%02x ", uart0_rec.rx0buf[tmp]);
//clear_screen(); //-----------
//display_string_8x16("(char *)buf"); //---------
}
//clear_screen(); //-----------------
//display_string_8x16("login ok\r\n");//---------------
return 1;
}else if(strstr(uart0_rec.rx0buf, "ERROR: 18")){
delay_ms(2000);
step = 9;
}else{//乱码
//clear_screen(); //---------------
//display_string_8x16("login get error\r\n");//--------------
///display_string_8x16(uart0_rec.rx0buf);
step = 1;
}
clear_screen();//--------------
display_string_8x16("uart0_rec.rx0buf"); //-----------
break;
return 0;
return 0;
//clear_screen(); //---------------
//display_string_8x16("step 8\r\n");//---------------
uart0_rec.rx0buf_cnt = 0;
memset((void *)uart0_rec.rx0buf, 0x0, sizeof(uart0_rec.rx0buf));//擦除缓冲区
//for(i=0;i<120;i++)uart0_rec.rx0buf[0]=0;//------
uart0_send("AT%IOMODE=1,1,1\r\n");
temp = 100;
while((temp !=0) && (uart0_rec.rx0buf_cnt == 0)){
delay_ms(100);
temp --;
}
if(uart0_rec.rx0buf_cnt != 0){//有收到数据
delay_ms(100);
if(strstr(uart0_rec.rx0buf, "OK")){
uart0_rec.rx0buf_cnt = 0;
memset((void *)uart0_rec.rx0buf, 0x0, sizeof(uart0_rec.rx0buf));//擦除缓冲区
//for(i=0;i<120;i++)uart0_rec.rx0buf[0]=0;//----------
step = 9;
}else{
step = 4;
}
}else{
step = 4;
}
break;
case 9://AT%IPSEND buf_login
//clear_screen(); //--------------
//display_string_8x16("step 9\r\n");//-----------
uart0_send("AT%IPDR\r\n");
delay_ms(100);
uart0_send("AT%IPDR\r\n");
delay_ms(100);
uart0_send("AT%IPDR\r\n");
delay_ms(100);
uart0_send("AT%IPDR\r\n");
delay_ms(100);
uart0_rec.rx0buf_cnt = 0;
memset((void *)uart0_rec.rx0buf, 0x0, sizeof(uart0_rec.rx0buf));//擦除缓冲区
//for(i=0;i<120;i++)uart0_rec.rx0buf[0]=0;//---------
////////////////////////////////////////////
////////////////////////////////////////////
break;
case 10:
break;
case 11:
clear_screen(); //---------------
display_string_8x16("step 11\r\n"); //---------------
delay_ms(3000);
uart0_send("AT%IPDR\r\n");
delay_ms(100);
uart0_send("AT%IPDR\r\n");
delay_ms(100);
uart0_send("AT%IPDR\r\n");
delay_ms(100);
uart0_send("AT%IPDR\r\n");
delay_ms(100);
clear_rx0buf();
memset((void *)buf, 0x0, sizeof(buf));//---------
//for(i=0;i<120;i++)buf[i]=0;//------------
break;
case 12:
break;
default :
//flag ++;
break;
}
}
//if(flag >= 30){
return 0;
//}
}
编译时出现
D:\keil2\ARM\RV31\Inc\wchar.h(228): error: #20: identifier "size_t" is undefined
D:\keil2\ARM\RV31\Inc\wchar.h(230): error: #20: identifier "size_t" is undefined
D:\keil2\ARM\RV31\Inc\wchar.h(232): error: #20: identifier "size_t" is undefined
D:\keil2\ARM\RV31\Inc\wchar.h(236): error: #20: identifier "size_t" is undefined
D:\keil2\ARM\RV31\Inc\wchar.h(240): error: #20: identifier "size_t" is undefined
D:\keil2\ARM\RV31\Inc\wchar.h(244): error: #20: identifier "size_t" is undefined
D:\keil2\ARM\RV31\Inc\wchar.h(247): error: #20: identifier "size_t" is undefined
D:\keil2\ARM\RV31\Inc\wchar.h(248): error: #20: identifier "size_t" is undefined
Target not created
请问怎回事,本人编译器是最高版本的,并且用stm3.0,都出现这个错误,:
// #include "sys.h"
#include "mg323.h"
//#include"usart.h"
//#include "delay_ms.h"
//#include "lcd.h"
//#include"putout.h"
//#include "string.h"
#include<iostream>
#include <stdio.h>
#include <string.h>
//#include<windows.h>
#include<stdio.h>
//#include<wchar.h>
//#include<memory.h>
extern char ascii_table_8x16[95][16];
struct uart
{
char rx0buf[64];
char rx0buf_cnt;
}
//uart0_rec; //--定义发送缓冲区
struct gprs{
char car[64];
}
struct uart uart0_rec;
struct gprs gprs_report;
//gprs_report; //---GPRS接受缓冲区
void clear_rx0buf() //--擦除缓冲区
{
int i;
for(i=0;i<120;i++)
{
uart0_rec.rx0buf[i]=0;
}
}
void GPRS_POWER(char x) //---GPRS开机
{
mg323power=x;
}
void GPRS_RESET(char x)//---GPRS复位
{
mg323rest=x;
}
void uart0_send(char *dp)//--发送函数
{
while(*dp!='\0')
{
USART1->DR=*dp;
dp++;
while((USART1->SR&0X40)==0);
}
}
/*
void* memset(void* s, int c, size_t n)
{
unsigned char* p = (unsigned char*) s;
while (n > 0){
*p++ = (unsigned char) c;
--n;
}
return s;
}
*/
// void *memset(void *s,int c,size_t n);
// char *strstr(char *str1, char *str2);
//char buf_login[];
//char cmp[];
//char adc[];
/*
void strstr()
{
}
char ascii[]
{
*,!,",#,$,%,&,',(,),*,+,,,-,.,/,0,1,2,3,4,5,6,7,8,9,
:,;,<,=,>,?,@,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,
U,V,W,X,Y,Z,[,\,],^,_,`,a,b,c,d,e,f,g,h,i,g,k,l,m,n,o,
p,q,r,s,t,u,v,w,x,y,z,{,|,},~
}
*/
unsigned char gprs_login_test(unsigned char portnum)
{
int i;
unsigned char step, step_1_count, step_cnt = 0;
unsigned char temp, temp1, tmp;
unsigned char buf[120];
unsigned char *p_strchr;
unsigned char flag_gprs;
// struct uart uart0_rec;
// struct gprs gprs_report;
char cmp[];
char adc[];
char buf_login[];
memset((void *)buf, 0x0, sizeof(buf));//----------------------
//for(i=0;i<120;i++)buf[i]=0;
step = 1;
step_1_count = 0;
flag_gprs = 1;
gprs_report.car[0] = adc[0];
while(flag_gprs){
switch(step){
case 1://上电
memset((void *)buf, 0x0, sizeof(buf)); //--------------- 系统函数
//for(i=0;i<120;i++)buf[i]=0; //-----------
sprintf((char *)buf, "this is #%02x times\r\n", step_1_count);//-----------------------系统函数
//clear_screen(); //---------------------
//display_string_8x16ring_8x16("(char *)buf"); //-------------
// display_string_8x16ring_8x16
step_1_count ++;
if(step_1_count > 5){
return 0;
}
uart0_rec.rx0buf_cnt = 0;
memset((void *)uart0_rec.rx0buf, 0x0, sizeof(uart0_rec.rx0buf));//擦除缓冲区 ----------系统函数
//for(i=0;i<120;i++)uart0_rec.rx0buf[0]=0;//-------
uart0_send("AT^SMSO\r");
delay_ms(1000);
//clear_screen(); //--------------------------------
//display_string_8x16("Power OFF MG323B\r\n"); //------------------
GPRS_RESET(1);
GPRS_POWER(1); //先置低onoff,两种情况
// 1之前工作,置低可以是模块关机
// 2之前没有工作,提前将onoff置低,可靠性高
delay_ms(1000);
//GPRS_POWER_ENABLE(0); //关闭供电mos管切断590电源
GPRS_POWER(0);
GPRS_RESET(0);
delay_ms(1000);
//clear_screen(); //------------------
//display_string_8x16("Power ON MG323B\r\n");//--------------
// GPRS_POWER_ENABLE(1); //打开供电mos管
delay_ms(1000); //延时等待,等待电路中的电容充电过程
GPRS_POWER(1);
delay_ms(2000);
GPRS_POWER(0);
delay_ms(2000);
temp = 200;
while((temp != 0) && (uart0_rec.rx0buf_cnt == 0)){
temp --;
delay_ms(50);
}
if(uart0_rec.rx0buf_cnt != 0){//uart0收到数
delay_ms(100);
if(strstr(uart0_rec.rx0buf, "SYSSTART")){//上电成功
step ++;//下一次执行下一步
//clear_screen(); //-----------------------
//display_string_8x16("power ok\r\n"); //----------------
uart0_rec.rx0buf_cnt = 0;
memset((void *)uart0_rec.rx0buf, 0x0, sizeof(uart0_rec.rx0buf));//擦除缓冲区
//for(i=0;i<120;i++)uart0_rec.rx0buf[0]=0;
}else{//收到的数不对
step = 1;
//clear_screen(); //---------------------------
// display_string_8x16("wrong data:");//-------------------
delay_ms(1000);
//clear_screen(); //---------------
// display_string_8x16("uart0_rec.rx0buf");//---------------
delay_ms(1000);
//clear_screen(); //-------------
//display_string_8x16("\r\ngo to step 1\r\n"); //---------------------------
uart0_rec.rx0buf_cnt = 0;
memset((void *)uart0_rec.rx0buf, 0x0, sizeof(uart0_rec.rx0buf));//擦除缓冲区
//for(i=0;i<120;i++)uart0_rec.rx0buf[0]=0;//-----------
}
}else{
//clear_screen(); //-------------------
//display_string_8x16("step1 get nothing\r\ngo to step 1\r\n");//--------------
step = 1;
}
//flag ++;
break;
case 2://AT
uart0_send("AT\r\n");
//clear_screen(); //-----------
//display_string_8x16("at\r\n");//-------------
temp = 10;
//100 大概20秒 时间不够 现在改为200,40s
while((temp != 0) && (uart0_rec.rx0buf_cnt == 0)){
temp --;
delay_ms(200);
}
if(uart0_rec.rx0buf_cnt != 0){
delay_ms(50);
if(strstr(uart0_rec.rx0buf, "OK")){
step ++;//下一次执行下一步
//clear_screen(); //---------------------
//display_string_8x16("GPRS AT OK\r\n");//-----------------
uart0_rec.rx0buf_cnt = 0;
memset((void *)uart0_rec.rx0buf, 0x0, sizeof(uart0_rec.rx0buf));//擦除缓冲区
//for(i=0;i<120;i++)uart0_rec.rx0buf[0]=0;
}else{//收到的数不对
step = 1;
//clear_screen(); //-----------------
//display_string_8x16("uart0 get wrong data:");//--------------------
delay_ms(1000);
//clear_screen(); //-----------------
//display_string_8x16("uart0_rec.rx0buf"); //------------------
delay_ms(1000);
//clear_screen(); //--------------------
// display_string_8x16("\r\ngo to step 1\r\n");//-------------
uart0_rec.rx0buf_cnt = 0;
memset((void *)uart0_rec.rx0buf, 0x0, sizeof(uart0_rec.rx0buf));//擦除缓冲区
//for(i=0;i<120;i++)uart0_rec.rx0buf[0]=0;//--------------
}
}else{
//clear_screen(); //--------------------
// display_string_8x16("uart0 get nothing\r\ngo to step 1\r\n");//-------------
step ++; //----
}
//flag ++;
break;
case 3://ATE0
uart0_send("ATE0\r\n");
//clear_screen(); //--------------------
// display_string_8x16("ate0\r\n");//---------------------
temp = 60;
while((temp != 0) && (uart0_rec.rx0buf_cnt == 0)){
temp --;
delay_ms(200);
} //
if(uart0_rec.rx0buf_cnt != 0){//uart0收到数
delay_ms(50);
if(strstr(uart0_rec.rx0buf, "OK")){//
step ++;//下一次执行下一步
//clear_screen(); //--------------
// display_string_8x16("ATE0 OK\r\n");//---------------
uart0_rec.rx0buf_cnt = 0;
memset((void *)uart0_rec.rx0buf, 0x0, sizeof(uart0_rec.rx0buf));//擦除缓冲区
//for(i=0;i<120;i++)uart0_rec.rx0buf[0]=0;//--------------
}else{//收到的数不对
step = 1;
//clear_screen(); //----------------
//display_string_8x16("uart0 get wrong data:");//-------------
delay_ms(1000);
//clear_screen(); //-----------------
//display_string_8x16("uart0_rec.rx0buf");//----------------
delay_ms(1000);
//clear_screen(); //---------------------------
// display_string_8x16("\r\ngo to step 1\r\n");//----------------------
uart0_rec.rx0buf_cnt = 0;
memset((void *)uart0_rec.rx0buf, 0x0, sizeof(uart0_rec.rx0buf));//擦除缓冲区
//for(i=0;i<120;i++)uart0_rec.rx0buf[0]=0;//--------------
}
}else{
//clear_screen(); //--------------------------
// display_string_8x16("uart0 get nothing\r\ngo to step 1\r\n");//----------------
step = 1;
}
//flag ++;
break;
case 4://AT+CREG?
clear_rx0buf();
uart0_send("AT^SISO?\r\n");
delay_ms(1000);
//clear_screen(); //-------------------
//display_string_8x16("uart0_rec.rx0buf");
clear_rx0buf();
//clear_screen(); //----------------
//display_string_8x16("at%creg\r\n"); //--------------
for(temp1 = 0; temp1 <20; temp1 ++){
uart0_send("AT+CREG?\r\n");
temp = 150;
while((temp != 0) && (uart0_rec.rx0buf_cnt == 0)){
temp --;
delay_ms(50);
}
if(uart0_rec.rx0buf_cnt != 0){//有数据返回
delay_ms(50);
if((strstr(uart0_rec.rx0buf, "CREG: 0,5")) || (strstr(uart0_rec.rx0buf, "CREG: 0,1"))){//网络正常
//step ++;
temp1 = 20;
//clear_screen(); //--------------------
// display_string_8x16("uart0_rec.rx0buf");//--------------------
uart0_rec.rx0buf_cnt = 0;
memset((void *)uart0_rec.rx0buf, 0x0, sizeof(uart0_rec.rx0buf));//擦除缓冲区
//for(i=0;i<120;i++)uart0_rec.rx0buf[0]=0;//----------
uart0_send("AT+CSQ\r\n");
delay_ms(1000);
uart0_send("AT+CSQ\r\n");
delay_ms(1000);
uart0_send("AT+CSQ\r\n");
delay_ms(1000);
uart0_send("AT+CSQ\r\n");
delay_ms(1000);
uart0_send("AT+CSQ\r\n");
delay_ms(1000);
//clear_screen(); //------------------------
//display_string_8x16("uart0_rec.rx0buf");//----------
step ++;
step_cnt = 0;
}else{//返回数据不对
delay_ms(500);
//clear_screen(); //-------------------------
// display_string_8x16("uart0_rec.rx0buf");//----------------
uart0_rec.rx0buf_cnt = 0;
memset((void *)uart0_rec.rx0buf, 0x0, sizeof(uart0_rec.rx0buf));//擦除缓冲区
//for(i=0;i<120;i++)uart0_rec.rx0buf[0]=0;//----
}
}else{//没有数据返回
step = 1;
temp1 = 20;
//clear_screen(); //----------------------------------------
// display_string_8x16("creg go to step 1\r\n");//----------------
uart0_rec.rx0buf_cnt = 0;
memset((void *)uart0_rec.rx0buf, 0x0, sizeof(uart0_rec.rx0buf));//擦除缓冲区
//for(i=0;i<120;i++)uart0_rec.rx0buf[0]=0;//---------
}
}
//flag ++;
break;
case 5://AT+CGDCONT=1,"IP","CMNET"
//uart0_send("AT^SISC=0\r");
delay_ms(1000);
uart0_send("AT+CGACT=1,1\r");
delay_ms(1000);
temp = 0;
while(1){
if(strstr(uart0_rec.rx0buf, "OK")){
break;
}
temp ++;
if(temp > 25){
break;
}
memset((void *)buf, 0x0, sizeof(buf));//--------
//for(i=0;i<120;i++)buf[i]=0;//-------------
sprintf(buf, "AT CGACT try times %d\r\n", temp);
delay_ms(1000);
}
uart0_send("AT^SICS=0,conType,GPRS0\r");
delay_ms(1500);
uart0_send("AT^SISS=0,srvType,Socket\r");
delay_ms(1500);
uart0_send("AT^SISS=0,conid,0\r");
delay_ms(1500);
//uart0_send("AT^SISS=0,address,\"socktcp://111.017.191.202:09098\"\r");
//uart0_send("AT^SISS=0,address,\"socktcp://218.201.102.222:08081\"\r");
uart0_send("AT^SISS=0,address,\"socktcp://111.017.191.202:08081\"\r");
delay_ms(1500);
//clear_rx0buf();
uart0_send("AT^SISO=0\r");
delay_ms(1000);
//clear_screen(); //---------------------------
//display_string_8x16("uart0_rec.rx0buf");//----------------------
delay_ms(1000);
//clear_screen(); //--------------------
// display_string_8x16("ldldldl\r\n");//-------------------
temp = 0;
while(1){
if(strstr(uart0_rec.rx0buf, "OK")){
break;
}
if(strstr(uart0_rec.rx0buf, "ERROR")){ //如果错误则退出
step = 5;
step_cnt ++; // 总的循环计数增加
break;
}
temp ++;
if(temp > 10){
step_cnt ++;
break;
}
delay_ms(1000);
memset((void *)buf, 0x0, sizeof(buf));//--------------
//for(i=0;i<120;i++)buf[i]=0;//-----------
sprintf(buf, "AT SISO try times %d\r\n", temp); //相当于拨号登录
// 有可能会出现暂时登陆不上所以要多尝试几次
//uart0_send("AT^SISO=0\r");
//clear_screen();//------------------------
// display_string_8x16("buf");//----------------
}
//delay_ms(15000);
if(strstr(uart0_rec.rx0buf, "OK")){
//clear_screen(); //--------------------------
//display_string_8x16("tcp connect ok\r\n");//----------------
step = 6;
}
if(step_cnt > 3){
step = 1;
}
delay_ms(2000);
break;
case 6: //AT%ETCPIP
buf_init();
clear_rx0buf();
uart0_send("AT^SISW=0,");
memset((void *)buf, 0x0, sizeof(buf));//-----------------
//for(i=0;i<120;i++)buf[i]=0;//-----------------
sprintf((char *)buf, "%d\r", 15);
uart0_send((char *)buf);
delay_ms(2000);
if(strstr(uart0_rec.rx0buf, "\r\n")){
//clear_screen(); //-----------------------
//display_string_8x16("rx sisw's back\r\n");//---------------
}else{
step = 1;
}
step = 7;
break;
case 7:
delay_ms(2000);
//clear_screen(); //--------------------------
//display_string_8x16("uart0_rec.rx0buf"); //--------------------
clear_rx0buf();
for(temp = 0; temp < 15; temp ++){
temp1 = buf_login[temp];
uart0_send_char(temp1);
}
delay_ms(2000);
//clear_screen(); //-------------------------
//display_string_8x16("uart0_rec.rx0buf");//----------------------
if(strstr(uart0_rec.rx0buf, "OK")){
//clear_screen(); //----------------------
//display_string_8x16("tcp connect ok\r\n");//--------------
step = 8;
}else{
//clear_screen(); //-------------------------------
//display_string_8x16("tcp connect ERROR\r\n");//---------------
step = 1;
}
clear_rx0buf();
delay_ms(2000);
//uart0_send("AT^SISC=0\r");
delay_ms(5000);
break;
case 8:
clear_rx0buf();
uart0_send("AT^SISO?\r\n");
delay_ms(1000);
//clear_screen(); //------------------
//display_string_8x16("uart0_rec.rx0buf"); //-----------
clear_rx0buf();
clear_rx0buf();
uart0_send("AT^SISR=0,64\r\n");
memset((void *)cmp, 0x0, sizeof(cmp));//---------------
//for(i=0;i<120;i++)cmp[i]=0; //--------------------
cmp[0] = 0x0d;
cmp[1] = 0x0a;
cmp[2] = 0xaa;
cmp[3] = 0x10;
delay_ms(2000);
if (strstr(uart0_rec.rx0buf, "^SISR:") && strstr(uart0_rec.rx0buf, cmp)){
// if (strstr(uart0_rec.rx0buf, "^SISR:") && strstr(uart0_rec.rx0buf, "OK\r\n")){
for(tmp = 0; tmp < uart0_rec.rx0buf_cnt; tmp ++){
memset((void *)buf, 0x0, sizeof(buf));//-------------
//for(i=0;i<120;i++)buf[i]=0;//----------
sprintf((char *)buf, "%02x ", uart0_rec.rx0buf[tmp]);
//clear_screen(); //-----------
//display_string_8x16("(char *)buf"); //---------
}
//clear_screen(); //-----------------
//display_string_8x16("login ok\r\n");//---------------
return 1;
}else if(strstr(uart0_rec.rx0buf, "ERROR: 18")){
delay_ms(2000);
step = 9;
}else{//乱码
//clear_screen(); //---------------
//display_string_8x16("login get error\r\n");//--------------
///display_string_8x16(uart0_rec.rx0buf);
step = 1;
}
clear_screen();//--------------
display_string_8x16("uart0_rec.rx0buf"); //-----------
break;
return 0;
return 0;
//clear_screen(); //---------------
//display_string_8x16("step 8\r\n");//---------------
uart0_rec.rx0buf_cnt = 0;
memset((void *)uart0_rec.rx0buf, 0x0, sizeof(uart0_rec.rx0buf));//擦除缓冲区
//for(i=0;i<120;i++)uart0_rec.rx0buf[0]=0;//------
uart0_send("AT%IOMODE=1,1,1\r\n");
temp = 100;
while((temp !=0) && (uart0_rec.rx0buf_cnt == 0)){
delay_ms(100);
temp --;
}
if(uart0_rec.rx0buf_cnt != 0){//有收到数据
delay_ms(100);
if(strstr(uart0_rec.rx0buf, "OK")){
uart0_rec.rx0buf_cnt = 0;
memset((void *)uart0_rec.rx0buf, 0x0, sizeof(uart0_rec.rx0buf));//擦除缓冲区
//for(i=0;i<120;i++)uart0_rec.rx0buf[0]=0;//----------
step = 9;
}else{
step = 4;
}
}else{
step = 4;
}
break;
case 9://AT%IPSEND buf_login
//clear_screen(); //--------------
//display_string_8x16("step 9\r\n");//-----------
uart0_send("AT%IPDR\r\n");
delay_ms(100);
uart0_send("AT%IPDR\r\n");
delay_ms(100);
uart0_send("AT%IPDR\r\n");
delay_ms(100);
uart0_send("AT%IPDR\r\n");
delay_ms(100);
uart0_rec.rx0buf_cnt = 0;
memset((void *)uart0_rec.rx0buf, 0x0, sizeof(uart0_rec.rx0buf));//擦除缓冲区
//for(i=0;i<120;i++)uart0_rec.rx0buf[0]=0;//---------
////////////////////////////////////////////
////////////////////////////////////////////
break;
case 10:
break;
case 11:
clear_screen(); //---------------
display_string_8x16("step 11\r\n"); //---------------
delay_ms(3000);
uart0_send("AT%IPDR\r\n");
delay_ms(100);
uart0_send("AT%IPDR\r\n");
delay_ms(100);
uart0_send("AT%IPDR\r\n");
delay_ms(100);
uart0_send("AT%IPDR\r\n");
delay_ms(100);
clear_rx0buf();
memset((void *)buf, 0x0, sizeof(buf));//---------
//for(i=0;i<120;i++)buf[i]=0;//------------
break;
case 12:
break;
default :
//flag ++;
break;
}
}
//if(flag >= 30){
return 0;
//}
}
编译时出现
D:\keil2\ARM\RV31\Inc\wchar.h(228): error: #20: identifier "size_t" is undefined
D:\keil2\ARM\RV31\Inc\wchar.h(230): error: #20: identifier "size_t" is undefined
D:\keil2\ARM\RV31\Inc\wchar.h(232): error: #20: identifier "size_t" is undefined
D:\keil2\ARM\RV31\Inc\wchar.h(236): error: #20: identifier "size_t" is undefined
D:\keil2\ARM\RV31\Inc\wchar.h(240): error: #20: identifier "size_t" is undefined
D:\keil2\ARM\RV31\Inc\wchar.h(244): error: #20: identifier "size_t" is undefined
D:\keil2\ARM\RV31\Inc\wchar.h(247): error: #20: identifier "size_t" is undefined
D:\keil2\ARM\RV31\Inc\wchar.h(248): error: #20: identifier "size_t" is undefined
Target not created
请问怎回事,本人编译器是最高版本的,并且用stm3.0,都出现这个错误,:
