OpenEdv-开源电子网

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

S1216GPS模块的问题

[复制链接]

6

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
97
金钱
97
注册时间
2018-5-22
在线时间
23 小时
发表于 2018-7-3 16:27:31 | 显示全部楼层 |阅读模式
5金钱
最近使用stm32f767实现了LWIP的网络UDP通信,并且把通信的信息传到LCD上显示了出来,然后想着再加一个GPS信息的显示功能,结果就出现了一个问题,就是GPS模块的串口三初始化之后,程序就一直卡死在接收中断中,然后UDP通信也没法用了。不知道大家有没有遇到过类似的问题。两个都是通过改的例程,按理说应该没有冲突的。

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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2018-7-4 02:29:14 | 显示全部楼层
卡死说明没清中断标志,一般这个问题居多
回复

使用道具 举报

6

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
97
金钱
97
注册时间
2018-5-22
在线时间
23 小时
 楼主| 发表于 2018-7-4 14:55:28 | 显示全部楼层
正点原子 发表于 2018-7-4 02:29
卡死说明没清中断标志,一般这个问题居多

void USART3_IRQHandler(void)
{
u8 res;       
       
       
                  if(__HAL_UART_GET_IT(&UART3_Handler,USART_IT_ORE)!=RESET)
        {
                res=USART3->RDR;                                        
               
                __HAL_UART_CLEAR_OREFLAG(&UART3_Handler);
        }
       
         if(__HAL_UART_GET_FLAG(&UART3_Handler, USART_FLAG_NE) != RESET)
                {
                        res=USART3->RDR;                        
                       
                        __HAL_UART_CLEAR_NEFLAG(&UART3_Handler);
                }
               
         if(__HAL_UART_GET_FLAG(&UART3_Handler, USART_FLAG_FE) != RESET)
                {
      res=USART3->RDR;                                        

                        __HAL_UART_CLEAR_FEFLAG(&UART3_Handler);
                }
               
         if(__HAL_UART_GET_FLAG(&UART3_Handler, USART_FLAG_PE) != RESET)
                {
                        res=USART3->RDR;                        
                       
                        __HAL_UART_CLEAR_PEFLAG(&UART3_Handler);
                }                        
               
                       
        if(__HAL_UART_GET_IT(&UART3_Handler,UART_IT_RXNE)>0)
  {         
                res=USART3->RDR;        
               
                Uart3_Rec_Flag=1;               

                 if( Uart3_Rec_ComPt_Flag==0 )//
                 {
         if(USART3_RX_STA<2000)
                                 {
                                     USART3_RX_BUF[USART3_RX_STA++]=res;        //
                                 }
         else
         {
                                     USART3_RX_STA=0;  
                                 }                                         
                                 
                          Uart3_Timeout_counter=0;
                 }
                 else
                 {
                                 Uart3_Rec_ComPt_Flag=1;                                //                  
                 }
        }       
       
                 
}   

把例程的接收中断改成这样了,通过flag给他设定时接收,时间一过就标记接收完成,但是这样GPS就接收不到消息,然后网络通信也无法进行了。
回复

使用道具 举报

6

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
97
金钱
97
注册时间
2018-5-22
在线时间
23 小时
 楼主| 发表于 2018-7-4 14:57:33 | 显示全部楼层
正点原子 发表于 2018-7-4 02:29
卡死说明没清中断标志,一般这个问题居多

然后也没有找到串口3 的中断标志,它是有个标志 USART3_RX_STA,以此判断接收完成的。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-2 20:16

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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