The Hiking Pal tracking device firmware. See full description on the detail page: https://www.hackster.io/bowenfeng/hiking-pal-v1-07c02d

Dependencies:   FXOS8700CQ MODSERIAL mbed

Fork of Avnet_ATT_Cellular_IOT by Avnet

Committer:
JMF
Date:
Sat Jul 30 16:26:22 2016 +0000
Revision:
60:2aa16fd02dfd
Child:
68:6e311c747045
added two files that are only used if you are building for ULINK output. Not yet included in the project build/link.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
JMF 60:2aa16fd02dfd 1 //Used for ULINK output only
JMF 60:2aa16fd02dfd 2 //
JMF 60:2aa16fd02dfd 3
JMF 60:2aa16fd02dfd 4 /* ITM registers */
JMF 60:2aa16fd02dfd 5 #define ITM_PORT0_U8 (*((volatile unsigned int *)0xE0000000))
JMF 60:2aa16fd02dfd 6 #define ITM_PORT0_U32 (*((volatile unsigned long *)0xE0000000))
JMF 60:2aa16fd02dfd 7 #define ITM_TER (*((volatile unsigned long *)0xE0000E00))
JMF 60:2aa16fd02dfd 8 #define ITM_TCR (*((volatile unsigned long *)0xE0000E80))
JMF 60:2aa16fd02dfd 9
JMF 60:2aa16fd02dfd 10 #define ITM_TCR_ITMENA_Msk (1UL << 0)
JMF 60:2aa16fd02dfd 11
JMF 60:2aa16fd02dfd 12 /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */
JMF 60:2aa16fd02dfd 13 #define ITM_RXBUFFER_EMPTY 0x5AA55AA5
JMF 60:2aa16fd02dfd 14
JMF 60:2aa16fd02dfd 15 /*!< Variable to receive characters. */
JMF 60:2aa16fd02dfd 16 extern
JMF 60:2aa16fd02dfd 17 volatile int ITM_RxBuffer;
JMF 60:2aa16fd02dfd 18 volatile int ITM_RxBuffer = ITM_RXBUFFER_EMPTY;
JMF 60:2aa16fd02dfd 19
JMF 60:2aa16fd02dfd 20 /** \brief ITM Send Character
JMF 60:2aa16fd02dfd 21
JMF 60:2aa16fd02dfd 22 The function transmits a character via the ITM channel 0, and
JMF 60:2aa16fd02dfd 23 \li Just returns when no debugger is connected that has booked the output.
JMF 60:2aa16fd02dfd 24 \li Is blocking when a debugger is connected, but the previous character
JMF 60:2aa16fd02dfd 25 sent has not been transmitted.
JMF 60:2aa16fd02dfd 26
JMF 60:2aa16fd02dfd 27 \param [in] ch Character to transmit.
JMF 60:2aa16fd02dfd 28
JMF 60:2aa16fd02dfd 29 \returns Character to transmit.
JMF 60:2aa16fd02dfd 30 */
JMF 60:2aa16fd02dfd 31 int ITM_putc (int ch) {
JMF 60:2aa16fd02dfd 32 if ((ITM_TCR & ITM_TCR_ITMENA_Msk) && /* ITM enabled */
JMF 60:2aa16fd02dfd 33 (ITM_TER & (1UL << 0) )) { /* ITM Port #0 enabled */
JMF 60:2aa16fd02dfd 34 while (ITM_PORT0_U32 == 0);
JMF 60:2aa16fd02dfd 35 ITM_PORT0_U8 = (int)ch;
JMF 60:2aa16fd02dfd 36 }
JMF 60:2aa16fd02dfd 37 return (ch);
JMF 60:2aa16fd02dfd 38 }
JMF 60:2aa16fd02dfd 39
JMF 60:2aa16fd02dfd 40 /** \brief ITM Receive Character
JMF 60:2aa16fd02dfd 41
JMF 60:2aa16fd02dfd 42 The function inputs a character via the external variable \ref ITM_RxBuffer.
JMF 60:2aa16fd02dfd 43 This variable is monitored and altered by the debugger to provide input.
JMF 60:2aa16fd02dfd 44
JMF 60:2aa16fd02dfd 45 \return Received character.
JMF 60:2aa16fd02dfd 46 \return -1 No character pending.
JMF 60:2aa16fd02dfd 47 */
JMF 60:2aa16fd02dfd 48 int ITM_getc (void) {
JMF 60:2aa16fd02dfd 49 int ch = -1; /* no character available */
JMF 60:2aa16fd02dfd 50
JMF 60:2aa16fd02dfd 51 if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) {
JMF 60:2aa16fd02dfd 52 ch = ITM_RxBuffer;
JMF 60:2aa16fd02dfd 53 ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */
JMF 60:2aa16fd02dfd 54 }
JMF 60:2aa16fd02dfd 55
JMF 60:2aa16fd02dfd 56 return (ch);
JMF 60:2aa16fd02dfd 57 }
JMF 60:2aa16fd02dfd 58
JMF 60:2aa16fd02dfd 59 /** \brief ITM send string
JMF 60:2aa16fd02dfd 60
JMF 60:2aa16fd02dfd 61 The function sends a null terminated string via the external variable \ref ITM_RxBuffer.
JMF 60:2aa16fd02dfd 62 This variable is monitored and altered by the debugger to provide input.
JMF 60:2aa16fd02dfd 63
JMF 60:2aa16fd02dfd 64 \return Received character.
JMF 60:2aa16fd02dfd 65 \return -1 No character pending.
JMF 60:2aa16fd02dfd 66 */
JMF 60:2aa16fd02dfd 67 int ITM_puts (char * str) {
JMF 60:2aa16fd02dfd 68 int i=0;
JMF 60:2aa16fd02dfd 69
JMF 60:2aa16fd02dfd 70 while(str[i])
JMF 60:2aa16fd02dfd 71 ITM_putc(str[i++]);
JMF 60:2aa16fd02dfd 72 return i;
JMF 60:2aa16fd02dfd 73 }
JMF 60:2aa16fd02dfd 74