STM32F105GPS BD CODE2.docx
- 文档编号:14168513
- 上传时间:2023-06-21
- 格式:DOCX
- 页数:70
- 大小:33.45KB
STM32F105GPS BD CODE2.docx
《STM32F105GPS BD CODE2.docx》由会员分享,可在线阅读,更多相关《STM32F105GPS BD CODE2.docx(70页珍藏版)》请在冰点文库上搜索。
STM32F105GPSBDCODE2
STM32F105与GPS-BD接口代码-2
王昌世//2014-4-26
0.在USART2中断程序中获取GPS/BD定位(时间,经纬度和高度)及参与定位卫星数和信号强度数据,然后进行处理。
1.原理图
2.源代码
[1]BD/GPS接收中断处理:
/*******************************************************************************
*Time:
2010-11-15///2012-12-13//2014-4-25
*Editer:
WCS
*FunctionName:
USART2_IRQHandler
*Description:
ThisfunctionhandlesUSART2globalinterruptrequest.
*Input:
None
*Output:
None
*Return:
None
$GPGGA,000007.00,,,,,0,00,,,,,,,*4F//35
$GPGLL,,,,,000007.00,.*57//25
$GPGSA,A,1,,,,,,,,,,,,,,,*1E//28
123456789101112
$GPGSV,1,1,03,02,00,000,38,13,00,000,19,26,00,000,33,,,,*4D//59
$GPRMC,000007.00,V,,,,,,,060180,,,*3B//37
$GPVTG,,,,,,,,,*7E//18
$GPGGA,100548.00,2235.4788,N,11357.7154,E,1,03,10.8,0.0,M,-2.3,M,,*41//69
$GPGLL,2235.4788,N,11357.7154,E,100548.00,A,A*62//48
$GPGSA,A,2,28,10,17,,,,,,,,,,10.8,10.8,1.0*3F//45
$GPGSV,2,1,05,05,00,209,00,10,47,190,44,17,54,021,38,20,00,000,31*74//68
$GPGSV,2,2,05,28,62,172,35,,,,,,,,,,,,*40//41
$GPGSV,3,3,10,30,61,349,41,31,40,047,24,,,,,,,,*74//50
$GPRMC,100548.00,A,2235.4788,N,11357.7154,E,0.00,0.0,160812,,,A*69//66
$GPVTG,0.0,T,,M,0.00,N,0.00,K,A*0D//34
//BD
$BDGSV,3,1,11,161,50,127,,162,60,152,,163,63,188,37,164,32,109,37*62////68byte
$BDRMC,065343.000,A,2235.498100,N,11357.642583,E,0.001,287.330,260313,,E,A*39//MAX->79BYTE
*******************************************************************************/
voidUSART2_IRQHandler(void)
{
u8temp18,temp19;
//////////////////////////////////////////////////////////////////////////////////////
volatileunsignedinttemp;
///TIM2->DIER=__TIM2_DIER_D;
USART2->SR&=~USART_FLAG_RXNE;//clearinterrupt
temp=USART2->DR;
/////////NEW//WCS//2011-3-21
GPSReceBuff0[gps_count]=(u8)temp;//2011-8-3
///FindGPSDataStep=1;
switch(FindGPSDataStep)
{
//SampleGPRMC.
//$BDRMC,065343.000,A,2235.498100,N,11357.642583,E,0.001,287.330,260313,,E,A*39//um2200//MAX->79BYTE
//$GNRMC,070125.00,A,2235.546624,N,11357.627328,E,0.0,185.5,060813,,,A*4E//TD3020C//MAX->71BYTE
case1:
if(GPSReceBuff0[gps_count]=='C'&&GPSReceBuff0[gps_count-1]=='M')//2010-12-6
{
GPSReceBuff0[gps_count+1]=0;
NMEA_HeadWord[0]=0;
strcat(NMEA_HeadWord,GPSReceBuff0+gps_count-4);
GPRMCFlag=1;
gps_count=0;//0xff;
///GPS_ENABLE;
GPS_WDG1=12;//12-2=10s.
return;
///gotogps_end;
}
elseif(gps_count>77)//um220-iiin,RMCtotallength=76byte.
{//Mustcontinouslyfind.
GPRMCFlag=0;
gps_count=0;//0xff;
///GPS_ENABLE;
////GPS_WDG1=12;//12-2=10s.
return;
}//2010-12-6
else
{///0
///if(GPSReceBuff[gps_count]=='*')//2010-12-31
if(gps_count>3&&GPSReceBuff0[gps_count-2]=='*')
{///1//hasfound.
if(GPRMCFlag==1)//new//2012-1-10
{
///if(GPRMCFlag==1&&GPSReceBuff0[gps_count-3]=='N')///-1-->-3)///-1-->-3
if(GPSReceBuff0[gps_count-3]=='N'||GPSReceBuff0[gps_count-3]==',')///
{
//recsivesucess2
//////if(LedFalshMode>10&&LedFalshMode<14)LedFalshMode=6;
if(gps_count<33)
GPS_DataProperty=1;
else
GPS_DataProperty=2;
///proceture=1;
GPRMCFlag=0;
///GPS_DISABLE;//关闭GPS
////USART2->CR1&=~USART_CR1_UE;//USARTDISable//2013-8-12
GPSEffectFlag=0;
GPSEffectFlag2=1;//wcs//2011-8-16
///ReadyUploadDataFlag=1;//exclusiveplace.
///LED_GPS_OFF;//old
GPSReceBuff0[gps_count+1]='\0';
GPSReceBuff0[gps_count+2]='\0';
gps_count=0;
GPS_Signal[0]='L';
BD_LED_FlashStatus=1;//And2areQuicklyFLASHing.
//Placesecondbuffer.//wcs//2011-7-8
for(temp18=0;temp18<76;temp18++)
GPSReceBuff[temp18]=GPSReceBuff0[temp18];
/*if(PositionModeFlag==1)//1-BD;2-GN;3-GPS.//1-GN;2-BD;3-GPS//2013-12-16
{
ChangePositionModeFlag=1;//normallyover4,BDCANposition.
}*/
FindGPSDataStep=2;//GOTOGPGSA.//////////
GPS_WDG1=12;//12-2=10s.
GPS_WDG2=362;//362-2=3606minutes.
return;/////////////////ENDTHISSTAMENG,EXIT1//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
}
////elseif(GPRMCFlag==1&&GPSReceBuff0[gps_count-3]=='A')///-1-->-3)///-1-->-3
elseif(GPSReceBuff0[gps_count-3]=='A'||GPSReceBuff0[gps_count-3]=='E')///
{
//recsivesucess.
GPS_DataProperty=3;
GPRMCFlag=0;
///GPS_DISABLE;//关闭GPS
///////USART2->CR1&=~USART_CR1_UE;//USARTDISable
GPSEffectFlag=1;
GPSEffectFlag2=1;//wcs//2011-8-16
///ReadyUploadDataFlag=1;//exclusiveplace.
GPSReceBuff0[gps_count+1]='\0';
GPSReceBuff0[gps_count+2]='\0';
gps_count=0;
GPS_Signal[0]='F';
if(BD_LED_FlashStatus!
=5||BD_LED_FlashStatus!
=6)BD_LED_FlashStatus=6;//andaresLOWFLASH.//2014-1-8
///for(gps_temp=0;gps_temp<67;gps_temp++)//adaptoriginalprogram.
///GPSReceBuff[gps_temp]=GPSReceBuff[gps_temp+6];
/////TIM2->DIER=__TIM2_DIER;//Opentim2int
//Placesecondbuffer.//wcs//2011-7-8
for(temp18=0;temp18<76;temp18++)
GPSReceBuff[temp18]=GPSReceBuff0[temp18];
//forGSMTIME.//14/01/06,15:
56:
36+08//2014-1-6
//0919
temp19=0;
if(UpdateGSM_TimeFlag==0)
{
for(temp18=0;temp18<72;temp18++)
{
if(GPSReceBuff[temp18]==',')
{
if(temp19==0)
{
UTC_DateTime[6]=GPSReceBuff[temp18+1];UTC_DateTime[7]=GPSReceBuff[temp18+2];//Hour
UTC_DateTime[8]=GPSReceBuff[temp18+3];UTC_DateTime[9]=GPSReceBuff[temp18+4];//Minute
UTC_DateTime[10]=GPSReceBuff[temp18+5];UTC_DateTime[11]=GPSReceBuff[temp18+6];//Second
}
elseif(temp19==8)
{
UTC_DateTime[0]=GPSReceBuff[temp18+5];UTC_DateTime[1]=GPSReceBuff[temp18+6];//Year
UTC_DateTime[2]=GPSReceBuff[temp18+3];UTC_DateTime[3]=GPSReceBuff[temp18+4];//Moon
UTC_DateTime[4]=GPSReceBuff[temp18+1];UTC_DateTime[5]=GPSReceBuff[temp18+2];//Day
break;
}
else;
temp19++;
}
}
}////end
//NEW//2012-8-17
FindGPSDataStep=2;//GOTOGPGSA.
GPS_WDG1=12;//12-2=10s.
GPS_WDG2=362;//362-2=3606minutes.
return;
////////////////////////////////////////EXIT2////////////////////////////////////////////////////////
}
else;
}
else
{////2//GPSSIGNALISINVALID,gineupTHEsample.//2011-1-2
;
}///2
}///1//if=='*'
///gps_end:
gps_count++;
}///!
='C'
break;
case2:
//////////////SAMPLEGPGGA
if(BD_GGA_Flag==0)//0=GPS,1=BD.
{
if(GPSReceBuff0[gps_count]=='A'&&GPSReceBuff0[gps_count-1]=='G')//2010-12-16
{
GGA_Flag=1;
gps_count=0;//0xff;
///GPS_ENABLE;
GPS_WDG1=12;//12-2=10s.
return;
///gotogps_end;
}
}
else
{
if(GPSReceBuff0[gps_count]=='A'&&GPSReceBuff0[gps_count-1]=='G'&&GPSReceBuff0[gps_count-4]=='B')//2010-12-16
{
GGA_Flag=1;
gps_count=0;//0xff;
///GPS_ENABLE;
GPS_WDG1=12;//12-2=10s.
return;
///gotogps_end;
}
}
//elseif(gps_count>76)//GGA'SMAXTOTALLENGTH=77BYTE,//TD3020C.//
if(gps_count>75)//68->75//TD3020CGGA'SMAXTOTALLENGTH=69BYTE.//UM220-IIINMAXTOTALLENGTH=76.
{//Don'tfind,GOTOfinfGSV.
GGA_Flag=0;
gps_count=0;//0xff;
/////FindGPSDataStep=3;//2013-8-26
return;
}//2010-12-6
else
{///0
///if(GPSReceBuff[gps_count]=='*')//2010-12-31
if(gps_count>3&&GPSReceBuff0[gps_count-2]=='*')
{///1
if(GGA_Flag==1)//new//2012-1-10
{
///if(GPRMCFlag==1&&GPSReceBuff0[gps_count-3]=='N')///-1-->-3)///-1-->-3
///if(GPSReceBuff0[gps_count-3]>0x29&&GPSReceBuff0[gps_count-3]<0x40)///
///{
//recsivesucess2
/*if(gps_count<43)//Totallength=44.
GPS_GGA_DataProperty=1;
else
GPS_GGA_DataProperty=2;*/
///proceture=1;
GGA_Flag=0;
GPSReceBuff0[gps_count+1]='\0';
GPSReceBuff0[gps_count+2]='\0';
//Placesecondbuffer.//wcs//2011-7-8
///for(temp18=0;temp18<65;temp18++)
if(BD_GGA_Flag==0)//0=GPS,1=BD.//2013-12-17
{
for(temp18=0;temp18 GPS_GGA_Buffer[temp18]=GPSReceBuff0[temp18]; if(PositionModeFlag==1)FindGPSDataStep=3;//OnlygasGNggawhenGNmode. } else { for(temp18=0;temp18 BD_GGA_Buffer[temp18]=GPSReceBuff0[temp18]; FindGPSDataStep=3; if(PositionModeFlag==1)BD_GGA_Flag=0;//ReadyGPS. } ////FindGPSDataStep=3; //startthetimerofGSVovertime. ////GSV_OverTimeTimer=2; gps_count=0; GPS_WDG1=12;//12-2=10s. GPS_WDG2=362;//362-2=3606minutes. delay_ms(80);//WaitGGA. return; ////}//2013-12-30 /////else;//2013-12-30 }///if(GGA_Flag==1) else {////2//GPSSIGNALISINVALID,gineupTHEsample.//2011-1-2 ; }///2 }///1//if=='*' ///gps_end: gps_count++; }///! ='A' break; case3: //////////////SAMPLEGPGSV1 //$GPGSV,1,1,4,01,00,000,36,08,00,000,33,09,00,000,30,11,00,000,35*4D//2013-8-12 //060 //if(GPSReceBuff0[gps_count]=='V'&&GPSReceBuff0[gps_count-1]=='S')//2010-12-6// //startthetimerofovertime. ////NEW//2013-12-30 if(GPSReceBuff0[gps_count]=='V'&&GPSReceBuff0[gps_count-4]=='G')//2013-8-12//FindGPGSV { GSV1_Flag=1; ///GPGSV_Flag=1;//2013-8-12 BD_GSV_Flag=0;//2013-8-12 gps_count=0;//0xff; ///GPS_ENABLE; GPS_WDG1=12;//12-2=10s. return; ///gotogps_end; } if(gps_count>130)//GSV'STOTALLENGTH=67BYTEToTD3020C//2013-8-126//mustenoughlength,preventfromnoexist. { if(PositionModeFlag==1&&BD_GSV_Flag==0) { BD_GSV_Flag=1; } else { EndSampleGPS_Data();//finishGPSDATA } ///gotoFinishSampleGPS_Data /////FindGPSDataStep=3;//2013-8-26 return; } else {///0<130 ///if(GPSReceBuff[gps_count]=='*')//2010-12-31 if(gps_count>3&&GPSReceBuff0[gps_count-2]=='*') {///1 if(GSV1_Flag==1)//new//2012-1-10 { //recsivesucess2 GSV1_Flag=0; GPSReceBuff0[gps_count+1]='\0'; GPSReceBuff0[gps_count+2]='\0'; //Placesecondbuffer.//wcs//2011-7-8 for(temp18=0;temp18 GPS_GSV1_Buffer[temp18]=GPSReceBuff0[temp18]; GP_GSV_MessageTotal=GPS_GSV1_Buffer[1]-0x30; gps_count=0; GPS_WDG1=12;//12-2=10s. GPS_WDG2=362;//362-2=3606minutes if((
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- STM32F105GPS BD CODE2