This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] MSP430F5525:GY-NEO6MV2的代码不能正常工作

Guru**** 2386620 points
Other Parts Discussed in Thread: MSP430F5525
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1103368/msp430f5525-code-for-gy-neo6mv2-isn-t-working-correctly

部件号:MSP430F5525

我从MSP430F5525的“资源浏览器”中获取了此代码。 我想获取GPS数据,但我的代码不是真的,我不知道我必须在寄存器中查找什么。 代码正常工作,但TX和RXBUF值不断变化。 我不知道如何读取位置数据。 我在土耳其,我不知道该怎么做,也不知道如何将格式转换成我要做的事情。 也是哪个寄存器给出位置。 提前感谢。

#include <msp430.h>

int main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  P3SEL = BIT3+BIT4;                        // P3.4,5 = USCI_A0 TXD/RXD
  UCA0CTL1 |= UCSWRST;                      // **Put state machine in reset**
  UCA0CTL1 |= UCSSEL_2;                     // SMCLK
  UCA0BR0 = 6;                              // 1MHz 9600 (see User's Guide)
  UCA0BR1 = 0;                              // 1MHz 9600
  UCA0MCTL = UCBRS_0 + UCBRF_13 + UCOS16;   // Modln UCBRSx=0, UCBRFx=0,
                                            // over sampling
  UCA0CTL1 &= ~UCSWRST;                     // **Initialize USCI state machine**
  UCA0IE |= UCRXIE;                         // Enable USCI_A0 RX interrupt

  __bis_SR_register(LPM0_bits + GIE);       // Enter LPM0, interrupts enabled
  __no_operation();                         // For debugger
}

// Echo back RXed character, confirm TX buffer is ready first
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
#pragma vector=USCI_A0_VECTOR
__interrupt void USCI_A0_ISR(void)
#elif defined(__GNUC__)
void __attribute__ ((interrupt(USCI_A0_VECTOR))) USCI_A0_ISR (void)
#else
#error Compiler not supported!
#endif
{
  switch(__even_in_range(UCA0IV,4))
  {
  case 0:break;                             // Vector 0 - no interrupt
  case 2:                                   // Vector 2 - RXIFG
    while (!(UCA0IFG&UCTXIFG));             // USCI_A0 TX buffer ready?
    UCA0TXBUF = UCA0RXBUF;                  // TX -> RXed character
    break;
  case 4:break;                             // Vector 4 - TXIFG
  default: break;
  }
}

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    1) TXBUF和RXBUF是字节(CHAR,通常是带GPS的ASCII),但您将它们显示为"浮动",这种情况非常少见。 我不确定CCS如何处理这一问题,但我的第一个猜测是,RXBUF为10=linefeed ('\n'),TXBUF为48='0',每一个通常都显示在NMEA语句中。 尝试右键单击单词"Float"并选择数字格式->十六进制。

    2)向GPS装置发送(任何内容)是异常的,尽管有时您需要这样做(请参阅NEO-6用户手册)。 将NMEA语句回显到GPS单元的情况最多会被忽略,最坏的情况下会发生意外重新配置。 尝试将字节数组写入字符数组,然后查看该数组。 NMEA语句以'$'开头,以"\r\n"结尾。