mirror of
https://github.com/opentx/opentx.git
synced 2025-07-25 17:25:13 +03:00
Horus internal GPS: settable baudrate, misc fixes, new cmake options,… (#3736)
* Horus internal GPS: settable baudrate, misc fixes, new cmake options, cosmetics, cli * Horus internal GPS: cmake changes, more CLI options, ability to send commands to the module * Compilation fixes
This commit is contained in:
commit
f97eda2b4f
11 changed files with 152 additions and 31 deletions
|
@ -708,6 +708,28 @@ int cliShowJitter(const char ** argv)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(INTERNAL_GPS)
|
||||||
|
int cliGps(const char ** argv)
|
||||||
|
{
|
||||||
|
int baudrate = 0;
|
||||||
|
if (argv[1][0] == '$') {
|
||||||
|
// send command to GPS
|
||||||
|
gpsSendFrame(argv[1]);
|
||||||
|
}
|
||||||
|
else if (!strcmp(argv[1], "trace")) {
|
||||||
|
gpsTraceEnabled = !gpsTraceEnabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
else if (toInt(argv, 1, &baudrate) > 0 && baudrate > 0) {
|
||||||
|
gpsInit(baudrate);
|
||||||
|
serialPrint("GPS baudrate set to %d", baudrate);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
serialPrint("%s: Invalid arguments", argv[0]);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
const CliCommand cliCommands[] = {
|
const CliCommand cliCommands[] = {
|
||||||
{ "beep", cliBeep, "[<frequency>] [<duration>]" },
|
{ "beep", cliBeep, "[<frequency>] [<duration>]" },
|
||||||
|
@ -731,6 +753,9 @@ const CliCommand cliCommands[] = {
|
||||||
{ "repeat", cliRepeat, "<interval> <command>" },
|
{ "repeat", cliRepeat, "<interval> <command>" },
|
||||||
#if defined(JITTER_MEASURE)
|
#if defined(JITTER_MEASURE)
|
||||||
{ "jitter", cliShowJitter, "" },
|
{ "jitter", cliShowJitter, "" },
|
||||||
|
#endif
|
||||||
|
#if defined(INTERNAL_GPS)
|
||||||
|
{ "gps", cliGps, "<baudrate>" },
|
||||||
#endif
|
#endif
|
||||||
{ NULL, NULL, NULL } /* sentinel */
|
{ NULL, NULL, NULL } /* sentinel */
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,5 +1,26 @@
|
||||||
/*
|
/*
|
||||||
* This file is part of Cleanflight.
|
* Copyright (C) OpenTX
|
||||||
|
*
|
||||||
|
* Based on code named
|
||||||
|
* th9x - http://code.google.com/p/th9x
|
||||||
|
* er9x - http://code.google.com/p/er9x
|
||||||
|
* gruvin9x - http://code.google.com/p/gruvin9x
|
||||||
|
*
|
||||||
|
* License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License version 2 as
|
||||||
|
* published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file is based on code from Cleanflight project
|
||||||
|
* https://github.com/cleanflight/cleanflight
|
||||||
*
|
*
|
||||||
* Cleanflight is free software: you can redistribute it and/or modify
|
* Cleanflight is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
@ -47,14 +68,14 @@ uint32_t GPS_coord_to_degrees(const char * coordinateString)
|
||||||
uint8_t degrees = 0, minutes = 0;
|
uint8_t degrees = 0, minutes = 0;
|
||||||
uint16_t fractionalMinutes = 0;
|
uint16_t fractionalMinutes = 0;
|
||||||
uint8_t digitIndex;
|
uint8_t digitIndex;
|
||||||
|
|
||||||
// scan for decimal point or end of field
|
// scan for decimal point or end of field
|
||||||
for (fieldSeparator = coordinateString; isdigit((unsigned char) *fieldSeparator); fieldSeparator++) {
|
for (fieldSeparator = coordinateString; isdigit((unsigned char) *fieldSeparator); fieldSeparator++) {
|
||||||
if (fieldSeparator >= coordinateString + 15)
|
if (fieldSeparator >= coordinateString + 15)
|
||||||
return 0; // stop potential fail
|
return 0; // stop potential fail
|
||||||
}
|
}
|
||||||
remainingString = coordinateString;
|
remainingString = coordinateString;
|
||||||
|
|
||||||
// convert degrees
|
// convert degrees
|
||||||
while ((fieldSeparator - remainingString) > 2) {
|
while ((fieldSeparator - remainingString) > 2) {
|
||||||
if (degrees)
|
if (degrees)
|
||||||
|
@ -118,12 +139,12 @@ typedef struct gpsDataNmea_s
|
||||||
bool gpsNewFrameNMEA(char c)
|
bool gpsNewFrameNMEA(char c)
|
||||||
{
|
{
|
||||||
static gpsDataNmea_t gps_Msg;
|
static gpsDataNmea_t gps_Msg;
|
||||||
|
|
||||||
uint8_t frameOK = 0;
|
uint8_t frameOK = 0;
|
||||||
static uint8_t param = 0, offset = 0, parity = 0;
|
static uint8_t param = 0, offset = 0, parity = 0;
|
||||||
static char string[15];
|
static char string[15];
|
||||||
static uint8_t checksum_param, gps_frame = NO_FRAME;
|
static uint8_t checksum_param, gps_frame = NO_FRAME;
|
||||||
|
|
||||||
switch (c) {
|
switch (c) {
|
||||||
case '$':
|
case '$':
|
||||||
param = 0;
|
param = 0;
|
||||||
|
@ -134,14 +155,14 @@ bool gpsNewFrameNMEA(char c)
|
||||||
case '*':
|
case '*':
|
||||||
string[offset] = 0;
|
string[offset] = 0;
|
||||||
if (param == 0) {
|
if (param == 0) {
|
||||||
// Frame identification
|
// Frame identification (accept all GPS talkers (GP: GPS, GL:Glonass, GN:combination, etc...))
|
||||||
gps_frame = NO_FRAME;
|
gps_frame = NO_FRAME;
|
||||||
if (string[0] == 'G' && string[1] == 'P' && string[2] == 'G' && string[3] == 'G' && string[4] == 'A')
|
if (string[0] == 'G' && string[2] == 'G' && string[3] == 'G' && string[4] == 'A')
|
||||||
gps_frame = FRAME_GGA;
|
gps_frame = FRAME_GGA;
|
||||||
if (string[0] == 'G' && string[1] == 'P' && string[2] == 'R' && string[3] == 'M' && string[4] == 'C')
|
if (string[0] == 'G' && string[2] == 'R' && string[3] == 'M' && string[4] == 'C')
|
||||||
gps_frame = FRAME_RMC;
|
gps_frame = FRAME_RMC;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (gps_frame) {
|
switch (gps_frame) {
|
||||||
case FRAME_GGA: //************* GPGGA FRAME parsing
|
case FRAME_GGA: //************* GPGGA FRAME parsing
|
||||||
switch (param) {
|
switch (param) {
|
||||||
|
@ -189,7 +210,7 @@ bool gpsNewFrameNMEA(char c)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
param++;
|
param++;
|
||||||
offset = 0;
|
offset = 0;
|
||||||
if (c == '*')
|
if (c == '*')
|
||||||
|
@ -207,12 +228,14 @@ bool gpsNewFrameNMEA(char c)
|
||||||
switch (gps_frame) {
|
switch (gps_frame) {
|
||||||
case FRAME_GGA:
|
case FRAME_GGA:
|
||||||
frameOK = 1;
|
frameOK = 1;
|
||||||
|
gpsData.fix = gps_Msg.fix;
|
||||||
|
gpsData.numSat = gps_Msg.numSat;
|
||||||
if (gps_Msg.fix) {
|
if (gps_Msg.fix) {
|
||||||
gpsData.fix = 1;
|
__disable_irq(); // do the atomic update of lat/lon
|
||||||
gpsData.latitude = gps_Msg.latitude;
|
gpsData.latitude = gps_Msg.latitude;
|
||||||
gpsData.longitude = gps_Msg.longitude;
|
gpsData.longitude = gps_Msg.longitude;
|
||||||
gpsData.numSat = gps_Msg.numSat;
|
|
||||||
gpsData.altitude = gps_Msg.altitude;
|
gpsData.altitude = gps_Msg.altitude;
|
||||||
|
__enable_irq();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case FRAME_RMC:
|
case FRAME_RMC:
|
||||||
|
@ -255,3 +278,27 @@ void gpsWakeup()
|
||||||
gpsNewData(byte);
|
gpsNewData(byte);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(DEBUG)
|
||||||
|
char hex(uint8_t b) {
|
||||||
|
return b > 9 ? b + 'A' - 10 : b + '0';
|
||||||
|
}
|
||||||
|
|
||||||
|
void gpsSendFrame(const char * frame)
|
||||||
|
{
|
||||||
|
// send given frame, add checksum and CRLF
|
||||||
|
uint8_t parity = 0;
|
||||||
|
while (*frame) {
|
||||||
|
if (*frame != '$') parity ^= *frame;
|
||||||
|
gpsSendByte(*frame);
|
||||||
|
++frame;
|
||||||
|
}
|
||||||
|
gpsSendByte('*');
|
||||||
|
gpsSendByte(hex(parity >> 4));
|
||||||
|
gpsSendByte(hex(parity & 0x0F));
|
||||||
|
gpsSendByte('\r');
|
||||||
|
gpsSendByte('\n');
|
||||||
|
TRACE("parity %02x", parity);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // #if defined(DEBUG)
|
||||||
|
|
|
@ -40,4 +40,8 @@ struct gpsdata_t
|
||||||
extern gpsdata_t gpsData;
|
extern gpsdata_t gpsData;
|
||||||
void gpsWakeup();
|
void gpsWakeup();
|
||||||
|
|
||||||
|
#if defined(DEBUG)
|
||||||
|
void gpsSendFrame(const char * frame);
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif // _GPS_H_
|
#endif // _GPS_H_
|
||||||
|
|
|
@ -75,10 +75,15 @@ void ValueWidget::refresh()
|
||||||
yValue = y+18;
|
yValue = y+18;
|
||||||
xLabel = x+NUMBERS_PADDING;
|
xLabel = x+NUMBERS_PADDING;
|
||||||
yLabel = y+2;
|
yLabel = y+2;
|
||||||
if (field == MIXSRC_TX_GPS)
|
#if defined(INTERNAL_GPS)
|
||||||
|
if (field == MIXSRC_TX_GPS) {
|
||||||
attrValue = LEFT | MIDSIZE;
|
attrValue = LEFT | MIDSIZE;
|
||||||
else
|
}
|
||||||
|
else
|
||||||
|
#endif
|
||||||
|
{
|
||||||
attrValue = LEFT | DBLSIZE;
|
attrValue = LEFT | DBLSIZE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (field >= MIXSRC_FIRST_TIMER && field <= MIXSRC_LAST_TIMER) {
|
if (field >= MIXSRC_FIRST_TIMER && field <= MIXSRC_LAST_TIMER) {
|
||||||
|
|
|
@ -136,6 +136,10 @@ void drawSourceCustomValue(coord_t x, coord_t y, source_t source, int32_t value,
|
||||||
if (gpsData.fix) {
|
if (gpsData.fix) {
|
||||||
drawGPSPosition(x, y, gpsData.longitude, gpsData.latitude, flags);
|
drawGPSPosition(x, y, gpsData.longitude, gpsData.latitude, flags);
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
lcdDrawText(x, y, "sats: ", flags);
|
||||||
|
lcdDrawNumber(lcdNextPos, y, gpsData.numSat, flags);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
else if (source < MIXSRC_FIRST_CH) {
|
else if (source < MIXSRC_FIRST_CH) {
|
||||||
|
|
|
@ -467,7 +467,7 @@ void perMain()
|
||||||
bluetoothWakeup();
|
bluetoothWakeup();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if INTERNAL_GPS > 0
|
#if defined(INTERNAL_GPS)
|
||||||
gpsWakeup();
|
gpsWakeup();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,14 @@
|
||||||
set(PCBREV "13" CACHE STRING "PCB Revision")
|
set(PCBREV "13" CACHE STRING "PCB Revision")
|
||||||
|
set(INTERNAL_GPS_BAUDRATE "9600" CACHE STRING "Baud rate for internal GPS")
|
||||||
option(DISK_CACHE "Enable SD card disk cache" YES)
|
option(DISK_CACHE "Enable SD card disk cache" YES)
|
||||||
|
if(${PCBREV} GREATER 10)
|
||||||
|
option(INTERNAL_GPS "Internal GPS installed" YES)
|
||||||
|
else()
|
||||||
|
option(INTERNAL_GPS "Internal GPS installed" NO)
|
||||||
|
if(NOT INTERNAL_GPS)
|
||||||
|
message("Internal GPS is optional, use INTERNAL_GPS=YES option to enable it")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
set(CPU_TYPE STM32F4)
|
set(CPU_TYPE STM32F4)
|
||||||
set(HSE_VALUE 12000000)
|
set(HSE_VALUE 12000000)
|
||||||
|
@ -16,6 +25,7 @@ set(RAMBACKUP YES)
|
||||||
|
|
||||||
add_definitions(-DPCBHORUS -DPCBREV=${PCBREV} -DSTM32F429_439xx -DSDRAM -DCOLORLCD -DPPM_PIN_UART -DPPM_PIN_TIMER)
|
add_definitions(-DPCBHORUS -DPCBREV=${PCBREV} -DSTM32F429_439xx -DSDRAM -DCOLORLCD -DPPM_PIN_UART -DPPM_PIN_TIMER)
|
||||||
add_definitions(-DEEPROM_VARIANT=0 -DAUDIO -DVOICE -DRTCLOCK)
|
add_definitions(-DEEPROM_VARIANT=0 -DAUDIO -DVOICE -DRTCLOCK)
|
||||||
|
add_definitions(-DGPS_USART_BAUDRATE=${INTERNAL_GPS_BAUDRATE})
|
||||||
|
|
||||||
include_directories(${RADIO_SRC_DIRECTORY}/fonts/480x272 gui/${GUI_DIR} gui/${GUI_DIR}/layouts)
|
include_directories(${RADIO_SRC_DIRECTORY}/fonts/480x272 gui/${GUI_DIR} gui/${GUI_DIR}/layouts)
|
||||||
|
|
||||||
|
@ -44,11 +54,15 @@ set(GUI_SRC
|
||||||
${LAYOUTS_SRC}
|
${LAYOUTS_SRC}
|
||||||
${WIDGETS_SRC}
|
${WIDGETS_SRC}
|
||||||
)
|
)
|
||||||
set(SRC ${SRC} gps.cpp)
|
|
||||||
if(DISK_CACHE)
|
if(DISK_CACHE)
|
||||||
set(SRC ${SRC} disk_cache.cpp)
|
set(SRC ${SRC} disk_cache.cpp)
|
||||||
add_definitions(-DDISK_CACHE)
|
add_definitions(-DDISK_CACHE)
|
||||||
endif()
|
endif()
|
||||||
|
if(INTERNAL_GPS)
|
||||||
|
set(SRC ${SRC} gps.cpp)
|
||||||
|
add_definitions(-DINTERNAL_GPS)
|
||||||
|
message("Internal GPS enabled")
|
||||||
|
endif()
|
||||||
set(SERIAL2_DRIVER serial2_driver.cpp)
|
set(SERIAL2_DRIVER serial2_driver.cpp)
|
||||||
set(TARGET_SRC
|
set(TARGET_SRC
|
||||||
${TARGET_SRC}
|
${TARGET_SRC}
|
||||||
|
|
|
@ -162,7 +162,7 @@ void boardInit()
|
||||||
lcdInit();
|
lcdInit();
|
||||||
backlightInit();
|
backlightInit();
|
||||||
// TODO ? backlightEnable(100);
|
// TODO ? backlightEnable(100);
|
||||||
|
|
||||||
audioInit();
|
audioInit();
|
||||||
init2MhzTimer();
|
init2MhzTimer();
|
||||||
init1msTimer();
|
init1msTimer();
|
||||||
|
@ -171,8 +171,8 @@ void boardInit()
|
||||||
|
|
||||||
// bt_open();
|
// bt_open();
|
||||||
|
|
||||||
gpsInit();
|
gpsInit(GPS_USART_BAUDRATE);
|
||||||
|
|
||||||
#if defined(DEBUG)
|
#if defined(DEBUG)
|
||||||
DBGMCU_APB1PeriphConfig(DBGMCU_IWDG_STOP|DBGMCU_TIM1_STOP|DBGMCU_TIM2_STOP|DBGMCU_TIM3_STOP|DBGMCU_TIM4_STOP|DBGMCU_TIM5_STOP|DBGMCU_TIM6_STOP|DBGMCU_TIM7_STOP|DBGMCU_TIM8_STOP|DBGMCU_TIM9_STOP|DBGMCU_TIM10_STOP|DBGMCU_TIM11_STOP|DBGMCU_TIM12_STOP|DBGMCU_TIM13_STOP|DBGMCU_TIM14_STOP, ENABLE);
|
DBGMCU_APB1PeriphConfig(DBGMCU_IWDG_STOP|DBGMCU_TIM1_STOP|DBGMCU_TIM2_STOP|DBGMCU_TIM3_STOP|DBGMCU_TIM4_STOP|DBGMCU_TIM5_STOP|DBGMCU_TIM6_STOP|DBGMCU_TIM7_STOP|DBGMCU_TIM8_STOP|DBGMCU_TIM9_STOP|DBGMCU_TIM10_STOP|DBGMCU_TIM11_STOP|DBGMCU_TIM12_STOP|DBGMCU_TIM13_STOP|DBGMCU_TIM14_STOP, ENABLE);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -399,13 +399,12 @@ void hapticOff(void);
|
||||||
void hapticOn(uint32_t pwmPercent);
|
void hapticOn(uint32_t pwmPercent);
|
||||||
|
|
||||||
// GPS driver
|
// GPS driver
|
||||||
#if PCBREV >= 13
|
void gpsInit(uint32_t baudrate);
|
||||||
#define INTERNAL_GPS 1
|
|
||||||
#else
|
|
||||||
#define INTERNAL_GPS 0
|
|
||||||
#endif
|
|
||||||
void gpsInit(void);
|
|
||||||
uint8_t gpsGetByte(uint8_t * byte);
|
uint8_t gpsGetByte(uint8_t * byte);
|
||||||
|
#if defined(DEBUG)
|
||||||
|
extern uint8_t gpsTraceEnabled;
|
||||||
|
void gpsSendByte(uint8_t byte);
|
||||||
|
#endif
|
||||||
|
|
||||||
// Second serial port driver
|
// Second serial port driver
|
||||||
#define SERIAL2
|
#define SERIAL2
|
||||||
|
|
|
@ -20,9 +20,13 @@
|
||||||
|
|
||||||
#include "opentx.h"
|
#include "opentx.h"
|
||||||
|
|
||||||
Fifo<uint8_t, 64> gpsRxFifo;
|
#if GPS_USART_BAUDRATE > 9600
|
||||||
|
Fifo<uint8_t, 256> gpsRxFifo;
|
||||||
|
#else
|
||||||
|
Fifo<uint8_t, 64> gpsRxFifo;
|
||||||
|
#endif
|
||||||
|
|
||||||
void gpsInit()
|
void gpsInit(uint32_t baudrate)
|
||||||
{
|
{
|
||||||
GPIO_InitTypeDef GPIO_InitStructure;
|
GPIO_InitTypeDef GPIO_InitStructure;
|
||||||
USART_InitTypeDef USART_InitStructure;
|
USART_InitTypeDef USART_InitStructure;
|
||||||
|
@ -39,7 +43,7 @@ void gpsInit()
|
||||||
GPIO_Init(GPS_UART_GPIO, &GPIO_InitStructure);
|
GPIO_Init(GPS_UART_GPIO, &GPIO_InitStructure);
|
||||||
|
|
||||||
// UART config
|
// UART config
|
||||||
USART_InitStructure.USART_BaudRate = GPS_USART_BAUDRATE;
|
USART_InitStructure.USART_BaudRate = baudrate;
|
||||||
USART_InitStructure.USART_Parity = USART_Parity_No;
|
USART_InitStructure.USART_Parity = USART_Parity_No;
|
||||||
USART_InitStructure.USART_StopBits = USART_StopBits_1;
|
USART_InitStructure.USART_StopBits = USART_StopBits_1;
|
||||||
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
|
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
|
||||||
|
@ -56,9 +60,23 @@ void gpsInit()
|
||||||
NVIC_Init(&NVIC_InitStructure);
|
NVIC_Init(&NVIC_InitStructure);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(DEBUG)
|
||||||
|
uint8_t gpsTraceEnabled = false;
|
||||||
|
Fifo<uint8_t, 64> gpsTxFifo;
|
||||||
|
|
||||||
|
void gpsSendByte(uint8_t byte)
|
||||||
|
{
|
||||||
|
while (gpsTxFifo.isFull());
|
||||||
|
gpsTxFifo.push(byte);
|
||||||
|
USART_ITConfig(GPS_USART, USART_IT_TXE, ENABLE);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // #if defined(DEBUG)
|
||||||
|
|
||||||
|
|
||||||
extern "C" void GPS_USART_IRQHandler(void)
|
extern "C" void GPS_USART_IRQHandler(void)
|
||||||
{
|
{
|
||||||
#if 0
|
#if defined(DEBUG)
|
||||||
// Send
|
// Send
|
||||||
if (USART_GetITStatus(GPS_USART, USART_IT_TXE) != RESET) {
|
if (USART_GetITStatus(GPS_USART, USART_IT_TXE) != RESET) {
|
||||||
uint8_t txchar;
|
uint8_t txchar;
|
||||||
|
@ -85,5 +103,11 @@ extern "C" void GPS_USART_IRQHandler(void)
|
||||||
|
|
||||||
uint8_t gpsGetByte(uint8_t * byte)
|
uint8_t gpsGetByte(uint8_t * byte)
|
||||||
{
|
{
|
||||||
return gpsRxFifo.pop(*byte);
|
uint8_t result = gpsRxFifo.pop(*byte);
|
||||||
|
#if defined(DEBUG)
|
||||||
|
if (gpsTraceEnabled) {
|
||||||
|
serialPutc(*byte);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
return result;
|
||||||
}
|
}
|
|
@ -443,6 +443,5 @@
|
||||||
#define GPS_RX_GPIO_PIN GPIO_Pin_1 // PA.01
|
#define GPS_RX_GPIO_PIN GPIO_Pin_1 // PA.01
|
||||||
#define GPS_TX_GPIO_PinSource GPIO_PinSource0
|
#define GPS_TX_GPIO_PinSource GPIO_PinSource0
|
||||||
#define GPS_RX_GPIO_PinSource GPIO_PinSource1
|
#define GPS_RX_GPIO_PinSource GPIO_PinSource1
|
||||||
#define GPS_USART_BAUDRATE 9600
|
|
||||||
|
|
||||||
#endif // _HAL_H_
|
#endif // _HAL_H_
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue