A GPS serial interrupt service routine that has an on the fly nmea parser. Works with a STM32F411RE and a Adafruit GPS logger.

Dependents:   Bicycl_Computer_NUCLEO-F411RE Bicycl_Computer_NUCLEO-L476RG

Fork of GPS by Simon Ford

main.cpp

#include "mbed.h"
#include "GPSISR.h"

#define PIN_RX_GPS      PA_12 //GPS Shield RX pin
#define PIN_TX_GPS      PA_11 //GPS Shield TX pin
Serial pc(USBTX, USBRX);

// Set up serial interrupe service handler for gps characters.
GPS MyGPS(PIN_TX_GPS,PIN_RX_GPS, 9600);
int main()
{
    while (1) {
	if (MyGPS.dataready()) {
					MyGPS.read();
					pc.printf("NMEA has valid data");
					pc.printf("Sats : %d \n", MyGPS.buffer.satellites);
					pc.printf("%d-%d-%d\n", MyGPS.buffer.month, MyGPS.buffer.day, MyGPS.buffer.year);
					pc.printf("%d:%d:%d\n", MyGPS.buffer.hours, MyGPS.buffer.minutes, MyGPS.buffer.seconds);
	}
	else {
                pc.printf("NMEA has no valid data");
	}   
   }  
} 

Files at this revision

API Documentation at this revision

Comitter:
trevieze
Date:
Sat Feb 18 01:37:25 2017 +0000
Parent:
3:e64b8be9ce92
Child:
5:c5f700c1e1af
Commit message:
Added missing seconds in structure

Changed in this revision

GPSISR.cpp Show annotated file Show diff for this revision Revisions of this file
GPSISR.h Show annotated file Show diff for this revision Revisions of this file
--- a/GPSISR.cpp	Fri Feb 17 23:31:39 2017 +0000
+++ b/GPSISR.cpp	Sat Feb 18 01:37:25 2017 +0000
@@ -61,8 +61,9 @@
 
 void GPS::read(void) {
     
-    buffer.hour = nmea.getHour();
+    buffer.hours = nmea.getHour();
     buffer.minutes = nmea.getMinute();
+    buffer.seconds = nmea.getSecond();
     buffer.day = nmea.getDay();
     buffer.month = nmea.getMonth();
     buffer.year = nmea.getYear();
--- a/GPSISR.h	Fri Feb 17 23:31:39 2017 +0000
+++ b/GPSISR.h	Sat Feb 18 01:37:25 2017 +0000
@@ -50,8 +50,9 @@
     uint8_t day;
     uint8_t month;
     uint8_t year;
-    uint8_t hour;
+    uint8_t hours;
     uint8_t minutes;
+    uint8_t seconds;
     float   speed;
     float   altitude;
     float   bearing;