OpenEdv-开源电子网

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

关于接收GPS数据的

[复制链接]

1

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
99
金钱
99
注册时间
2018-8-31
在线时间
14 小时
发表于 2018-11-21 16:32:40 | 显示全部楼层 |阅读模式
1金钱
我用STM32的串口3去接收GPS的数据,并用串口1将数据发到串口助手上。这部分现在可以实现,但是一旦加上LCD的驱动程序后,串口部分就无法接收到程序了。

下面是我的一些程序:
int main(void)
{         
        delay_init();            
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
        uart_init(9600);         
        USART3_Init(9600);
        LED_Init();                           
        LCD_Init();
         
         
        POINT_COLOR=RED;      
         
        LCD_ShowString(70,0,200,200,16,"GPS  Navigation");

        while(1)
        {   

                if(point1==1)
                {
                                printf("%s",USART3_RX_BUF);
//                                while((USART1->SR&0X40)==0);
                                        point1=0;
                }

        }         
}





这是串口3的程序:
u16 USART3_RX_STA;                                                  
u8  USART3_RX_BUF[USART3_MAX_RECV_LEN];
int point1;


void USART3_Init(u32 bound)
{
  NVIC_InitTypeDef NVIC_InitStructure;
        GPIO_InitTypeDef GPIO_InitStructure;
        USART_InitTypeDef USART_InitStructure;

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);        // GPIOA??
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3,ENABLE);

//        USART_DeInit(USART3);  //¸′λ′®¿ú2
       
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; //PA.9
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;        //¸′óÃíÆíìêä3ö
  GPIO_Init(GPIOB, &GPIO_InitStructure);//3õê¼»ˉGPIOA.9

  //USART1_RX          GPIOA.103õê¼»ˉ
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;//PA10
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//¸¡¿Õêäèë
  GPIO_Init(GPIOB, &GPIO_InitStructure);//3õê¼»ˉGPIOA.10  

  //Usart1 NVIC ÅäÖÃ
  NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3 ;//ÇàÕ¼óÅÏè¼¶3
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;                //×óóÅÏè¼¶3
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                        //IRQí¨μàê1Äü
        NVIC_Init(&NVIC_InitStructure);        //¸ù¾YÖ¸¶¨μÄ2Îêy3õê¼»ˉVIC¼Ä′æÆ÷

   //USART 3õê¼»ˉéèÖÃ

        USART_InitStructure.USART_BaudRate = bound;
        USART_InitStructure.USART_WordLength = USART_WordLength_8b;
        USART_InitStructure.USART_StopBits = USART_StopBits_1;
        USART_InitStructure.USART_Parity = USART_Parity_No;
        USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
        USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;       

  USART_Init(USART3, &USART_InitStructure);
  USART_ITConfig(USART3, USART_IT_RXNE, ENABLE);
  USART_Cmd(USART3, ENABLE);  
}

void USART3_IRQHandler(void)                       
{
        u8 res;
       
        if(USART_GetITStatus(USART3, USART_IT_RXNE) != RESET)  
                {
                res =USART_ReceiveData(USART3);
                       
                        if((USART3_RX_STA== 0) && (res == '$') || (USART3_RX_STA != 0))  
                                   {
                USART3_RX_BUF[USART3_RX_STA]= res;
                USART3_RX_STA++;
                if(USART3_RX_STA== USART3_MAX_RECV_LEN) USART3_RX_STA = 0;

                if((USART3_RX_BUF[USART3_RX_STA-1]== '\n')&&(USART3_RX_BUF[USART3_RX_STA-2] == '\r'))
                {
                    USART3_RX_BUF[USART3_RX_STA]= 0;
                    USART3_RX_STA= 0;     
                                                                                point1=1;
                }
                                                }

}
}


希望能得到各位的帮忙。。。。。

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

使用道具 举报

1

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
99
金钱
99
注册时间
2018-8-31
在线时间
14 小时
 楼主| 发表于 2018-11-21 16:33:53 | 显示全部楼层
是无法接收数据,打错字了。。。。
回复

使用道具 举报

109

主题

5564

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
10572
金钱
10572
注册时间
2017-2-18
在线时间
1914 小时
发表于 2018-11-21 16:52:57 | 显示全部楼层
USART3_RX_BUF[ ]都没有数据吗?
原子这边GPS例程是支持液晶显示的和数据通过串口1上传到GNSS_View的
回复

使用道具 举报

1

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
99
金钱
99
注册时间
2018-8-31
在线时间
14 小时
 楼主| 发表于 2018-11-21 17:31:13 | 显示全部楼层
peng1554 发表于 2018-11-21 16:52
USART3_RX_BUF[ ]都没有数据吗?
原子这边GPS例程是支持液晶显示的和数据通过串口1上传到GNSS_View的

我也用原子的程序该过,就保留了LCD驱动和串口收发,结果还是一样。。。。
回复

使用道具 举报

109

主题

5564

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
10572
金钱
10572
注册时间
2017-2-18
在线时间
1914 小时
发表于 2018-11-21 18:00:21 | 显示全部楼层
propoganda 发表于 2018-11-21 17:31
我也用原子的程序该过,就保留了LCD驱动和串口收发,结果还是一样。。。。

应该是你改的程序有问题。你要用仿真器找找原因了
回复

使用道具 举报

10

主题

778

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6745
金钱
6745
注册时间
2017-4-12
在线时间
1258 小时
发表于 2018-11-22 10:15:18 | 显示全部楼层
看下LCD里是不是用了PB10 PB11
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-21 23:27

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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