SerialGPS Test Read GPS from USART1 ( PA_9, PA_10) Send GPS information to Serial PC
Fork of Nucleo_SerialGPS_to_PC by
main.cpp@0:e0a6c18ea0fb, 2015-01-05 (annotated)
- Committer:
- veyselka
- Date:
- Mon Jan 05 15:34:58 2015 +0000
- Revision:
- 0:e0a6c18ea0fb
SerialGPS library test Nucleo STM32F401RE; Read GPS from USART 1; Send GPS information USART PC
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
veyselka | 0:e0a6c18ea0fb | 1 | #include "mbed.h" |
veyselka | 0:e0a6c18ea0fb | 2 | #include "SerialGPS.h" |
veyselka | 0:e0a6c18ea0fb | 3 | |
veyselka | 0:e0a6c18ea0fb | 4 | |
veyselka | 0:e0a6c18ea0fb | 5 | Serial pc(USBTX, USBRX); // tx, rx |
veyselka | 0:e0a6c18ea0fb | 6 | SerialGPS gps(PA_9,PA_10); // tx, rx |
veyselka | 0:e0a6c18ea0fb | 7 | |
veyselka | 0:e0a6c18ea0fb | 8 | |
veyselka | 0:e0a6c18ea0fb | 9 | |
veyselka | 0:e0a6c18ea0fb | 10 | |
veyselka | 0:e0a6c18ea0fb | 11 | /** |
veyselka | 0:e0a6c18ea0fb | 12 | * A callback function for logging data. |
veyselka | 0:e0a6c18ea0fb | 13 | */ |
veyselka | 0:e0a6c18ea0fb | 14 | void cbfunc_log(char *s) { |
veyselka | 0:e0a6c18ea0fb | 15 | |
veyselka | 0:e0a6c18ea0fb | 16 | } |
veyselka | 0:e0a6c18ea0fb | 17 | |
veyselka | 0:e0a6c18ea0fb | 18 | /** |
veyselka | 0:e0a6c18ea0fb | 19 | * A callback function for GGA. |
veyselka | 0:e0a6c18ea0fb | 20 | * |
veyselka | 0:e0a6c18ea0fb | 21 | * GGA - Global Positioning System Fixed Data. |
veyselka | 0:e0a6c18ea0fb | 22 | */ |
veyselka | 0:e0a6c18ea0fb | 23 | void cbfunc_gga(SerialGPS::gps_gga_t *p) { |
veyselka | 0:e0a6c18ea0fb | 24 | |
veyselka | 0:e0a6c18ea0fb | 25 | pc.printf("%02d:%02d:%02d(P%d,S%d)\r\n", p->hour, p->min, p->sec, p->position_fix, p->satellites_used); |
veyselka | 0:e0a6c18ea0fb | 26 | |
veyselka | 0:e0a6c18ea0fb | 27 | pc.printf("%c=%10.4f\r\n", p->ns, p->latitude); |
veyselka | 0:e0a6c18ea0fb | 28 | |
veyselka | 0:e0a6c18ea0fb | 29 | pc.printf("%c=%10.4f\r\n", p->ew, p->longitude); |
veyselka | 0:e0a6c18ea0fb | 30 | |
veyselka | 0:e0a6c18ea0fb | 31 | } |
veyselka | 0:e0a6c18ea0fb | 32 | |
veyselka | 0:e0a6c18ea0fb | 33 | /** |
veyselka | 0:e0a6c18ea0fb | 34 | * A callback function for GSA. |
veyselka | 0:e0a6c18ea0fb | 35 | * |
veyselka | 0:e0a6c18ea0fb | 36 | * GSA - GNSS DOP and Active Satellites. |
veyselka | 0:e0a6c18ea0fb | 37 | */ |
veyselka | 0:e0a6c18ea0fb | 38 | void cbfunc_gsa(SerialGPS::gps_gsa_t *p) { |
veyselka | 0:e0a6c18ea0fb | 39 | |
veyselka | 0:e0a6c18ea0fb | 40 | pc.printf("SEL:%c FIX:%d\r\n", p->selmode, p->fix); |
veyselka | 0:e0a6c18ea0fb | 41 | |
veyselka | 0:e0a6c18ea0fb | 42 | } |
veyselka | 0:e0a6c18ea0fb | 43 | |
veyselka | 0:e0a6c18ea0fb | 44 | /** |
veyselka | 0:e0a6c18ea0fb | 45 | * A callback function for GSV. |
veyselka | 0:e0a6c18ea0fb | 46 | * |
veyselka | 0:e0a6c18ea0fb | 47 | * GSV - GNSS Satellites in View. |
veyselka | 0:e0a6c18ea0fb | 48 | */ |
veyselka | 0:e0a6c18ea0fb | 49 | void cbfunc_gsv(SerialGPS::gps_gsv_t *p) { |
veyselka | 0:e0a6c18ea0fb | 50 | |
veyselka | 0:e0a6c18ea0fb | 51 | pc.printf("Satellites:%2d\r\n", p->satcnt); |
veyselka | 0:e0a6c18ea0fb | 52 | |
veyselka | 0:e0a6c18ea0fb | 53 | } |
veyselka | 0:e0a6c18ea0fb | 54 | |
veyselka | 0:e0a6c18ea0fb | 55 | /** |
veyselka | 0:e0a6c18ea0fb | 56 | * A callback function for RMC. |
veyselka | 0:e0a6c18ea0fb | 57 | * |
veyselka | 0:e0a6c18ea0fb | 58 | * RMC - Recommended Minimum Specific GNSS Data. |
veyselka | 0:e0a6c18ea0fb | 59 | */ |
veyselka | 0:e0a6c18ea0fb | 60 | void cbfunc_rmc(SerialGPS::gps_rmc_t *p) { |
veyselka | 0:e0a6c18ea0fb | 61 | |
veyselka | 0:e0a6c18ea0fb | 62 | pc.printf("%02d:%02d:%02d(%c)\r\n", p->hour, p->min, p->sec, p->status); |
veyselka | 0:e0a6c18ea0fb | 63 | |
veyselka | 0:e0a6c18ea0fb | 64 | } |
veyselka | 0:e0a6c18ea0fb | 65 | |
veyselka | 0:e0a6c18ea0fb | 66 | /** |
veyselka | 0:e0a6c18ea0fb | 67 | * Entry point. |
veyselka | 0:e0a6c18ea0fb | 68 | */ |
veyselka | 0:e0a6c18ea0fb | 69 | |
veyselka | 0:e0a6c18ea0fb | 70 | |
veyselka | 0:e0a6c18ea0fb | 71 | |
veyselka | 0:e0a6c18ea0fb | 72 | |
veyselka | 0:e0a6c18ea0fb | 73 | int main() { |
veyselka | 0:e0a6c18ea0fb | 74 | |
veyselka | 0:e0a6c18ea0fb | 75 | pc.baud(9600); |
veyselka | 0:e0a6c18ea0fb | 76 | |
veyselka | 0:e0a6c18ea0fb | 77 | |
veyselka | 0:e0a6c18ea0fb | 78 | pc.printf("TEST\r\n"); |
veyselka | 0:e0a6c18ea0fb | 79 | wait(0.5); |
veyselka | 0:e0a6c18ea0fb | 80 | |
veyselka | 0:e0a6c18ea0fb | 81 | SerialGPS::gps_callback_t cb; |
veyselka | 0:e0a6c18ea0fb | 82 | cb.cbfunc_log = cbfunc_log; |
veyselka | 0:e0a6c18ea0fb | 83 | cb.cbfunc_gga = cbfunc_gga; |
veyselka | 0:e0a6c18ea0fb | 84 | cb.cbfunc_gsa = cbfunc_gsa; |
veyselka | 0:e0a6c18ea0fb | 85 | cb.cbfunc_gsv = cbfunc_gsv; |
veyselka | 0:e0a6c18ea0fb | 86 | cb.cbfunc_rmc = cbfunc_rmc; |
veyselka | 0:e0a6c18ea0fb | 87 | gps.attach(&cb); |
veyselka | 0:e0a6c18ea0fb | 88 | |
veyselka | 0:e0a6c18ea0fb | 89 | while(1) { |
veyselka | 0:e0a6c18ea0fb | 90 | |
veyselka | 0:e0a6c18ea0fb | 91 | |
veyselka | 0:e0a6c18ea0fb | 92 | gps.processing(); |
veyselka | 0:e0a6c18ea0fb | 93 | |
veyselka | 0:e0a6c18ea0fb | 94 | } |
veyselka | 0:e0a6c18ea0fb | 95 | } |
veyselka | 0:e0a6c18ea0fb | 96 |