You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

STM32 Nucleo-WL55JC1读取GNSS模块UART数据异常求助

STM32 Nucleo-WL55JC1读取GNSS模块数据异常问题

我正在使用STM32 Nucleo-WL55JC1读取GNSS模块数据,此前仅用过Arduino IDE,首次接触STM32 IDE及HAL库。同一GNSS模块在ESP设备上能正常输出,但STM32端出现多种异常,具体情况如下:

初始代码及问题

初始主循环代码:

while (1)
{
      uint8_t buff[500];

      HAL_UART_Receive(&huart1, buff, strlen((char*)buff), HAL_MAX_DELAY);
      HAL_UART_Transmit(&huart2, buff, strlen((char*)buff), HAL_MAX_DELAY);
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
}

运行后串口监视器仅输出少量信息后冻结:

$PSTMVER,GNSSLIB_8.4.18.25_CP_ARM*07  
$GPTXT,DEFAULT LIV3FL CONFIGURATION*12  
$PSTMVER,OS20LIB_4.4.0_ARM*40  
$PSTMVER,GPSAPP_2.11.0_CP_LIV3FL_RC9_ARM*20  
$PSTMVER,BINIMG_4.6.15_CP_LIV3FL_RC9_ARM*27

修改接收超时后的问题

将接收超时改为1000后,能输出部分NMEA数据但存在信息混叠:

$PSTMCPU,20.86,-1,98*4F  
$GPRMC,060732.000,V,0745.75046,S,11023.31916,E,,,071222,,,N*64  $GPGGA,060732.000,0745.75046,S,11023.31916,E,0,00,99.0,172.57,M,0.0,M11023.31916,E,060731.000,V,N*54

拔插MCU后的问题

拔插MCU后,设备仅循环输出重复信息:

$PSTMVER,GPSAPP_2.11.0_CP_LIV3FL_RC9_ARM*20  
$PSTMVPSTMVER,OS20LIB_4.4.0_ARM*40  
$PSTMVER,GPSAPP_2.11.0_CP_LIV3FL_RC9_ARM*20  
$PSTMVPSTMVER,OS20LIB_4.4.0_ARM*40  
$PSTMVER,GPSAPP_2.11.0_CP_LIV3FL_RC9_ARM*20  
$PSTMVPSTMVER,OS20LIB_4.4.0_ARM*40

ESP设备上的正常输出对比

同一GNSS模块在ESP设备上能正常输出数据:

$PSTMCPU,21.69,-1,98*4F
$GPRMC,062153.000,V,0745.76371,S,11023.30606,E,,,071222,,,N*6C
$GPGGA,062153.000,0745.76371,S,11023.30606,E,0,02,99.0,189.71,M,0.0,M,,*77
$GPVTG,,T,,M,,N,,K,N*2C
$GNGSA,A,1,26,27,,,,,,,,,,,99.0,99.0,99.0*1F
$GNGSA,A,1,,,,,,,,,,,,,99.0,99.0,99.0*1E
$GPGSV,2,1,05,26,53,342,32,27,39,189,27,22,35,019,,23,14,149,*75
$GPGSV,2,2,05,21,07,251,,,,,,,,,,,,,*4E
$GLGSV,2,1,06,70,70,053,,74,33,309,,71,29,352,,69,26,142,27*6F
$GLGSV,2,2,06,80,15,158,,85,11,205,,,,,,,,,*69
$GPGLL,0745.76371,S,11023.30606,E,062153.000,V,N*5F

编辑1:修改代码后的情况

按照建议修改代码如下:

uint8_t buff[500];

ret = HAL_UART_Receive(&huart1, buff, sizeof buff , HAL_MAX_DELAY);
while(ret != HAL_OK); // Continue when Receive returns HAL_OK
HAL_UART_Transmit(&huart2, buff, sizeof buff, HAL_MAX_DELAY);

冻结问题仍存在,但输出内容变化:

$PSTMVER,GNSSLIB_8.4.18.25_CP_ARM*07
$GPTXT,DEFAULT LIV3FL CONFIGURATION*12
$PSTMVER,OS20LIB_4.4.0_ARM*40
$PSTMVER,GPSAPP_2.11.0_CP_LIV3FL_RC9_ARM*20
$PSTMVER,BINIMG_4.6.15_CP_LIV3FL_RC9_ARM*27
$PSTMVER,SWCFG_8306532d*33
$PSTMVER,STAGPSLIB_6.0.0_ARM*5A
$PSTMVER,STA8090_822bc043*61
$GPTXT,(C)2000-2018 ST Microelectronics*29
$GPTXT,DEFAULT LIV3FL CONFIGURATION*12
$PSTMSWCONFIG,1,0,12,000205f105070a0a0e0d0c0b0a090608070203630e110c04180c0155030110500f00000f071402050a40fffffffffffffffffffff (stuck here)

不拔插MCU直接重新烧录后:

$GNGSA,A,3,03,16,32,27,26,22,,,,,,,1.9,1.0,1.6*26
$GNGSA,A,3,,,,,,,,,,,,,1.9,1.0,1.6*22
$GPGSV,3,1,10,16,58,305,23,27,53,179,23,32,47,086,23,22,46,034,22*72
$GPGSV,3,2,10,26,39,354,20,10,30,157,14,08,25,206,13,03,14,310,27*7B
$GPGSV,3,3,10,31,12,021,,21,10,237,,,,,,,,,*7E
$GLGSV,2,1,08,70,72,122,,71,48,350,,84,23,127,,74,22,326,*6C
$GLGSV,2,2,08,75,19,269,19,85,17,189,,69,11,151,18,80,11,144,19*6B
$GPGLL,0745.76098,S,11023.30836,E,065605.000,A,A*4D
$PSTMCPU,36.35,-1,98*40
$G (stuck here)

内容的提问来源于stack exchange,提问作者Oh God Why

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 04:02:01