Fork with SeeedStudio Xadow GPS v2 enabled

Dependencies:   FXOS8700CQ MODSERIAL XadowGPS mbed

Fork of Avnet_ATT_Cellular_IOT by Avnet

Committer:
HackTampa
Date:
Thu Dec 22 21:06:01 2016 +0000
Revision:
84:923940fe25d9
Parent:
68:6e311c747045
Minor change

Who changed what in which revision?

UserRevisionLine numberNew contents of line
fkellermavnet 68:6e311c747045 1 /* ===================================================================
fkellermavnet 68:6e311c747045 2 Copyright © 2016, AVNET Inc.
fkellermavnet 68:6e311c747045 3
fkellermavnet 68:6e311c747045 4 Licensed under the Apache License, Version 2.0 (the "License");
fkellermavnet 68:6e311c747045 5 you may not use this file except in compliance with the License.
fkellermavnet 68:6e311c747045 6 You may obtain a copy of the License at
fkellermavnet 68:6e311c747045 7
fkellermavnet 68:6e311c747045 8 http://www.apache.org/licenses/LICENSE-2.0
fkellermavnet 68:6e311c747045 9
fkellermavnet 68:6e311c747045 10 Unless required by applicable law or agreed to in writing,
fkellermavnet 68:6e311c747045 11 software distributed under the License is distributed on an
fkellermavnet 68:6e311c747045 12 "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
fkellermavnet 68:6e311c747045 13 either express or implied. See the License for the specific
fkellermavnet 68:6e311c747045 14 language governing permissions and limitations under the License.
fkellermavnet 68:6e311c747045 15
fkellermavnet 68:6e311c747045 16 ======================================================================== */
fkellermavnet 68:6e311c747045 17
JMF 60:2aa16fd02dfd 18 //Used for ULINK output only
JMF 60:2aa16fd02dfd 19 //
JMF 60:2aa16fd02dfd 20
JMF 60:2aa16fd02dfd 21 /* ITM registers */
JMF 60:2aa16fd02dfd 22 #define ITM_PORT0_U8 (*((volatile unsigned int *)0xE0000000))
JMF 60:2aa16fd02dfd 23 #define ITM_PORT0_U32 (*((volatile unsigned long *)0xE0000000))
JMF 60:2aa16fd02dfd 24 #define ITM_TER (*((volatile unsigned long *)0xE0000E00))
JMF 60:2aa16fd02dfd 25 #define ITM_TCR (*((volatile unsigned long *)0xE0000E80))
JMF 60:2aa16fd02dfd 26
JMF 60:2aa16fd02dfd 27 #define ITM_TCR_ITMENA_Msk (1UL << 0)
JMF 60:2aa16fd02dfd 28
JMF 60:2aa16fd02dfd 29 /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */
JMF 60:2aa16fd02dfd 30 #define ITM_RXBUFFER_EMPTY 0x5AA55AA5
JMF 60:2aa16fd02dfd 31
JMF 60:2aa16fd02dfd 32 /*!< Variable to receive characters. */
JMF 60:2aa16fd02dfd 33 extern
JMF 60:2aa16fd02dfd 34 volatile int ITM_RxBuffer;
JMF 60:2aa16fd02dfd 35 volatile int ITM_RxBuffer = ITM_RXBUFFER_EMPTY;
JMF 60:2aa16fd02dfd 36
JMF 60:2aa16fd02dfd 37 /** \brief ITM Send Character
JMF 60:2aa16fd02dfd 38
JMF 60:2aa16fd02dfd 39 The function transmits a character via the ITM channel 0, and
JMF 60:2aa16fd02dfd 40 \li Just returns when no debugger is connected that has booked the output.
JMF 60:2aa16fd02dfd 41 \li Is blocking when a debugger is connected, but the previous character
JMF 60:2aa16fd02dfd 42 sent has not been transmitted.
JMF 60:2aa16fd02dfd 43
JMF 60:2aa16fd02dfd 44 \param [in] ch Character to transmit.
JMF 60:2aa16fd02dfd 45
JMF 60:2aa16fd02dfd 46 \returns Character to transmit.
JMF 60:2aa16fd02dfd 47 */
JMF 60:2aa16fd02dfd 48 int ITM_putc (int ch) {
JMF 60:2aa16fd02dfd 49 if ((ITM_TCR & ITM_TCR_ITMENA_Msk) && /* ITM enabled */
JMF 60:2aa16fd02dfd 50 (ITM_TER & (1UL << 0) )) { /* ITM Port #0 enabled */
JMF 60:2aa16fd02dfd 51 while (ITM_PORT0_U32 == 0);
JMF 60:2aa16fd02dfd 52 ITM_PORT0_U8 = (int)ch;
JMF 60:2aa16fd02dfd 53 }
JMF 60:2aa16fd02dfd 54 return (ch);
JMF 60:2aa16fd02dfd 55 }
JMF 60:2aa16fd02dfd 56
JMF 60:2aa16fd02dfd 57 /** \brief ITM Receive Character
JMF 60:2aa16fd02dfd 58
JMF 60:2aa16fd02dfd 59 The function inputs a character via the external variable \ref ITM_RxBuffer.
JMF 60:2aa16fd02dfd 60 This variable is monitored and altered by the debugger to provide input.
JMF 60:2aa16fd02dfd 61
JMF 60:2aa16fd02dfd 62 \return Received character.
JMF 60:2aa16fd02dfd 63 \return -1 No character pending.
JMF 60:2aa16fd02dfd 64 */
JMF 60:2aa16fd02dfd 65 int ITM_getc (void) {
JMF 60:2aa16fd02dfd 66 int ch = -1; /* no character available */
JMF 60:2aa16fd02dfd 67
JMF 60:2aa16fd02dfd 68 if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) {
JMF 60:2aa16fd02dfd 69 ch = ITM_RxBuffer;
JMF 60:2aa16fd02dfd 70 ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */
JMF 60:2aa16fd02dfd 71 }
JMF 60:2aa16fd02dfd 72
JMF 60:2aa16fd02dfd 73 return (ch);
JMF 60:2aa16fd02dfd 74 }
JMF 60:2aa16fd02dfd 75
JMF 60:2aa16fd02dfd 76 /** \brief ITM send string
JMF 60:2aa16fd02dfd 77
JMF 60:2aa16fd02dfd 78 The function sends a null terminated string via the external variable \ref ITM_RxBuffer.
JMF 60:2aa16fd02dfd 79 This variable is monitored and altered by the debugger to provide input.
JMF 60:2aa16fd02dfd 80
JMF 60:2aa16fd02dfd 81 \return Received character.
JMF 60:2aa16fd02dfd 82 \return -1 No character pending.
JMF 60:2aa16fd02dfd 83 */
JMF 60:2aa16fd02dfd 84 int ITM_puts (char * str) {
JMF 60:2aa16fd02dfd 85 int i=0;
JMF 60:2aa16fd02dfd 86
JMF 60:2aa16fd02dfd 87 while(str[i])
JMF 60:2aa16fd02dfd 88 ITM_putc(str[i++]);
JMF 60:2aa16fd02dfd 89 return i;
JMF 60:2aa16fd02dfd 90 }
JMF 60:2aa16fd02dfd 91