【TI 技术资料分享】+基于MSP430F249的GPS+GPRS车载GPS

2019-07-30 18:40发布

基于MSP430F249的GPS+GPRS车载GPS 基于MSP430F249的GPS GPRS车载GPS.zip (412.19 KB, 下载次数: 42) 2015-3-10 17:05 上传 点击文件名下载附件
  1. //******************************************************************************
  2. //  MSP430x24x Demo - Software Toggle P1.0, MCLK = VLO/8
  3. //
  4. //  Description; Pulse P1.0 with a 1/100 active duty cycle using software.
  5. //  Ultra-low frequency ~ 1.5kHz, ultra-low power active mode demonstrated. All
  6. //  the 6 I/O ports are configured as low outputs to eliminate floating inputs.
  7. //  ACLK = VL0, MCLK = VLO/8 ~ 1.5kHz, SMCLK = n/a
  8. //
  9. //                MSP430F249
  10. //             -----------------
  11. //         /||              XIN|-
  12. //          | |                 |
  13. //          --|RST          XOUT|-
  14. //            |                 |
  15. //            |             P1.0|-->LED
  16. //            |        P5.4/MCLK|-->MCLK = VLO/8
  17. //            |        P5.6/ACLK|-->ACLK = VLO
  18. //
  19. //  B. Nisarga
  20. //  Texas Instruments Inc.
  21. //  July 2007
  22. //  Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.42A
  23. //******************************************************************************
  24. //38 Decoder Control
  25. //#define Y0_138                       (0x0080)                        //P6.7
  26. //#define Y1_138                       (0x0040)                        //P6.6
  27. //#define Y2_138                       (0x0020)                        //P6.5
  28. //#define EN_138                       (0x0010)                        //P6.4
  29. //38 Decoder Output
  30. //#define USB_RESET                      ((0x0000)<<5)                        //000
  31. //#define GPS_RESET                      ((0x0004)<<5)                        //001
  32. //#define WDG_Disable             ((0x0002)<<5)                        //010
  33. //#define CPU_LED                      ((0x0006)<<5)                        //011
  34. //#define IPONE_POWER_EN          ((0x0001)<<5)                        //100
  35. //#define SPI_USB_CS              ((0x0005)<<5)                        //101
  36. //#define SPI_UART_EXTEND2_CS     ((0x0003)<<5)                        //110
  37. //#define SPI_UART_EXTEND1_CS     ((0x0008)<<5)                        //111

  38. #include "430bios.h"
  39. #include "EXAR.H"
  40. #include "HAL.H"
  41. #include "general.h"
  42. #include "main_init.h"
  43. #include "pcf8563.h"
  44. #include "Do_Reset.h"
  45. #include "Do_M22.h"
  46. #include "gps.h"
  47. #include "flash_record.h"
  48. #include "DATA_APC.H"
  49. #include "SET_P.H"

  50. // volatile to prevent optimization
  51. //volatile unsigned char j=0;
  52. unsigned char flag=0;
  53. //unsigned char flag1=0;
  54. //unsigned char buf1[8]={0x55,0xAA};

  55. //void SendUart(unsigned char *pBuffer,unsigned char n_byte);
  56. //void  init_GPRS(void);


  57. #pragma vector = TIMERB0_VECTOR
  58. __interrupt void TimerB (void)
  59. {
  60.         //CCR0+=1000;                       //定时1ms,外部时钟为8M的时钟。
  61.         gTimer++;                                        //1ms增加一次记数
  62.         gprsTimer++;
  63.         if(GPRS_STATUS&GPRS_TCP_FLAG)
  64.           gM22_TCP_ECHO_Timer++;
  65.         
  66.         if(gTimer>1000)
  67.         {
  68.           gTimer=0;
  69.          
  70.           gSysTimer++;
  71.           gCircle_Timer++;
  72.           GprsPower=1;
  73.           //flag1=1;
  74.           //if(apc_flag!=0)
  75.           //{
  76.           //  apc_flag=0;
  77.           //  EXAR_fiforeset();
  78.           //  for(j=0;j<EXAR_j;j++)
  79.           //    Send_ComA(Ptr_Chn1[j]);
  80.           //  EXAR_j=0;
  81.             
  82.             
  83.           //}
  84.          
  85.           flag=~flag;
  86.           if(flag!=0)
  87.           {
  88.             //P6OUT |= EN_138;                //Enable 38 Decoder
  89.             //P6OUT |= 0xD0;//(CPU_LED|0x1F);        //Cpu Led off
  90.             //IO_CS_FUN(CPU_LED);
  91.           }
  92.           else
  93.           {
  94.             //P6OUT &= ~EN_138;
  95.             //P6OUT &= 0x7F;
  96.             //IO_NCS_FUN();
  97.           }
  98.          
  99.         }

  100. }


  101. //volatile unsigned int i;
  102. void main(void)
  103. {
  104.   unsigned int i;
  105. //  unsigned char mm[256];
  106.   WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  107.   init_clk();
  108.   init_com0_gprs();
  109.   init_port();
  110.   init_GPS();
  111.   init_rtc();
  112.   init_flash();
  113.   init_sram();
  114.   
  115.   init_EXAR();
  116.   Init_USB();
  117.   
  118.   
  119.   
  120.   Read_Gprs_P();
  121.   Init_FMCL04();
  122.   
  123.   RTC_Set_DateTime(0x00101117,0x00123559);
  124.   page_count_global=power_on_find_page();
  125.   _EINT();
  126.   init_GPRS();                                          // P5.6= ACLK option select
  127.   for (;;)
  128.   {

  129.     //if(flag!=0)
  130.     //{
  131.      //flag=0;
  132.      
  133.      //delay(5);
  134.      //for(i=0;i<256;i++)
  135. //    I2C_Write(FM24C04_WriteAddress_Page1,247, 'A');
  136. //    I2C_Write(FM24C04_WriteAddress_Page1,248, 'P');
  137. //    I2C_Write(FM24C04_WriteAddress_Page1,249, 'C');
  138. //    for(i=0;i<256;i++)
  139.      //I2C_Write(FM24C04_WriteAddress_Page0,i,'A' );
  140. //     for(i=0;i<256;i++)
  141. //     {
  142. //     mm[i]=I2C_Read(FM24C04_WriteAddress_Page1,FM24C04_ReadAddress_Page1,i);
  143. //     }
  144. //    for(i=0;i<256;i++)
  145. //     {
  146. //     mm[i]=I2C_Read(FM24C04_WriteAddress_Page0,FM24C04_ReadAddress_Page0,i );
  147. //     }
  148.      //RTC_ReadAll();
  149.      //SendUart(buf1,sizeof(buf1));
  150.      
  151.     //}
  152.    
  153.     if(Query376Interrupt())
  154.     {
  155.       for(i=0;i<2000;i++);
  156.       Do_USB();
  157.     }
  158.    
  159.     if(GPRS_STATUS&GPRS_POWER_OFF)
  160.     {
  161.       Do_OFF_Power();
  162.     }
  163.     else if(GPRS_STATUS&GPRS_RST_FLAG)
  164.     {
  165.       Do_Reset_GSM_On();
  166.     }
  167.     else
  168.     {
  169.       Do_G20_Out();
  170.     }
  171.    
  172.     Do_GPS_Module();
  173.     EXAR_APC_FUN();
  174.     Write_APC_Data();
  175.     if(gGeneral_Flag&SET_P_FLAG)
  176.     {
  177.       gGeneral_Flag&=~SET_P_FLAG;
  178.       Read_Gprs_P();
  179.       
  180.     }
  181.     //if(flag!=0)
  182.     //{

  183.      //flag=0 ;  
  184.      //Send_ComB(gYear);
  185.      //Send_ComB(gMonth);
  186.      //Send_ComB(gDate);
  187.      //Send_ComB(gHour);
  188.      //Send_ComB(gMinute);
  189.      //Send_ComB(gSecond);
  190.      //Send_ComB(0x0d);
  191.      //Send_ComB(0x0a);


  192.     //}
  193.      //delay(500);
  194.     //i=0;
  195.       
  196.   }
  197. }



  198. #pragma vector= USCIAB0RX_VECTOR
  199. __interrupt void Uart0Rx(void)
  200. {
  201.         //int i=0;
  202.         //if((UCA0STAT&UCRXERR)==0)
  203.         //{
  204.           //AddUsData(RXBUF0);
  205.          
  206.           if( gReceive0_GSM_Buffer_Point != gReceive0_GSM_Buffer_End )
  207.         { // 缓冲区满了将不接收数据,因此每包数据不要超过256字节比较好

  208.                 gReceive0_GSM_Buffer[gReceive0_GSM_Buffer_Point] = UCA0RXBUF;

  209.                 gReceive0_GSM_Buffer_Point++;
  210.                 if( gReceive0_GSM_Buffer_Point >= sizeof(gReceive0_GSM_Buffer) ) gReceive0_GSM_Buffer_Point=0;
  211.                 //gM22_GSM_ECHO_Timer=0;
  212.                 gM22_TCP_ECHO_Timer=0;
  213.         }
  214.         //}
  215.         //else
  216.         //{
  217.          
  218.         //}
  219.       

  220. }








  221. unsigned char Compare_String(unsigned char *Source,unsigned char *Target,unsigned int Count )
  222. {
  223.     while(Count>0)
  224.     {
  225.         if((*Source)!=(*Target)) return(0);
  226.         Source++;
  227.         Target++;
  228.         Count--;
  229.     }
  230.     return(1);
  231. }
复制代码

0条回答

一周热门 更多>