你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

使用cube库接收GPS数据容易死机 ???

[复制链接]
hpdell 提问时间:2016-5-16 22:31 /
悬赏3ST金币未解决
本帖最后由 hpdell 于 2016-5-17 09:33 编辑

使用cube库接收GPS数据容易死机 ???

同样的gps接收程序,使用标准库接收时完全没有任何问题的。

程序如下:


void MX_USART2_UART_Init(void)
{
  huart2_gps.Instance = USART2;
  huart2_gps.Init.BaudRate = 9600;     // 591 的GPS 模块的波特率是 9600
  huart2_gps.Init.WordLength = UART_WORDLENGTH_8B;
  huart2_gps.Init.StopBits = UART_STOPBITS_1;
  huart2_gps.Init.Parity = UART_PARITY_NONE;
  huart2_gps.Init.Mode = UART_MODE_RX;                                                        //         单片机的 USART2 TX 引脚作为普通的引脚使用
  huart2_gps.Init.HwFlowCtl = UART_HWCONTROL_NONE;
  huart2_gps.Init.OverSampling = UART_OVERSAMPLING_16;
//  huart1.Init.OneBitSampling = UART_ONEBIT_SAMPLING_DISABLED;     // usart2 使用
//  huart1.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;            // usart2 使用
  HAL_UART_Init(&huart2_gps);
        
        GPS_PowerInit();
        
  if(HAL_UART_Receive_IT(&huart2_gps, &gps.Buff, 1) != HAL_OK)   // 启动一次接收中断
  {  
      printf("\r\nUART2 Receive Init IT Error");
  }         
}



#define  NEMA_NUM_MAX   6             //缓冲的NEMA语句数量
#define  NEMA_CHAR_MAX  120           //缓冲的NEMA语句字符数量

struct
{
        u8   isupdated;                                          //NEMA 缓冲区更新标志
        char buffer[NEMA_CHAR_MAX];         //NEMA 缓冲区
      
}GPS_NEMA[NEMA_NUM_MAX] ;   




/*
*****************************************************************************
* 在usart 中断 中调用
*****************************************************************************
*/
void  GPS_UsartRx(u8 buffer)
{
        static u8 NEMA_count = 0;
        static u8 char_count = 0;

        if(buffer == '$')
        {  
                GPS_NEMA[NEMA_count].isupdated = 1;  //将上面一条语句打上更新标志
                NEMA_count++;
                if(NEMA_count > (NEMA_NUM_MAX-1))
                {
                        NEMA_count = 0;
                }
                GPS_NEMA[NEMA_count].isupdated = 0;  //将本条语句打上未更新标志, 指向结构体里面的下一个变量
                GPS_NEMA[NEMA_count].buffer[0] = '$';
                char_count = 1;
        }
        else
        {
                if(char_count < NEMA_CHAR_MAX-1)
                GPS_NEMA[NEMA_count].buffer[char_count++] = buffer;

        }
}



void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
                if(huart->Instance == USART2)                // GPS 接收使用
                {
                        GPS_UsartRx( gps.Buff );
                        HAL_UART_Receive_IT(&huart2_gps, &gps.Buff, 1);            // 不知道是不是此处的开关动作太频繁造成的 ????????????????????                        
//                        if(gps.Buff == '$')                // 测试使用
//                                printf("\r\n");
//                        printf("%s", (char *) & gps.Buff);
                }
}




//串口接收中断函数
void USART2_IRQHandler(void)
{

        // 标准库
//        if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET)    // 接收中断有效 ;
//        {
//                USART_ClearITPendingBit(USART2, USART_IT_RXNE);                  // 清除USART1的接收中断
//                //gpsbuff = (uint16_t)((USART2->DR) & (uint16_t)0x01FF);
//                gpsbuff = USART_ReceiveData(USART2);               // 返回USARTx最近接收到的数据 ;
//                GPS_UsartRx(gpsbuff);
//        }

        
        HAL_UART_IRQHandler( & huart2_gps);
}

收藏 评论8 发布时间:2016-5-16 22:31

举报

8个回答
Paderboy 回答时间:2016-5-17 09:02:59
没有这回事吧。有问题,发上来看看。。
wofei1314 回答时间:2016-5-17 09:10:13
估计是你程序的问题
hpdell 回答时间:2016-5-17 09:34:27
Paderboy 发表于 2016-5-17 09:02
没有这回事吧。有问题,发上来看看。。

你好,昨天发帖时,代码死活发不上去,今天刚刚把代码补上去了,你看看是什么情况 ?
hpdell 回答时间:2016-5-17 09:35:31
wofei1314 发表于 2016-5-17 09:10
估计是你程序的问题

目前我也搞不清哟,但是gps接收部分以前是使用在标准库里面的,完全木有任何问题,目前想使用在这个cube的库上,结果却不行了
hpdell 回答时间:2016-6-10 14:29:13
终于自己搞定了
hpdell 回答时间:2016-6-10 14:30:47
自己终于搞定了
hpdell 回答时间:2016-6-10 14:31:40
终于搞定了,原来是gps解析的问题
hpdell 回答时间:2016-6-11 08:16:52
已经解决了,是gps 解析程序问题造成的

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版