OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2627|回复: 0

ATGM332D与STM32单片机的程序问题

[复制链接]

2

主题

2

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2020-4-4
在线时间
2 小时
发表于 2020-5-2 18:07:10 | 显示全部楼层 |阅读模式
ATGM332D-5N中科微型电子,和32单片机F103的开发板连接使用,使用串口输出位置信息,下载程序后只显示welcome to use,不能解析位置数据,哪位老师知道这是怎么回事,又改如何解决呢,多谢解答!

解析如下所示:


程序如下所示:

#include "stm32f10x.h"
#include "delay.h"
#include "usart.h"
#include "led.h"

//éùÃ÷
void errorLog(int num);
void parseGpsBuffer(void);
void printGpsBuffer(void);

int main(void)
{      
        delay_init();
      
        NVIC_Configuration();          //éèÖÃNVICÖD¶Ï·Ö×é2:2λÇàÕ¼óÅÏè¼¶£¬2λÏìó|óÅÏè¼¶
        uart_init(9600);         //′®¿ú3õê¼»ˉÎa9600
        Init_LEDpin();
        LED1 = 1;
      
        clrStruct();
      
        printf("Welcome to use!\r\n");
        printf("ILoveMcu.taobao.com!\r\n");
        while(1)
        {
                parseGpsBuffer();
                printGpsBuffer();
               

        }
}

void errorLog(int num)
{
      
        while (1)
        {
                  printf("ERROR%d\r\n",num);
        }
}

void parseGpsBuffer()
{
        char *subString;
        char *subStringNext;
        char i = 0;
        if (Save_Data.isGetData)
        {
                Save_Data.isGetData = false;
                printf("**************\r\n");
                printf(Save_Data.GPS_Buffer);

               
                for (i = 0 ; i <= 6 ; i++)
                {
                        if (i == 0)
                        {
                                if ((subString = strstr(Save_Data.GPS_Buffer, ",")) == NULL)
                                        errorLog(1);        //&#189;a&#206;&#246;′í&#206;ó
                        }
                        else
                        {
                                subString++;
                                if ((subStringNext = strstr(subString, ",")) != NULL)
                                {
                                        char usefullBuffer[2];
                                        switch(i)
                                        {
                                                case 1:memcpy(Save_Data.UTCTime, subString, subStringNext - subString);break;        //&#187;&#241;è&#161;UTCê±&#188;&#228;
                                                case 2:memcpy(usefullBuffer, subString, subStringNext - subString);break;        //&#187;&#241;è&#161;UTCê±&#188;&#228;
                                                case 3:memcpy(Save_Data.latitude, subString, subStringNext - subString);break;        //&#187;&#241;è&#161;&#206;3&#182;èD&#197;&#207;¢
                                                case 4:memcpy(Save_Data.N_S, subString, subStringNext - subString);break;        //&#187;&#241;è&#161;N/S
                                                case 5:memcpy(Save_Data.longitude, subString, subStringNext - subString);break;        //&#187;&#241;è&#161;&#190;-&#182;èD&#197;&#207;¢
                                                case 6:memcpy(Save_Data.E_W, subString, subStringNext - subString);break;        //&#187;&#241;è&#161;E/W

                                                default:break;
                                        }

                                        subString = subStringNext;
                                        Save_Data.isParseData = true;
                                        if(usefullBuffer[0] == 'A')
                                                Save_Data.isUsefull = true;
                                        else if(usefullBuffer[0] == 'V')
                                                Save_Data.isUsefull = false;

                                }
                                else
                                {
                                        errorLog(2);        //&#189;a&#206;&#246;′í&#206;ó
                                }
                        }


                }
        }
}

void printGpsBuffer()
{
        if (Save_Data.isParseData)
        {
                Save_Data.isParseData = false;
               
                printf("Save_Data.UTCTime = ");
                printf(Save_Data.UTCTime);
                printf("\r\n");

                if(Save_Data.isUsefull)
                {
                        Save_Data.isUsefull = false;
                        printf("Save_Data.latitude = ");
                        printf(Save_Data.latitude);
                        printf("\r\n");


                        printf("Save_Data.N_S = ");
                        printf(Save_Data.N_S);
                        printf("\r\n");

                        printf("Save_Data.longitude = ");
                        printf(Save_Data.longitude);
                        printf("\r\n");

                        printf("Save_Data.E_W = ");
                        printf(Save_Data.E_W);
                        printf("\r\n");
                }
                else
                {
                        printf("GPS DATA is not usefull!\r\n");
                }
               
        }
}


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-26 11:22

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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