野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8969|回复: 4

关于GPS/GPRS移植问题

[复制链接]
发表于 2019-5-8 21:50:51 | 显示全部楼层 |阅读模式
本帖最后由 星光、 于 2019-5-8 21:52 编辑

用的GPS和GPRS例程,

GSM卡在gsm_init()函数中,用的是GPS的模板如果用GSM的模板,就会卡在 nmea_decode_test();
真的是懵逼了,毕设最后一下了,调不出来了
中断:
void SysTick_Handler(void)
{

        TimingDelay_Decrement();        

}


void GPS_DMA_IRQHANDLER(void)
{

  GPS_ProcessDMAIRQ();

}

void DEBUG_USART_IRQHandler(void)
{
#if 0
    bsp_DEBUG_USART_IRQHandler();
#else
    uint8_t ch;

    if(USART_GetITStatus(DEBUG_USART, USART_IT_RXNE) != RESET)
    {
        //ch = USART1->DR;
        ch = USART_ReceiveData(DEBUG_USART);
        printf( "%c", ch );    //将接受到的数据直接返回打印
    }
#endif
}
void GSM_USART_IRQHandler(void)
{

    bsp_GSM_USART_IRQHandler();

}






还有堆栈的代码:

Stack_Size      EQU     0x000000400

                AREA    STACK, NOINIT, READWRITE, ALIGN=3
Stack_Mem       SPACE   Stack_Size
__initial_sp


; <h> Heap Configuration
;   <o>  Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
; </h>


Heap_Size       EQU     0x00001000

                AREA    HEAP, NOINIT, READWRITE, ALIGN=3


__heap_base         
Heap_Mem        SPACE   Heap_Size
__heap_limit

                PRESERVE8
                THUMB

回复

使用道具 举报

发表于 2019-5-9 10:14:16 | 显示全部楼层
    while(1)
    {
      if(GPS_HalfTransferEnd)     /* 接收到GPS_RBUFF_SIZE一半的数据 */
      {
        /* 进行nmea格式解码 */
        nmea_parse(&parser, (const char*)&gps_rbuff[0], HALF_GPS_RBUFF_SIZE, &info);
        
        GPS_HalfTransferEnd = 0;   //清空标志位
        new_parse = 1;             //设置解码消息标志
      }
      else if(GPS_TransferEnd)    /* 接收到另一半数据 */
      {

        nmea_parse(&parser, (const char*)&gps_rbuff[HALF_GPS_RBUFF_SIZE], HALF_GPS_RBUFF_SIZE, &info);
      
        GPS_TransferEnd = 0;
        new_parse =1;
      }
      
      if(new_parse )                //有新的解码消息   
      {   
        /* 对解码后的时间进行转换,转换成北京时间 */
        GMTconvert(&info.utc,&beiJingTime,8,1);
        
        /* 输出解码得到的信息 */
                                printf("\r\n时间%d-%02d-%02d,%d:%d:%d\r\n", beiJingTime.year+1900, beiJingTime.mon,beiJingTime.day,beiJingTime.hour,beiJingTime.min,beiJingTime.sec);
                               
                                //info.lat lon中的格式为[degree][min].[sec/60],使用以下函数转换成[degree].[degree]格式
                                deg_lat = nmea_ndeg2degree(info.lat);
                                deg_lon = nmea_ndeg2degree(info.lon);
                               
                                printf("\r\n纬度:%f,经度%f\r\n",deg_lat,deg_lon);
        printf("\r\n海拔高度:%f 米 ", info.elv);
        printf("\r\n速度:%f km/h ", info.speed);
        printf("\r\n航向:%f 度", info.direction);
                               
                                printf("\r\n正在使用的GPS卫星:%d,可见GPS卫星:%d",info.satinfo.inuse,info.satinfo.inview);

                                printf("\r\n正在使用的北斗卫星:%d,可见北斗卫星:%d",info.BDsatinfo.inuse,info.BDsatinfo.inview);
                                printf("\r\nPDOP:%f,HDOP:%f,VDOP:%f",info.PDOP,info.HDOP,info.VDOP);
        
        new_parse = 0;
      }
       
        }
回复 支持 反对

使用道具 举报

发表于 2019-5-9 10:15:11 | 显示全部楼层
函数里面有个while(1)
进入函数就出不来了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-5-9 10:23:05 | 显示全部楼层
pan_gu_lun 发表于 2019-5-9 10:15
函数里面有个while(1)
进入函数就出不来了

我的是直接卡住,串口都打不出数据
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-5-10 09:14:45 | 显示全部楼层
解决了,两个工程的系统文件里的函数不一样,少了一个滴答定时器和串口中断函数,添上就好了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-23 22:44 , Processed in 0.031657 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表