diff options
| author | Yuval Adam <yuv.adm@gmail.com> | 2012-10-29 23:04:19 +0200 |
|---|---|---|
| committer | Yuval Adam <yuv.adm@gmail.com> | 2012-10-29 23:04:19 +0200 |
| commit | e018ceebed74b8223482bc9d1ed0b31c938381da (patch) | |
| tree | 3151f2ec3af6fb64967a177c85ba2c2af61fb9f6 /boards/ek-lm4f120xl-boost-capsense | |
| parent | 48395c0348a1a3fa3330e397d2463f62ff5c45c7 (diff) | |
New example files
Diffstat (limited to 'boards/ek-lm4f120xl-boost-capsense')
45 files changed, 6254 insertions, 0 deletions
diff --git a/boards/ek-lm4f120xl-boost-capsense/Makefile b/boards/ek-lm4f120xl-boost-capsense/Makefile new file mode 100644 index 0000000..44d515e --- /dev/null +++ b/boards/ek-lm4f120xl-boost-capsense/Makefile @@ -0,0 +1,47 @@ +#******************************************************************************
+#
+# Makefile - Rules for building the ek-lm4f120xl-boost-capsense examples.
+#
+# Copyright (c) 2012 Texas Instruments Incorporated. All rights reserved.
+# Software License Agreement
+#
+# Texas Instruments (TI) is supplying this software for use solely and
+# exclusively on TI's microcontroller products. The software is owned by
+# TI and/or its suppliers, and is protected under applicable copyright
+# laws. You may not combine this software with "viral" open-source
+# software in order to form a larger program.
+#
+# THIS SOFTWARE IS PROVIDED "AS IS" AND WITH ALL FAULTS.
+# NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT
+# NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. TI SHALL NOT, UNDER ANY
+# CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR CONSEQUENTIAL
+# DAMAGES, FOR ANY REASON WHATSOEVER.
+#
+# This is part of revision 9453 of the EK-LM4F120XL Firmware Package.
+#
+#******************************************************************************
+
+#
+# A list of the directories containing the examples.
+#
+DIRS=capsense
+
+#
+# The default rule, which causes the examples to be built.
+#
+all:
+ @for i in ${DIRS}; \
+ do \
+ make -C $${i} || exit $$?; \
+ done
+
+#
+# The rule to clean out all the build products.
+#
+clean:
+ @rm -rf ${wildcard *~} __dummy__
+ @-for i in ${DIRS}; \
+ do \
+ make -C $${i} clean; \
+ done
diff --git a/boards/ek-lm4f120xl-boost-capsense/capsense/Makefile b/boards/ek-lm4f120xl-boost-capsense/capsense/Makefile new file mode 100644 index 0000000..7592be6 --- /dev/null +++ b/boards/ek-lm4f120xl-boost-capsense/capsense/Makefile @@ -0,0 +1,99 @@ +#******************************************************************************
+#
+# Makefile - Rules for building the CapSense Demo.
+#
+# Copyright (c) 2012 Texas Instruments Incorporated. All rights reserved.
+# Software License Agreement
+#
+# Texas Instruments (TI) is supplying this software for use solely and
+# exclusively on TI's microcontroller products. The software is owned by
+# TI and/or its suppliers, and is protected under applicable copyright
+# laws. You may not combine this software with "viral" open-source
+# software in order to form a larger program.
+#
+# THIS SOFTWARE IS PROVIDED "AS IS" AND WITH ALL FAULTS.
+# NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT
+# NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. TI SHALL NOT, UNDER ANY
+# CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR CONSEQUENTIAL
+# DAMAGES, FOR ANY REASON WHATSOEVER.
+#
+# This is part of revision 9453 of the EK-LM4F120XL Firmware Package.
+#
+#******************************************************************************
+
+#
+# Defines the part type that this project uses.
+#
+PART=LM4F120H5QR
+
+#
+# Set the processor variant.
+#
+VARIANT=cm4f
+
+#
+# The base directory for StellarisWare.
+#
+ROOT=../../..
+
+#
+# Include the common make definitions.
+#
+include ${ROOT}/makedefs
+
+#
+# Where to find source files that do not live in this directory.
+#
+VPATH=../../ek-lm4f120xl/drivers
+VPATH+=../drivers
+VPATH+=../../../utils
+
+#
+# Where to find header files that do not live in the source directory.
+#
+IPATH=..
+IPATH+=../../..
+IPATH+=../../ek-lm4f120xl
+
+#
+# The default rule, which causes the CapSense Demo to be built.
+#
+all: ${COMPILER}
+all: ${COMPILER}/capsense.axf
+
+#
+# The rule to clean out all the build products.
+#
+clean:
+ @rm -rf ${COMPILER} ${wildcard *~}
+
+#
+# The rule to create the target directory.
+#
+${COMPILER}:
+ @mkdir -p ${COMPILER}
+
+#
+# Rules for building the CapSense Demo.
+#
+${COMPILER}/capsense.axf: ${COMPILER}/CTS_HAL.o
+${COMPILER}/capsense.axf: ${COMPILER}/CTS_Layer.o
+${COMPILER}/capsense.axf: ${COMPILER}/CTS_structure.o
+${COMPILER}/capsense.axf: ${COMPILER}/buttons.o
+${COMPILER}/capsense.axf: ${COMPILER}/capsense.o
+${COMPILER}/capsense.axf: ${COMPILER}/rgb.o
+${COMPILER}/capsense.axf: ${COMPILER}/startup_${COMPILER}.o
+${COMPILER}/capsense.axf: ${COMPILER}/uartstdio.o
+${COMPILER}/capsense.axf: ${ROOT}/driverlib/${COMPILER}-cm4f/libdriver-cm4f.a
+${COMPILER}/capsense.axf: capsense.ld
+SCATTERgcc_capsense=capsense.ld
+ENTRY_capsense=ResetISR
+CFLAGSgcc=-DTARGET_IS_BLIZZARD_RA1
+
+#
+# Include the automatically generated dependency files.
+#
+ifneq (${MAKECMDGOALS},clean)
+-include ${wildcard ${COMPILER}/*.d} __dummy__
+endif
diff --git a/boards/ek-lm4f120xl-boost-capsense/capsense/capsense.c b/boards/ek-lm4f120xl-boost-capsense/capsense/capsense.c new file mode 100644 index 0000000..bf2afdc --- /dev/null +++ b/boards/ek-lm4f120xl-boost-capsense/capsense/capsense.c @@ -0,0 +1,604 @@ +//*****************************************************************************
+//
+// capsense.c - Capacitive touch example.
+//
+// Copyright (c) 2011-2012 Texas Instruments Incorporated. All rights reserved.
+// Software License Agreement
+//
+// Texas Instruments (TI) is supplying this software for use solely and
+// exclusively on TI's microcontroller products. The software is owned by
+// TI and/or its suppliers, and is protected under applicable copyright
+// laws. You may not combine this software with "viral" open-source
+// software in order to form a larger program.
+//
+// THIS SOFTWARE IS PROVIDED "AS IS" AND WITH ALL FAULTS.
+// NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT
+// NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. TI SHALL NOT, UNDER ANY
+// CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR CONSEQUENTIAL
+// DAMAGES, FOR ANY REASON WHATSOEVER.
+//
+// This is part of revision 9453 of the EK-LM4F120XL Firmware Package.
+//
+//*****************************************************************************
+
+#include <math.h>
+#include "inc/hw_types.h"
+#include "inc/hw_gpio.h"
+#include "inc/hw_memmap.h"
+#include "inc/hw_nvic.h"
+#include "driverlib/fpu.h"
+#include "driverlib/sysctl.h"
+#include "driverlib/rom.h"
+#include "driverlib/pin_map.h"
+#include "driverlib/gpio.h"
+#include "driverlib/systick.h"
+#include "driverlib/interrupt.h"
+#include "driverlib/uart.h"
+#include "utils/uartstdio.h"
+#include "drivers/buttons.h"
+
+#include "drivers/CTS_structure.h"
+#include "drivers/CTS_Layer.h"
+
+//*****************************************************************************
+//
+//! \addtogroup example_list
+//! <h1>Capacitive Touch Example (capsense)</h1>
+//!
+//! An example that works with the 430BOOST-SENSE1 capactive sense
+//! BoosterPack, originally designed for the MSP430 LaunchPad.
+//!
+//! The Stellaris LM4F120H5QR does not have the capacitive sense hardware
+//! assisted peripheral features of some MSP430 chips. Therefore it is
+//! required that the user install surface mount resistors on the pads
+//! provided on the bottom of the capacitive sense BoosterPack. Resistor values
+//! of 30 ohms are recommended. Calibration may be required for
+//! resistor values other than 30 ohms.
+//!
+//
+//*****************************************************************************
+
+
+//*****************************************************************************
+//
+// Macro definitions
+//
+//*****************************************************************************
+#define TESTMODE
+#define NUM_OSCILLATIONS 100
+
+#define WAKE_UP_UART_CODE 0xBE
+#define WAKE_UP_UART_CODE2 0xEF
+#define SLEEP_MODE_UART_CODE 0xDE
+#define SLEEP_MODE_UART_CODE2 0xAD
+#define MIDDLE_BUTTON_CODE 0x80
+#define INVALID_CONVERTED_POSITION 0xFD
+#define GESTURE_START 0xFC
+#define GESTURE_STOP 0xFB
+#define COUNTER_CLOCKWISE 1
+#define CLOCKWISE 2
+#define GESTURE_POSITION_OFFSET 0x20
+#define WHEEL_POSITION_OFFSET 0x30
+
+#define WHEEL_TOUCH_DELAY 12
+#define MAX_IDLE_TIME 200
+#define PROXIMITY_THRESHOLD 60
+
+
+//*****************************************************************************
+//
+// Global variables
+//
+//*****************************************************************************
+unsigned long g_ulUpBaseline = 0;
+unsigned long g_ulDownBaseline = 0;
+unsigned long g_ulLeftBaseline = 0;
+unsigned long g_ulRightBaseline = 0;
+unsigned long g_ulCenterBaseline = 0;
+unsigned long g_ulWheelPosition = ILLEGAL_SLIDER_WHEEL_POSITION;
+unsigned long ulPreviousWheelPosition = ILLEGAL_SLIDER_WHEEL_POSITION;
+
+
+//*****************************************************************************
+//
+// The error routine that is called if the driver library encounters an error.
+//
+//*****************************************************************************
+#ifdef DEBUG
+void
+__error__(char *pcFilename, unsigned long ulLine)
+{
+}
+#endif
+
+//*****************************************************************************
+//
+// Delay for count milliseconds
+//
+//*****************************************************************************
+void
+DelayMs(unsigned long ulCount)
+{
+ SysCtlDelay((SysCtlClockGet()/3000)*ulCount);
+}
+
+//*****************************************************************************
+//
+// Abstraction for LED output.
+//
+//*****************************************************************************
+void
+LEDOutput(unsigned long ulWheelPosition)
+{
+ GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_4, 0);
+ GPIOPinTypeGPIOInput(GPIO_PORTE_BASE, GPIO_PIN_5);
+ GPIOPinTypeGPIOInput(GPIO_PORTB_BASE, GPIO_PIN_4);
+ GPIOPinTypeGPIOInput(GPIO_PORTB_BASE, GPIO_PIN_6);
+ GPIOPinTypeGPIOInput(GPIO_PORTB_BASE, GPIO_PIN_7);
+
+ switch(ulWheelPosition)
+ {
+ case 0:
+ break;
+ case 1:
+ GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_4, GPIO_PIN_4);
+ GPIOPinTypeGPIOOutput(GPIO_PORTE_BASE, GPIO_PIN_5);
+ GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_5, 0);
+ break;
+ case 2:
+ GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_4, GPIO_PIN_4);
+ GPIOPinTypeGPIOOutput(GPIO_PORTE_BASE, GPIO_PIN_5);
+ GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_5, 0);
+ //P1-5OFF
+ GPIOPinTypeGPIOOutput(GPIO_PORTB_BASE, GPIO_PIN_4);
+ GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_4, 0);
+ break;
+ case 3:
+ GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_4, GPIO_PIN_4);
+ //P1-5OFF
+ GPIOPinTypeGPIOOutput(GPIO_PORTB_BASE, GPIO_PIN_4);
+ GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_4, 0);
+ break;
+ case 4:
+ GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_4, GPIO_PIN_4);
+ //P1-5OFF
+ GPIOPinTypeGPIOOutput(GPIO_PORTB_BASE, GPIO_PIN_4);
+ GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_4, 0);
+ //P1-6OFF
+ GPIOPinTypeGPIOOutput(GPIO_PORTB_BASE, GPIO_PIN_6);
+ GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_6, 0);
+ break;
+ case 5:
+ GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_4, GPIO_PIN_4);
+ //P1-6OFF
+ GPIOPinTypeGPIOOutput(GPIO_PORTB_BASE, GPIO_PIN_6);
+ GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_6, 0);
+ break;
+ case 6:
+ GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_4, GPIO_PIN_4);
+ //P1-6OFF
+ GPIOPinTypeGPIOOutput(GPIO_PORTB_BASE, GPIO_PIN_6);
+ GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_6, 0);
+ //P1-7OFF
+ GPIOPinTypeGPIOOutput(GPIO_PORTB_BASE, GPIO_PIN_7);
+ GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_7, 0);
+ break;
+ case 7:
+ GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_4, GPIO_PIN_4);
+ //P1-7OFF
+ GPIOPinTypeGPIOOutput(GPIO_PORTB_BASE, GPIO_PIN_7);
+ GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_7, 0);
+ break;
+ case 8:
+ break;
+ case 9:
+ GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_4, 0);
+ //P1-7ON
+ GPIOPinTypeGPIOOutput(GPIO_PORTB_BASE, GPIO_PIN_7);
+ GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_7, GPIO_PIN_7);
+ break;
+ case 10:
+ GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_4, 0);
+ //P1-7ON
+ GPIOPinTypeGPIOOutput(GPIO_PORTB_BASE, GPIO_PIN_7);
+ GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_7, GPIO_PIN_7);
+ //P1-6ON
+ GPIOPinTypeGPIOOutput(GPIO_PORTB_BASE, GPIO_PIN_6);
+ GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_6, GPIO_PIN_6);
+ break;
+ case 11:
+ GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_4, 0);
+ //P1-6ON
+ GPIOPinTypeGPIOOutput(GPIO_PORTB_BASE, GPIO_PIN_6);
+ GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_6, GPIO_PIN_6);
+ break;
+ case 12:
+ GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_4, 0);
+ //P1-6ON
+ GPIOPinTypeGPIOOutput(GPIO_PORTB_BASE, GPIO_PIN_6);
+ GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_6, GPIO_PIN_6);
+ //P1-5ON
+ GPIOPinTypeGPIOOutput(GPIO_PORTB_BASE, GPIO_PIN_4);
+ GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_4, GPIO_PIN_4);
+ break;
+ case 13:
+ GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_4, 0);
+ //P1-5ON
+ GPIOPinTypeGPIOOutput(GPIO_PORTB_BASE, GPIO_PIN_4);
+ GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_4, GPIO_PIN_4);
+ break;
+ case 14:
+ GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_4, 0);
+ //P1-5ON
+ GPIOPinTypeGPIOOutput(GPIO_PORTB_BASE, GPIO_PIN_4);
+ GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_4, GPIO_PIN_4);
+ //P1-4ON
+ GPIOPinTypeGPIOOutput(GPIO_PORTE_BASE, GPIO_PIN_5);
+ GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_5, GPIO_PIN_5);
+ break;
+ case 15:
+ GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_4, 0);
+ //P1-4ON
+ GPIOPinTypeGPIOOutput(GPIO_PORTE_BASE, GPIO_PIN_5);
+ GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_5, GPIO_PIN_5);
+ break;
+ default:
+ break;
+ }
+}
+//*****************************************************************************
+//
+// Get Gesture.
+//
+//*****************************************************************************
+unsigned char GetGesture(unsigned char ulWheelPosition)
+{
+ unsigned char gesture = INVALID_CONVERTED_POSITION;
+ unsigned char ucDirection, ccw_check, cw_check;
+
+ if(ulPreviousWheelPosition != ILLEGAL_SLIDER_WHEEL_POSITION)
+ {
+ if(ulPreviousWheelPosition > ulWheelPosition)
+ {
+ ccw_check = ulPreviousWheelPosition - ulWheelPosition;
+ if(ccw_check < 8)
+ {
+ gesture = ccw_check;
+ ucDirection = COUNTER_CLOCKWISE;
+ }
+ else
+ {
+ cw_check = 16 - ulPreviousWheelPosition + ulWheelPosition;
+ if(cw_check < 8)
+ {
+ gesture = cw_check;
+ ucDirection = CLOCKWISE;
+ }
+ }
+ }
+ else
+ {
+ cw_check = ulWheelPosition - ulPreviousWheelPosition;
+ if(cw_check < 8)
+ {
+ gesture = cw_check;
+ ucDirection = CLOCKWISE;
+ }
+ else
+ {
+ ccw_check = 16 + ulPreviousWheelPosition - ulWheelPosition;
+ if(ccw_check < 8)
+ {
+ gesture = ccw_check;
+ ucDirection = COUNTER_CLOCKWISE;
+ }
+ }
+ }
+ }
+ if(gesture == INVALID_CONVERTED_POSITION)
+ return gesture;
+ if(ucDirection == COUNTER_CLOCKWISE)
+ return(gesture + 16);
+ else
+ return gesture;
+}
+//*****************************************************************************
+//
+// Main cap-touch example.
+//
+//*****************************************************************************
+int
+main(void)
+{
+ unsigned char ucCenterButtonTouched;
+ unsigned long ulWheelTouchCounter;
+ unsigned char ucConvertedWheelPosition;
+ unsigned char ucGestureDetected;
+
+ //
+ // Enable lazy stacking for interrupt handlers. This allows floating-point
+ // instructions to be used within interrupt handlers, but at the expense of
+ // extra stack usage.
+ //
+ ROM_FPUEnable();
+ ROM_FPULazyStackingEnable();
+
+ //
+ // Set the clocking to run directly from the PLL at 80 MHz
+ //
+ ROM_SysCtlClockSet(SYSCTL_SYSDIV_2_5 | SYSCTL_USE_PLL | SYSCTL_XTAL_16MHZ |
+ SYSCTL_OSC_MAIN);
+ ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
+ ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);
+ ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE);
+
+ //
+ // Initialize a few GPIO outputs for the LEDs
+ //
+ GPIOPinTypeGPIOOutput(GPIO_PORTE_BASE, GPIO_PIN_4);
+ GPIOPinTypeGPIOOutput(GPIO_PORTE_BASE, GPIO_PIN_5);
+ GPIOPinTypeGPIOOutput(GPIO_PORTB_BASE, GPIO_PIN_4);
+ GPIOPinTypeGPIOOutput(GPIO_PORTB_BASE, GPIO_PIN_6);
+ GPIOPinTypeGPIOOutput(GPIO_PORTB_BASE, GPIO_PIN_7);
+ GPIOPinTypeGPIOOutput(GPIO_PORTB_BASE, GPIO_PIN_5);
+
+ //
+ // Turn on the Center LED
+ //
+ GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_5, GPIO_PIN_5);
+
+ //
+ // Initialize the UART.
+ //
+ ROM_GPIOPinConfigure(GPIO_PA0_U0RX);
+ ROM_GPIOPinConfigure(GPIO_PA1_U0TX);
+ ROM_GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_1);
+ UARTStdioInitExpClk(0,9600);
+
+ //
+ // First, I'm configuring the pins as outputs to take care of all of the
+ // non-recurring setup.
+ //
+ ROM_SysCtlGPIOAHBEnable(SYSCTL_PERIPH_GPIOA);
+ GPIOPinTypeGPIOOutput(GPIO_PORTA_AHB_BASE, GPIO_PIN_2);
+ GPIOPinTypeGPIOOutput(GPIO_PORTA_AHB_BASE, GPIO_PIN_3);
+ GPIOPinTypeGPIOOutput(GPIO_PORTA_AHB_BASE, GPIO_PIN_4);
+ GPIOPinTypeGPIOOutput(GPIO_PORTA_AHB_BASE, GPIO_PIN_6);
+ GPIOPinTypeGPIOOutput(GPIO_PORTA_AHB_BASE, GPIO_PIN_7);
+
+ //
+ // Start up Systick to measure time
+ //
+ SysTickPeriodSet(0x00FFFFFF);
+ SysTickEnable();
+
+ //
+ // Set the baseline capacitance measurements for our wheel and center
+ // button.
+ //
+ TI_CAPT_Init_Baseline(&g_sSensorWheel);
+ TI_CAPT_Update_Baseline(&g_sSensorWheel,2);
+ TI_CAPT_Init_Baseline(&g_sMiddleButton);
+ TI_CAPT_Update_Baseline(&g_sMiddleButton,2);
+
+ //
+ // Send the Sleep code
+ //
+ UARTprintf("\0xDE\0xAD");
+
+ //
+ // Perform the LED startup sequence, and tell the GUI we're alive.
+ //
+ UARTprintf("\0xBE\0xEF");
+
+ //
+ // Assume that the center button starts off "untouched", the wheel has no
+ // position, and no gestures are in progress.
+ //
+ ucCenterButtonTouched = 0;
+ ucConvertedWheelPosition = INVALID_CONVERTED_POSITION;
+ ucGestureDetected = 0;
+
+ //
+ // Set the wheel counter for the default delay period.
+ //
+ ulWheelTouchCounter = WHEEL_TOUCH_DELAY - 1;
+
+ //
+ // Go into active mode.
+ //
+ while(1)
+ {
+ g_ulWheelPosition = ILLEGAL_SLIDER_WHEEL_POSITION;
+ g_ulWheelPosition = TI_CAPT_Wheel(&g_sSensorWheel);
+
+ if(g_ulWheelPosition != ILLEGAL_SLIDER_WHEEL_POSITION)
+ {
+ ucCenterButtonTouched = 0;
+
+ if(g_ulWheelPosition < 0x08)
+ {
+ g_ulWheelPosition += 0x40 - 0x08;
+ }
+ else
+ {
+ g_ulWheelPosition -= 0x08;
+ }
+
+ g_ulWheelPosition = g_ulWheelPosition >> 2;
+
+ ucConvertedWheelPosition = GetGesture(g_ulWheelPosition);
+
+ //
+ // Add hysteresis to reduce toggling between g_sSensorWheel
+ // positions if no gesture has been TRULY detected.
+ //
+ if((ucGestureDetected==0) && ((ucConvertedWheelPosition<=1) ||
+ (ucConvertedWheelPosition==0x11) ||
+ (ucConvertedWheelPosition==0x10)))
+ {
+ if (ulPreviousWheelPosition != ILLEGAL_SLIDER_WHEEL_POSITION)
+ g_ulWheelPosition = ulPreviousWheelPosition;
+ ucConvertedWheelPosition = 0;
+ }
+
+ //
+ //Turn on corresponding LED(s)
+ //
+ LEDOutput(g_ulWheelPosition);
+
+ //
+ // A gesture has been detected
+ //
+ if((ucConvertedWheelPosition != 0) &&
+ (ucConvertedWheelPosition != 16) &&
+ (ucConvertedWheelPosition != INVALID_CONVERTED_POSITION))
+ {
+ //
+ // Starting of a new gesture sequence
+ //
+ if (ucGestureDetected ==0)
+ {
+ ucGestureDetected = 1;
+
+ //
+ // Transmit gesture start status update & position via UART
+ // to PC
+ //
+ UARTCharPut(UART0_BASE, GESTURE_START);
+ UARTCharPut(UART0_BASE,ulPreviousWheelPosition +
+ GESTURE_POSITION_OFFSET);
+ }
+
+ //
+ // Transmit gesture & position via UART to PC
+ //
+ UARTCharPut(UART0_BASE,ucConvertedWheelPosition);
+ UARTCharPut(UART0_BASE,g_ulWheelPosition +
+ GESTURE_POSITION_OFFSET);
+ }
+ else
+ {
+ //
+ // If no gesture was detected, this is constituted as a
+ // touch/tap
+ //
+ if (ucGestureDetected==0)
+ {
+ if (++ulWheelTouchCounter >= WHEEL_TOUCH_DELAY)
+ {
+ //
+ // Transmit wheel position [twice] via UART to PC
+ //
+ ulWheelTouchCounter = 0;
+ UARTCharPut(UART0_BASE,g_ulWheelPosition +
+ WHEEL_POSITION_OFFSET);
+ UARTCharPut(UART0_BASE,g_ulWheelPosition +
+ WHEEL_POSITION_OFFSET);
+ }
+ }
+ else
+ {
+ ulWheelTouchCounter = WHEEL_TOUCH_DELAY - 1;
+ }
+ }
+
+ ulPreviousWheelPosition = g_ulWheelPosition;
+ }
+ else
+ {
+ //
+ // no wheel position was detected
+ //
+
+ if(TI_CAPT_Button(&g_sMiddleButton))
+ {
+ //
+ // Middle button was touched
+ //
+ if (ucCenterButtonTouched==0)
+ {
+ //
+ // Transmit center button code [twice] via UART to PC
+ //
+ UARTCharPut(UART0_BASE,MIDDLE_BUTTON_CODE);
+ UARTCharPut(UART0_BASE,MIDDLE_BUTTON_CODE);
+
+ ucCenterButtonTouched = 1;
+
+ if(GPIOPinRead(GPIO_PORTB_BASE, GPIO_PIN_5))
+ {
+ GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_5, 0);
+ }
+ else
+ {
+ GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_5, GPIO_PIN_5);
+ }
+ }
+ }
+ else
+ {
+ //
+ // No touch was registered at all [Not wheel or center button]
+ //
+ ucCenterButtonTouched = 0;
+
+ if((ucConvertedWheelPosition == INVALID_CONVERTED_POSITION) ||
+ (ucGestureDetected ==0))
+ {
+ //
+ // No gesture was registered previously
+ //
+ if(ulPreviousWheelPosition !=
+ ILLEGAL_SLIDER_WHEEL_POSITION)
+ {
+ //
+ // Transmit last wheel position [twice] via UART to PC
+ //
+ UARTCharPut(UART0_BASE,ulPreviousWheelPosition +
+ WHEEL_POSITION_OFFSET );
+ UARTCharPut(UART0_BASE,ulPreviousWheelPosition +
+ WHEEL_POSITION_OFFSET );
+ ulWheelTouchCounter = WHEEL_TOUCH_DELAY - 1;
+ }
+ }
+
+ if (ucGestureDetected == 1)
+ {
+ //
+ // A gesture was registered previously
+ //
+
+ //
+ // Transmit status update: stop gesture tracking [twice]
+ // via UART to PC
+ //
+ UARTCharPut(UART0_BASE,GESTURE_STOP);
+ UARTCharPut(UART0_BASE,GESTURE_STOP);
+ }
+
+ }
+
+ //
+ // Reset all touch conditions, turn off LEDs,
+ //
+ LEDOutput(0);
+ ulPreviousWheelPosition= ILLEGAL_SLIDER_WHEEL_POSITION;
+ ucConvertedWheelPosition = INVALID_CONVERTED_POSITION;
+ ucGestureDetected = 0;
+
+ }
+
+ //
+ // Option: Add delay/sleep cycle here to reduce active duty cycle. This
+ // lowers power consumption but sacrifices wheel responsiveness.
+ // Additional timing refinement must be taken into consideration when
+ // interfacing with PC applications GUI to retain proper communication
+ // protocol.
+ //
+
+ DelayMs(50);
+
+ }
+}
diff --git a/boards/ek-lm4f120xl-boost-capsense/capsense/capsense.ewd b/boards/ek-lm4f120xl-boost-capsense/capsense/capsense.ewd new file mode 100644 index 0000000..b8eeac7 --- /dev/null +++ b/boards/ek-lm4f120xl-boost-capsense/capsense/capsense.ewd @@ -0,0 +1,614 @@ +<?xml version="1.0" encoding="iso-8859-1"?>
+
+<project>
+ <fileVersion>1</fileVersion>
+ <configuration>
+ <name>Debug</name>
+ <toolchain>
+ <name>ARM</name>
+ </toolchain>
+ <debug>1</debug>
+ <settings>
+ <name>C-SPY</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>15</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>CInput</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CEndian</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CProcessor</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OCVariant</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>MacOverride</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>MacFile</name>
+ <state></state>
+ </option>
+ <option>
+ <name>MemOverride</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>MemFile</name>
+ <state>$TOOLKIT_DIR$\CONFIG\debugger\TexasInstruments\lm4f120h5qr.svd.xml</state>
+ </option>
+ <option>
+ <name>RunToEnable</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>RunToName</name>
+ <state>main</state>
+ </option>
+ <option>
+ <name>CExtraOptionsCheck</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CExtraOptions</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CFpuProcessor</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OCDDFArgumentProducer</name>
+ <state></state>
+ </option>
+ <option>
+ <name>OCDownloadSuppressDownload</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCDownloadVerifyAll</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OCProductVersion</name>
+ <state>5.11.0.50579</state>
+ </option>
+ <option>
+ <name>OCDynDriverList</name>
+ <state>LMIFTDI_ID</state>
+ </option>
+ <option>
+ <name>OCLastSavedByProductVersion</name>
+ <state>5.11.0.50579</state>
+ </option>
+ <option>
+ <name>OCDownloadAttachToProgram</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>FlashLoaders</name>
+ <state>,,,,(default),</state>
+ </option>
+ <option>
+ <name>UseFlashLoader</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CLowLevel</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OCBE8Slave</name>
+ <state>1</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>ARMSIM_ID</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>1</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>OCSimDriverInfo</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OCSimEnablePSP</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCSimPspOverrideConfig</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCSimPspConfigFile</name>
+ <state></state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>ANGEL_ID</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>0</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>CCAngelHeartbeat</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CAngelCommunication</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CAngelCommBaud</name>
+ <version>0</version>
+ <state>3</state>
+ </option>
+ <option>
+ <name>CAngelCommPort</name>
+ <version>0</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>ANGELTCPIP</name>
+ <state>aaa.bbb.ccc.ddd</state>
+ </option>
+ <option>
+ <name>DoAngelLogfile</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AngelLogFile</name>
+ <state>$TOOLKIT_DIR$\cspycomm.log</state>
+ </option>
+ <option>
+ <name>OCDriverInfo</name>
+ <state>1</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>GDBSERVER_ID</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>0</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>OCDriverInfo</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>TCPIP</name>
+ <state>aaa.bbb.ccc.ddd</state>
+ </option>
+ <option>
+ <name>DoLogfile</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>LogFile</name>
+ <state>$TOOLKIT_DIR$\cspycomm.log</state>
+ </option>
+ <option>
+ <name>CCJTagBreakpointRadio</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCJTagDoUpdateBreakpoints</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCJTagUpdateBreakpoints</name>
+ <state>main</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>IARROM_ID</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>0</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>CRomLogFileCheck</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CRomLogFileEditB</name>
+ <state>$TOOLKIT_DIR$\cspycomm.log</state>
+ </option>
+ <option>
+ <name>CRomCommunication</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CRomCommPort</name>
+ <version>0</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CRomCommBaud</name>
+ <version>0</version>
+ <state>7</state>
+ </option>
+ <option>
+ <name>OCDriverInfo</name>
+ <state>1</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>JLINK_ID</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>9</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>JLinkSpeed</name>
+ <state>32</state>
+ </option>
+ <option>
+ <name>CCJLinkDoLogfile</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCJLinkLogFile</name>
+ <state>$TOOLKIT_DIR$\cspycomm.log</state>
+ </option>
+ <option>
+ <name>CCJLinkHWResetDelay</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCDriverInfo</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>JLinkInitialSpeed</name>
+ <state>32</state>
+ </option>
+ <option>
+ <name>CCDoJlinkMultiTarget</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCScanChainNonARMDevices</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCJLinkMultiTarget</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCJLinkIRLength</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCJLinkCommRadio</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCJLinkTCPIP</name>
+ <state>aaa.bbb.ccc.ddd</state>
+ </option>
+ <option>
+ <name>CCJLinkSpeedRadioV2</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCUSBDevice</name>
+ <version>0</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCRDICatchReset</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCRDICatchUndef</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCRDICatchSWI</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCRDICatchData</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCRDICatchPrefetch</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCRDICatchIRQ</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCRDICatchFIQ</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCJLinkBreakpointRadio</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCJLinkDoUpdateBreakpoints</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCJLinkUpdateBreakpoints</name>
+ <state>main</state>
+ </option>
+ <option>
+ <name>CCJLinkInterfaceRadio</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCJLinkAttachSlave</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCJLinkResetList</name>
+ <version>0</version>
+ <state>5</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>LMIFTDI_ID</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>1</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>OCDriverInfo</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>LmiftdiSpeed</name>
+ <state>500</state>
+ </option>
+ <option>
+ <name>CCLmiftdiDoLogfile</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCLmiftdiLogFile</name>
+ <state>$TOOLKIT_DIR$\cspycomm.log</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>MACRAIGOR_ID</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>2</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>jtag</name>
+ <version>0</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>EmuSpeed</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>TCPIP</name>
+ <state>aaa.bbb.ccc.ddd</state>
+ </option>
+ <option>
+ <name>DoLogfile</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>LogFile</name>
+ <state>$TOOLKIT_DIR$\cspycomm.log</state>
+ </option>
+ <option>
+ <name>DoEmuMultiTarget</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>EmuMultiTarget</name>
+ <state>0@ARM7TDMI</state>
+ </option>
+ <option>
+ <name>EmuHWReset</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CEmuCommBaud</name>
+ <version>0</version>
+ <state>4</state>
+ </option>
+ <option>
+ <name>CEmuCommPort</name>
+ <version>0</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>jtago</name>
+ <version>0</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCDriverInfo</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>UnusedAddr</name>
+ <state>0x00800000</state>
+ </option>
+ <option>
+ <name>CCMacraigorHWResetDelay</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CCJTagBreakpointRadio</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCJTagDoUpdateBreakpoints</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCJTagUpdateBreakpoints</name>
+ <state>main</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>RDI_ID</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>1</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>CRDIDriverDll</name>
+ <state>Browse to your RDI driver</state>
+ </option>
+ <option>
+ <name>CRDILogFileCheck</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CRDILogFileEdit</name>
+ <state>$TOOLKIT_DIR$\cspycomm.log</state>
+ </option>
+ <option>
+ <name>CCRDIHWReset</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCRDICatchReset</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCRDICatchUndef</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCRDICatchSWI</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCRDICatchData</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCRDICatchPrefetch</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCRDICatchIRQ</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCRDICatchFIQ</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCRDIUseETM</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OCDriverInfo</name>
+ <state>1</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>THIRDPARTY_ID</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>0</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>CThirdPartyDriverDll</name>
+ <state>Browse to your third-party driver</state>
+ </option>
+ <option>
+ <name>CThirdPartyLogFileCheck</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CThirdPartyLogFileEditB</name>
+ <state>$TOOLKIT_DIR$\cspycomm.log</state>
+ </option>
+ <option>
+ <name>OCDriverInfo</name>
+ <state>1</state>
+ </option>
+ </data>
+ </settings>
+ <debuggerPlugins>
+ <plugin>
+ <file>$TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ewplugin</file>
+ <loadFlag>0</loadFlag>
+ </plugin>
+ <plugin>
+ <file>$TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ewplugin</file>
+ <loadFlag>0</loadFlag>
+ </plugin>
+ <plugin>
+ <file>$TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin</file>
+ <loadFlag>0</loadFlag>
+ </plugin>
+ <plugin>
+ <file>$TOOLKIT_DIR$\plugins\rtos\OSE\OseEpsilonPlugin.ewplugin</file>
+ <loadFlag>0</loadFlag>
+ </plugin>
+ <plugin>
+ <file>$TOOLKIT_DIR$\plugins\rtos\PowerPac\PowerPacRTOS.ewplugin</file>
+ <loadFlag>0</loadFlag>
+ </plugin>
+ <plugin>
+ <file>$TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ewplugin</file>
+ <loadFlag>0</loadFlag>
+ </plugin>
+ <plugin>
+ <file>$TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin</file>
+ <loadFlag>0</loadFlag>
+ </plugin>
+ <plugin>
+ <file>$EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin</file>
+ <loadFlag>1</loadFlag>
+ </plugin>
+ <plugin>
+ <file>$EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin</file>
+ <loadFlag>0</loadFlag>
+ </plugin>
+ <plugin>
+ <file>$EW_DIR$\common\plugins\Profiling\Profiling.ENU.ewplugin</file>
+ <loadFlag>1</loadFlag>
+ </plugin>
+ <plugin>
+ <file>$EW_DIR$\common\plugins\Stack\Stack.ENU.ewplugin</file>
+ <loadFlag>1</loadFlag>
+ </plugin>
+ </debuggerPlugins>
+ </configuration>
+</project>
diff --git a/boards/ek-lm4f120xl-boost-capsense/capsense/capsense.ewp b/boards/ek-lm4f120xl-boost-capsense/capsense/capsense.ewp new file mode 100644 index 0000000..76f4ff3 --- /dev/null +++ b/boards/ek-lm4f120xl-boost-capsense/capsense/capsense.ewp @@ -0,0 +1,806 @@ +<?xml version="1.0" encoding="iso-8859-1"?>
+
+<project>
+ <fileVersion>1</fileVersion>
+ <configuration>
+ <name>Debug</name>
+ <toolchain>
+ <name>ARM</name>
+ </toolchain>
+ <debug>1</debug>
+ <settings>
+ <name>General</name>
+ <archiveVersion>3</archiveVersion>
+ <data>
+ <version>14</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>ExePath</name>
+ <state>ewarm\Exe</state>
+ </option>
+ <option>
+ <name>ObjPath</name>
+ <state>ewarm\Obj</state>
+ </option>
+ <option>
+ <name>ListPath</name>
+ <state>ewarm\List</state>
+ </option>
+ <option>
+ <name>Variant</name>
+ <version>19</version>
+ <state>39</state>
+ </option>
+ <option>
+ <name>GEndianMode</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>Input variant</name>
+ <version>1</version>
+ <state>3</state>
+ </option>
+ <option>
+ <name>Input description</name>
+ <state>No specifier n, no float nor long long, no scan set, no assignment suppressing.</state>
+ </option>
+ <option>
+ <name>Output variant</name>
+ <version>0</version>
+ <state>3</state>
+ </option>
+ <option>
+ <name>Output description</name>
+ <state>No specifier a, A, no specifier n, no float nor long long, no flags.</state>
+ </option>
+ <option>
+ <name>GOutputBinary</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>FPU</name>
+ <version>2</version>
+ <state>5</state>
+ </option>
+ <option>
+ <name>OGCoreOrChip</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>GRuntimeLibSelect</name>
+ <version>0</version>
+ <state>1</state>
+ </option>
+ <option>
+ <name>GRuntimeLibSelectSlave</name>
+ <version>0</version>
+ <state>1</state>
+ </option>
+ <option>
+ <name>RTDescription</name>
+ <state>Use the normal configuration of the C/C++ runtime library. No locale interface, C locale, no file descriptor support, no multibytes in printf and scanf, and no hex floats in strtod.</state>
+ </option>
+ <option>
+ <name>RTConfigPath</name>
+ <state>$TOOLKIT_DIR$\INC\DLib_Config_Normal.h</state>
+ </option>
+ <option>
+ <name>OGProductVersion</name>
+ <state>5.11.0.50579</state>
+ </option>
+ <option>
+ <name>OGLastSavedByProductVersion</name>
+ <state>5.11.0.50579</state>
+ </option>
+ <option>
+ <name>GeneralMisraRules</name>
+ <version>0</version>
+ <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+ </option>
+ <option>
+ <name>GeneralEnableMisra</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>GeneralMisraVerbose</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OGChipSelectEditMenu</name>
+ <state>LM4F120H5QR TexasInstruments LM4F120H5QR</state>
+ </option>
+ <option>
+ <name>GenLowLevelInterface</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>GEndianModeBE</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OGBufferedTerminalOutput</name>
+ <state>0</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>ICCARM</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>19</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>CCDefines</name>
+ <state>ewarm</state>
+ <state>PART_LM4F120H5QR</state>
+ <state>TARGET_IS_BLIZZARD_RA1</state>
+ </option>
+ <option>
+ <name>CCPreprocFile</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCPreprocComments</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCPreprocLine</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCListCFile</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCListCMnemonics</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCListCMessages</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCListAssFile</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCListAssSource</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCEnableRemarks</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCDiagSuppress</name>
+ <state>Pa050</state>
+ </option>
+ <option>
+ <name>CCDiagRemark</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CCDiagWarning</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CCDiagError</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CCObjPrefix</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCAllowList</name>
+ <version>1</version>
+ <state>1111111</state>
+ </option>
+ <option>
+ <name>CCDebugInfo</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IEndianMode</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IProcessor</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IExtraOptionsCheck</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IExtraOptions</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CCLangConformance</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCSignedPlainChar</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCRequirePrototypes</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCMultibyteSupport</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCDiagWarnAreErr</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCCompilerRuntimeInfo</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IFpuProcessor</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OutputFile</name>
+ <state>$FILE_BNAME$.o</state>
+ </option>
+ <option>
+ <name>CCLangSelect</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCLibConfigHeader</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>PreInclude</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CompilerMisraRules</name>
+ <version>0</version>
+ <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+ </option>
+ <option>
+ <name>CompilerMisraOverride</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCIncludePath2</name>
+ <state>$PROJ_DIR$\..</state>
+ <state>$PROJ_DIR$\..\..\..</state>
+ <state>$PROJ_DIR$\..\..\ek-lm4f120xl</state>
+ </option>
+ <option>
+ <name>CCStdIncCheck</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCStdIncludePath</name>
+ <state>$TOOLKIT_DIR$\INC\</state>
+ </option>
+ <option>
+ <name>CCCodeSection</name>
+ <state>.text</state>
+ </option>
+ <option>
+ <name>IInterwork2</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IProcessorMode2</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCOptLevel</name>
+ <state>3</state>
+ </option>
+ <option>
+ <name>CCOptStrategy</name>
+ <version>0</version>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCOptLevelSlave</name>
+ <state>3</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>AARM</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>7</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>AObjPrefix</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>AEndian</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>ACaseSensitivity</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>MacroChars</name>
+ <version>0</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AWarnEnable</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AWarnWhat</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AWarnOne</name>
+ <state></state>
+ </option>
+ <option>
+ <name>AWarnRange1</name>
+ <state></state>
+ </option>
+ <option>
+ <name>AWarnRange2</name>
+ <state></state>
+ </option>
+ <option>
+ <name>ADebug</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>AltRegisterNames</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>ADefines</name>
+ <state>ewarm</state>
+ </option>
+ <option>
+ <name>AList</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AListHeader</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>AListing</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>Includes</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>MacDefs</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>MacExps</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>MacExec</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OnlyAssed</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>MultiLine</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>PageLengthCheck</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>PageLength</name>
+ <state>80</state>
+ </option>
+ <option>
+ <name>TabSpacing</name>
+ <state>8</state>
+ </option>
+ <option>
+ <name>AXRef</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AXRefDefines</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AXRefInternal</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AXRefDual</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AProcessor</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>AFpuProcessor</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>AOutputFile</name>
+ <state>$FILE_BNAME$.o</state>
+ </option>
+ <option>
+ <name>AMultibyteSupport</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>ALimitErrorsCheck</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>ALimitErrorsEdit</name>
+ <state>100</state>
+ </option>
+ <option>
+ <name>AIgnoreStdInclude</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AStdIncludes</name>
+ <state>$TOOLKIT_DIR$\INC\</state>
+ </option>
+ <option>
+ <name>AUserIncludes</name>
+ <state>$PROJ_DIR$\..</state>
+ <state>$PROJ_DIR$\..\..\..</state>
+ <state>$PROJ_DIR$\..\..\ek-lm4f120xl</state>
+ </option>
+ <option>
+ <name>AExtraOptionsCheckV2</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AExtraOptionsV2</name>
+ <state></state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>OBJCOPY</name>
+ <archiveVersion>0</archiveVersion>
+ <data>
+ <version>1</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>OOCOutputFormat</name>
+ <version>1</version>
+ <state>2</state>
+ </option>
+ <option>
+ <name>OCOutputOverride</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OOCOutputFile</name>
+ <state>capsense.bin</state>
+ </option>
+ <option>
+ <name>OOCCommandLineProducer</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OOCObjCopyEnable</name>
+ <state>1</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>CUSTOM</name>
+ <archiveVersion>3</archiveVersion>
+ <data>
+ <extensions></extensions>
+ <cmdline></cmdline>
+ </data>
+ </settings>
+ <settings>
+ <name>BICOMP</name>
+ <archiveVersion>0</archiveVersion>
+ <data/>
+ </settings>
+ <settings>
+ <name>BUILDACTION</name>
+ <archiveVersion>1</archiveVersion>
+ <data>
+ <prebuild></prebuild>
+ <postbuild></postbuild>
+ </data>
+ </settings>
+ <settings>
+ <name>ILINK</name>
+ <archiveVersion>0</archiveVersion>
+ <data>
+ <version>5</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>IlinkLibIOConfig</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>XLinkMisraHandler</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkInputFileSlave</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkOutputFile</name>
+ <state>capsense.out</state>
+ </option>
+ <option>
+ <name>IlinkDebugInfoEnable</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IlinkKeepSymbols</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkRawBinaryFile</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkRawBinarySymbol</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkRawBinarySegment</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkRawBinaryAlign</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkDefines</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkConfigDefines</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkMapFile</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IlinkLogFile</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkLogInitialization</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkLogModule</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkLogSection</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkLogVeneer</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkIcfOverride</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IlinkIcfFile</name>
+ <state>$PROJ_DIR$\capsense.icf</state>
+ </option>
+ <option>
+ <name>IlinkIcfFileSlave</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkEnableRemarks</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkSuppressDiags</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkTreatAsRem</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkTreatAsWarn</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkTreatAsErr</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkWarningsAreErrors</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkUseExtraOptions</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkExtraOptions</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkLowLevelInterfaceSlave</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IlinkAutoLibEnable</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IlinkAdditionalLibs</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IlinkOverrideProgramEntryLabel</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IlinkProgramEntryLabelSelect</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkProgramEntryLabel</name>
+ <state>__iar_program_start</state>
+ </option>
+ <option>
+ <name>IlinkNXPLPCChecksum</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>DoFill</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>FillerByte</name>
+ <state>0xFF</state>
+ </option>
+ <option>
+ <name>FillerStart</name>
+ <state>0x0</state>
+ </option>
+ <option>
+ <name>FillerEnd</name>
+ <state>0x0</state>
+ </option>
+ <option>
+ <name>CrcSize</name>
+ <version>0</version>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CrcAlign</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CrcAlgo</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CrcPoly</name>
+ <state>0x11021</state>
+ </option>
+ <option>
+ <name>CrcCompl</name>
+ <version>0</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CrcBitOrder</name>
+ <version>0</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CrcInitialValue</name>
+ <state>0x0</state>
+ </option>
+ <option>
+ <name>DoCrc</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IlinkBE8Slave</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IlinkBufferedTerminalOutput</name>
+ <state>1</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>IARCHIVE</name>
+ <archiveVersion>0</archiveVersion>
+ <data>
+ <version>0</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>IarchiveInputs</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IarchiveOverride</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IarchiveOutput</name>
+ <state>###Unitialized###</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>BILINK</name>
+ <archiveVersion>0</archiveVersion>
+ <data/>
+ </settings>
+ </configuration>
+ <group>
+ <name>Libraries</name>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\driverlib\ewarm-cm4f\Exe\driverlib-cm4f.a</name>
+ </file>
+ </group>
+ <group>
+ <name>Source</name>
+ <file>
+ <name>$PROJ_DIR$\..\drivers\CTS_HAL.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\drivers\CTS_Layer.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\drivers\CTS_structure.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\ek-lm4f120xl\drivers\buttons.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\capsense.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\ek-lm4f120xl\drivers\rgb.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\startup_ewarm.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\utils\uartstdio.c</name>
+ </file>
+ </group>
+</project>
diff --git a/boards/ek-lm4f120xl-boost-capsense/capsense/capsense.icf b/boards/ek-lm4f120xl-boost-capsense/capsense/capsense.icf new file mode 100644 index 0000000..3b04759 --- /dev/null +++ b/boards/ek-lm4f120xl-boost-capsense/capsense/capsense.icf @@ -0,0 +1,78 @@ +//*****************************************************************************
+//
+// capsense.icf - Linker configuration file for capsense.
+//
+// Copyright (c) 2012 Texas Instruments Incorporated. All rights reserved.
+// Software License Agreement
+//
+// Texas Instruments (TI) is supplying this software for use solely and
+// exclusively on TI's microcontroller products. The software is owned by
+// TI and/or its suppliers, and is protected under applicable copyright
+// laws. You may not combine this software with "viral" open-source
+// software in order to form a larger program.
+//
+// THIS SOFTWARE IS PROVIDED "AS IS" AND WITH ALL FAULTS.
+// NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT
+// NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. TI SHALL NOT, UNDER ANY
+// CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR CONSEQUENTIAL
+// DAMAGES, FOR ANY REASON WHATSOEVER.
+//
+// This is part of revision 9453 of the EK-LM4F120XL Firmware Package.
+//
+//*****************************************************************************
+
+//
+// Define a memory region that covers the entire 4 GB addressible space of the
+// processor.
+//
+define memory mem with size = 4G;
+
+//
+// Define a region for the on-chip flash.
+//
+define region FLASH = mem:[from 0x00000000 to 0x0003ffff];
+
+//
+// Define a region for the on-chip SRAM.
+//
+define region SRAM = mem:[from 0x20000000 to 0x20007fff];
+
+//
+// Define a block for the heap. The size should be set to something other
+// than zero if things in the C library that require the heap are used.
+//
+define block HEAP with alignment = 8, size = 0x00000000 { };
+
+//
+// Indicate that the read/write values should be initialized by copying from
+// flash.
+//
+initialize by copy { readwrite };
+
+//
+// Indicate that the noinit values should be left alone. This includes the
+// stack, which if initialized will destroy the return address from the
+// initialization code, causing the processor to branch to zero and fault.
+//
+do not initialize { section .noinit };
+
+//
+// Place the interrupt vectors at the start of flash.
+//
+place at start of FLASH { readonly section .intvec };
+
+//
+// Place the remainder of the read-only items into flash.
+//
+place in FLASH { readonly };
+
+//
+// Place the RAM vector table at the start of SRAM.
+//
+place at start of SRAM { section VTABLE };
+
+//
+// Place all read/write items into SRAM.
+//
+place in SRAM { readwrite, block HEAP };
diff --git a/boards/ek-lm4f120xl-boost-capsense/capsense/capsense.ld b/boards/ek-lm4f120xl-boost-capsense/capsense/capsense.ld new file mode 100644 index 0000000..92a4331 --- /dev/null +++ b/boards/ek-lm4f120xl-boost-capsense/capsense/capsense.ld @@ -0,0 +1,57 @@ +/******************************************************************************
+ *
+ * capsense.ld - Linker configuration file for capsense.
+ *
+ * Copyright (c) 2012 Texas Instruments Incorporated. All rights reserved.
+ * Software License Agreement
+ *
+ * Texas Instruments (TI) is supplying this software for use solely and
+ * exclusively on TI's microcontroller products. The software is owned by
+ * TI and/or its suppliers, and is protected under applicable copyright
+ * laws. You may not combine this software with "viral" open-source
+ * software in order to form a larger program.
+ *
+ * THIS SOFTWARE IS PROVIDED "AS IS" AND WITH ALL FAULTS.
+ * NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT
+ * NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. TI SHALL NOT, UNDER ANY
+ * CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR CONSEQUENTIAL
+ * DAMAGES, FOR ANY REASON WHATSOEVER.
+ *
+ * This is part of revision 9453 of the EK-LM4F120XL Firmware Package.
+ *
+ *****************************************************************************/
+
+MEMORY
+{
+ FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 0x00040000
+ SRAM (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00008000
+}
+
+SECTIONS
+{
+ .text :
+ {
+ _text = .;
+ KEEP(*(.isr_vector))
+ *(.text*)
+ *(.rodata*)
+ _etext = .;
+ } > FLASH
+
+ .data : AT(ADDR(.text) + SIZEOF(.text))
+ {
+ _data = .;
+ *(vtable)
+ *(.data*)
+ _edata = .;
+ } > SRAM
+
+ .bss :
+ {
+ _bss = .;
+ *(.bss*)
+ *(COMMON)
+ _ebss = .;
+ } > SRAM
+}
diff --git a/boards/ek-lm4f120xl-boost-capsense/capsense/capsense.sct b/boards/ek-lm4f120xl-boost-capsense/capsense/capsense.sct new file mode 100644 index 0000000..8fddf54 --- /dev/null +++ b/boards/ek-lm4f120xl-boost-capsense/capsense/capsense.sct @@ -0,0 +1,47 @@ +;******************************************************************************
+;
+; capsense.sct - Linker configuration file for capsense.
+;
+; Copyright (c) 2012 Texas Instruments Incorporated. All rights reserved.
+; Software License Agreement
+;
+; Texas Instruments (TI) is supplying this software for use solely and
+; exclusively on TI's microcontroller products. The software is owned by
+; TI and/or its suppliers, and is protected under applicable copyright
+; laws. You may not combine this software with "viral" open-source
+; software in order to form a larger program.
+;
+; THIS SOFTWARE IS PROVIDED "AS IS" AND WITH ALL FAULTS.
+; NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT
+; NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+; A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. TI SHALL NOT, UNDER ANY
+; CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR CONSEQUENTIAL
+; DAMAGES, FOR ANY REASON WHATSOEVER.
+;
+; This is part of revision 9453 of the EK-LM4F120XL Firmware Package.
+;
+;******************************************************************************
+
+LR_IROM 0x00000000 0x00040000
+{
+ ;
+ ; Specify the Execution Address of the code and the size.
+ ;
+ ER_IROM 0x00000000 0x00040000
+ {
+ *.o (RESET, +First)
+ * (InRoot$$Sections, +RO)
+ }
+
+ ;
+ ; Specify the Execution Address of the data area.
+ ;
+ RW_IRAM 0x20000000 0x00008000
+ {
+ ;
+ ; Uncomment the following line in order to use IntRegister().
+ ;
+ ;* (vtable, +First)
+ * (+RW, +ZI)
+ }
+}
diff --git a/boards/ek-lm4f120xl-boost-capsense/capsense/capsense.sgxx b/boards/ek-lm4f120xl-boost-capsense/capsense/capsense.sgxx Binary files differnew file mode 100644 index 0000000..521ec38 --- /dev/null +++ b/boards/ek-lm4f120xl-boost-capsense/capsense/capsense.sgxx diff --git a/boards/ek-lm4f120xl-boost-capsense/capsense/capsense.uvopt b/boards/ek-lm4f120xl-boost-capsense/capsense/capsense.uvopt new file mode 100644 index 0000000..84ef7f4 --- /dev/null +++ b/boards/ek-lm4f120xl-boost-capsense/capsense/capsense.uvopt @@ -0,0 +1,373 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_opt.xsd">
+
+ <SchemaVersion>1.0</SchemaVersion>
+
+ <Header>### uVision Project, (C) Keil Software</Header>
+
+ <Extensions>
+ <cExt>*.c</cExt>
+ <aExt>*.s*; *.src; *.a*</aExt>
+ <oExt>*.obj</oExt>
+ <lExt>*.lib</lExt>
+ <tExt>*.txt; *.h; *.inc</tExt>
+ <pExt>*.plm</pExt>
+ <CppX>*.cpp</CppX>
+ </Extensions>
+
+ <DaveTm>
+ <dwLowDateTime>0</dwLowDateTime>
+ <dwHighDateTime>0</dwHighDateTime>
+ </DaveTm>
+
+ <Target>
+ <TargetName>capsense</TargetName>
+ <ToolsetNumber>0x4</ToolsetNumber>
+ <ToolsetName>ARM-ADS</ToolsetName>
+ <TargetOption>
+ <CLKADS>8000000</CLKADS>
+ <OPTTT>
+ <gFlags>1</gFlags>
+ <BeepAtEnd>1</BeepAtEnd>
+ <RunSim>1</RunSim>
+ <RunTarget>0</RunTarget>
+ </OPTTT>
+ <OPTHX>
+ <HexSelection>1</HexSelection>
+ <FlashByte>65535</FlashByte>
+ <HexRangeLowAddress>0</HexRangeLowAddress>
+ <HexRangeHighAddress>0</HexRangeHighAddress>
+ <HexOffset>0</HexOffset>
+ </OPTHX>
+ <OPTLEX>
+ <PageWidth>79</PageWidth>
+ <PageLength>66</PageLength>
+ <TabStop>8</TabStop>
+ <ListingPath>.\rvmdk\</ListingPath>
+ </OPTLEX>
+ <ListingPage>
+ <CreateCListing>1</CreateCListing>
+ <CreateAListing>1</CreateAListing>
+ <CreateLListing>1</CreateLListing>
+ <CreateIListing>0</CreateIListing>
+ <AsmCond>1</AsmCond>
+ <AsmSymb>1</AsmSymb>
+ <AsmXref>0</AsmXref>
+ <CCond>1</CCond>
+ <CCode>0</CCode>
+ <CListInc>0</CListInc>
+ <CSymb>0</CSymb>
+ <LinkerCodeListing>0</LinkerCodeListing>
+ </ListingPage>
+ <OPTXL>
+ <LMap>1</LMap>
+ <LComments>1</LComments>
+ <LGenerateSymbols>1</LGenerateSymbols>
+ <LLibSym>1</LLibSym>
+ <LLines>1</LLines>
+ <LLocSym>1</LLocSym>
+ <LPubSym>1</LPubSym>
+ <LXref>0</LXref>
+ <LExpSel>0</LExpSel>
+ </OPTXL>
+ <OPTFL>
+ <tvExp>1</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <IsCurrentTarget>1</IsCurrentTarget>
+ </OPTFL>
+ <CpuCode>255</CpuCode>
+ <Books>
+ <Book>
+ <Number>0</Number>
+ <Title>Data Sheet</Title>
+ <Path>DATASHTS\Luminary\LM4F120H5QR.PDF</Path>
+ </Book>
+ </Books>
+ <DllOpt>
+ <SimDllName>SARMCM3.DLL</SimDllName>
+ <SimDllArguments>-MPU</SimDllArguments>
+ <SimDlgDllName>DCM.DLL</SimDlgDllName>
+ <SimDlgDllArguments>-pCM4</SimDlgDllArguments>
+ <TargetDllName>SARMCM3.DLL</TargetDllName>
+ <TargetDllArguments>-MPU</TargetDllArguments>
+ <TargetDlgDllName>TCM.DLL</TargetDlgDllName>
+ <TargetDlgDllArguments>-pCM4</TargetDlgDllArguments>
+ </DllOpt>
+ <DebugOpt>
+ <uSim>0</uSim>
+ <uTrg>1</uTrg>
+ <sLdApp>1</sLdApp>
+ <sGomain>1</sGomain>
+ <sRbreak>1</sRbreak>
+ <sRwatch>1</sRwatch>
+ <sRmem>1</sRmem>
+ <sRfunc>1</sRfunc>
+ <sRbox>1</sRbox>
+ <tLdApp>1</tLdApp>
+ <tGomain>0</tGomain>
+ <tRbreak>1</tRbreak>
+ <tRwatch>1</tRwatch>
+ <tRmem>1</tRmem>
+ <tRfunc>0</tRfunc>
+ <tRbox>1</tRbox>
+ <sRunDeb>0</sRunDeb>
+ <sLrtime>0</sLrtime>
+ <nTsel>4</nTsel>
+ <sDll></sDll>
+ <sDllPa></sDllPa>
+ <sDlgDll></sDlgDll>
+ <sDlgPa></sDlgPa>
+ <sIfile></sIfile>
+ <tDll></tDll>
+ <tDllPa></tDllPa>
+ <tDlgDll></tDlgDll>
+ <tDlgPa></tDlgPa>
+ <tIfile></tIfile>
+ <pMon>BIN\lmidk-agdi.dll</pMon>
+ </DebugOpt>
+ <TargetDriverDllRegistry>
+ <SetRegEntry>
+ <Number>0</Number>
+ <Key>lmidk-agdi</Key>
+ <Name>-O4614 -S3 -FO29</Name>
+ </SetRegEntry>
+ <SetRegEntry>
+ <Number>0</Number>
+ <Key>DLGTARM</Key>
+ <Name></Name>
+ </SetRegEntry>
+ <SetRegEntry>
+ <Number>0</Number>
+ <Key>ARMDBGFLAGS</Key>
+ <Name></Name>
+ </SetRegEntry>
+ </TargetDriverDllRegistry>
+ <DebugFlag>
+ <trace>0</trace>
+ <periodic>1</periodic>
+ <aLwin>0</aLwin>
+ <aCover>0</aCover>
+ <aSer1>0</aSer1>
+ <aSer2>0</aSer2>
+ <aPa>0</aPa>
+ <viewmode>1</viewmode>
+ <vrSel>0</vrSel>
+ <aSym>0</aSym>
+ <aTbox>0</aTbox>
+ <AscS1>0</AscS1>
+ <AscS2>0</AscS2>
+ <AscS3>0</AscS3>
+ <aSer3>0</aSer3>
+ <eProf>0</eProf>
+ <aLa>0</aLa>
+ <aPa1>0</aPa1>
+ <AscS4>0</AscS4>
+ <aSer4>0</aSer4>
+ <StkLoc>0</StkLoc>
+ <TrcWin>0</TrcWin>
+ <newCpu>0</newCpu>
+ <uProt>0</uProt>
+ </DebugFlag>
+ <LintExecutable></LintExecutable>
+ <LintConfigFile></LintConfigFile>
+ </TargetOption>
+ </Target>
+
+ <Group>
+ <GroupName>Source</GroupName>
+ <tvExp>1</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <File>
+ <GroupNumber>1</GroupNumber>
+ <FileNumber>1</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\drivers\CTS_HAL.c</PathWithFileName>
+ <FilenameWithoutPath>CTS_HAL.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>1</GroupNumber>
+ <FileNumber>2</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\drivers\CTS_Layer.c</PathWithFileName>
+ <FilenameWithoutPath>CTS_Layer.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>1</GroupNumber>
+ <FileNumber>3</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\drivers\CTS_structure.c</PathWithFileName>
+ <FilenameWithoutPath>CTS_structure.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>1</GroupNumber>
+ <FileNumber>4</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\ek-lm4f120xl\drivers\buttons.c</PathWithFileName>
+ <FilenameWithoutPath>buttons.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>1</GroupNumber>
+ <FileNumber>5</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>.\capsense.c</PathWithFileName>
+ <FilenameWithoutPath>capsense.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>1</GroupNumber>
+ <FileNumber>6</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\ek-lm4f120xl\drivers\rgb.c</PathWithFileName>
+ <FilenameWithoutPath>rgb.c</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>1</GroupNumber>
+ <FileNumber>7</FileNumber>
+ <FileType>2</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>.\startup_rvmdk.S</PathWithFileName>
+ <FilenameWithoutPath>startup_rvmdk.S</FilenameWithoutPath>
+ </File>
+ <File>
+ <GroupNumber>1</GroupNumber>
+ <FileNumber>8</FileNumber>
+ <FileType>1</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\..\utils\uartstdio.c</PathWithFileName>
+ <FilenameWithoutPath>uartstdio.c</FilenameWithoutPath>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Libraries</GroupName>
+ <tvExp>1</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <File>
+ <GroupNumber>2</GroupNumber>
+ <FileNumber>9</FileNumber>
+ <FileType>4</FileType>
+ <tvExp>0</tvExp>
+ <Focus>0</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>0</TopLine>
+ <CurrentLine>0</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>..\..\..\driverlib\rvmdk-cm4f\driverlib-cm4f.lib</PathWithFileName>
+ <FilenameWithoutPath>driverlib-cm4f.lib</FilenameWithoutPath>
+ </File>
+ </Group>
+
+ <Group>
+ <GroupName>Documentation</GroupName>
+ <tvExp>1</tvExp>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <cbSel>0</cbSel>
+ <File>
+ <GroupNumber>3</GroupNumber>
+ <FileNumber>10</FileNumber>
+ <FileType>5</FileType>
+ <tvExp>0</tvExp>
+ <Focus>1</Focus>
+ <ColumnNumber>0</ColumnNumber>
+ <tvExpOptDlg>0</tvExpOptDlg>
+ <TopLine>1</TopLine>
+ <CurrentLine>1</CurrentLine>
+ <bDave2>0</bDave2>
+ <PathWithFileName>.\readme.txt</PathWithFileName>
+ <FilenameWithoutPath>readme.txt</FilenameWithoutPath>
+ <WindowPosition>
+ <length>44</length>
+ <flags>0</flags>
+ <showCmd>1</showCmd>
+ <MinPosition>
+ <xPos>-1</xPos>
+ <yPos>-1</yPos>
+ </MinPosition>
+ <MaxPosition>
+ <xPos>-1</xPos>
+ <yPos>-1</yPos>
+ </MaxPosition>
+ <NormalPosition>
+ <Top>0</Top>
+ <Left>0</Left>
+ <Right>729</Right>
+ <Bottom>300</Bottom>
+ </NormalPosition>
+ </WindowPosition>
+ </File>
+ </Group>
+
+ <MDIGroups>
+ <Orientation>1</Orientation>
+ <ActiveMDIGroup>0</ActiveMDIGroup>
+ <MDIGroup>
+ <Size>100</Size>
+ <ActiveTab>0</ActiveTab>
+ <Documents>
+ <Doc>
+ <Name>.\readme.txt</Name>
+ <ColumnNumber>0</ColumnNumber>
+ <TopLine>1</TopLine>
+ <CurrentLine>1</CurrentLine>
+ </Doc>
+ </Documents>
+ </MDIGroup>
+ </MDIGroups>
+
+</ProjectOpt>
diff --git a/boards/ek-lm4f120xl-boost-capsense/capsense/capsense.uvproj b/boards/ek-lm4f120xl-boost-capsense/capsense/capsense.uvproj new file mode 100644 index 0000000..ae7acde --- /dev/null +++ b/boards/ek-lm4f120xl-boost-capsense/capsense/capsense.uvproj @@ -0,0 +1,454 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_proj.xsd">
+
+ <SchemaVersion>1.1</SchemaVersion>
+
+ <Header>### uVision Project, (C) Keil Software</Header>
+
+ <Targets>
+ <Target>
+ <TargetName>capsense</TargetName>
+ <ToolsetNumber>0x4</ToolsetNumber>
+ <ToolsetName>ARM-ADS</ToolsetName>
+ <TargetOption>
+ <TargetCommonOption>
+ <Device>LM4F120H5QR</Device>
+ <Vendor>Texas Instruments</Vendor>
+ <Cpu>IRAM(0x20000000-0x20007FFF) IROM(0-0x3FFFF) CLOCK(8000000) CPUTYPE("Cortex-M4") FPU2</Cpu>
+ <FlashUtilSpec></FlashUtilSpec>
+ <StartupFile>"STARTUP\Luminary\Startup.s" ("Luminary Startup Code")</StartupFile>
+ <FlashDriverDll>UL2CM3(-O207 -S0 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0LM4F_256 -FS00 -FL040000)</FlashDriverDll>
+ <DeviceId>5919</DeviceId>
+ <RegisterFile>LM4Fxxxx.H</RegisterFile>
+ <MemoryEnv></MemoryEnv>
+ <Cmp></Cmp>
+ <Asm></Asm>
+ <Linker></Linker>
+ <OHString></OHString>
+ <InfinionOptionDll></InfinionOptionDll>
+ <SLE66CMisc></SLE66CMisc>
+ <SLE66AMisc></SLE66AMisc>
+ <SLE66LinkerMisc></SLE66LinkerMisc>
+ <UseEnv>0</UseEnv>
+ <BinPath></BinPath>
+ <IncludePath></IncludePath>
+ <LibPath></LibPath>
+ <RegisterFilePath>Luminary\</RegisterFilePath>
+ <DBRegisterFilePath>Luminary\</DBRegisterFilePath>
+ <TargetStatus>
+ <Error>0</Error>
+ <ExitCodeStop>0</ExitCodeStop>
+ <ButtonStop>0</ButtonStop>
+ <NotGenerated>0</NotGenerated>
+ <InvalidFlash>1</InvalidFlash>
+ </TargetStatus>
+ <OutputDirectory>.\rvmdk\</OutputDirectory>
+ <OutputName>capsense</OutputName>
+ <CreateExecutable>1</CreateExecutable>
+ <CreateLib>0</CreateLib>
+ <CreateHexFile>0</CreateHexFile>
+ <DebugInformation>1</DebugInformation>
+ <BrowseInformation>1</BrowseInformation>
+ <ListingPath>.\rvmdk\</ListingPath>
+ <HexFormatSelection>1</HexFormatSelection>
+ <Merge32K>0</Merge32K>
+ <CreateBatchFile>0</CreateBatchFile>
+ <BeforeCompile>
+ <RunUserProg1>0</RunUserProg1>
+ <RunUserProg2>0</RunUserProg2>
+ <UserProg1Name></UserProg1Name>
+ <UserProg2Name></UserProg2Name>
+ <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+ <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+ </BeforeCompile>
+ <BeforeMake>
+ <RunUserProg1>0</RunUserProg1>
+ <RunUserProg2>0</RunUserProg2>
+ <UserProg1Name></UserProg1Name>
+ <UserProg2Name></UserProg2Name>
+ <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+ <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+ </BeforeMake>
+ <AfterMake>
+ <RunUserProg1>1</RunUserProg1>
+ <RunUserProg2>0</RunUserProg2>
+ <UserProg1Name>fromelf --bin --output .\rvmdk\capsense.bin .\rvmdk\capsense.axf</UserProg1Name>
+ <UserProg2Name></UserProg2Name>
+ <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+ <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+ </AfterMake>
+ <SelectedForBatchBuild>0</SelectedForBatchBuild>
+ <SVCSIdString></SVCSIdString>
+ </TargetCommonOption>
+ <CommonProperty>
+ <UseCPPCompiler>0</UseCPPCompiler>
+ <RVCTCodeConst>0</RVCTCodeConst>
+ <RVCTZI>0</RVCTZI>
+ <RVCTOtherData>0</RVCTOtherData>
+ <ModuleSelection>0</ModuleSelection>
+ <IncludeInBuild>1</IncludeInBuild>
+ <AlwaysBuild>0</AlwaysBuild>
+ <GenerateAssemblyFile>0</GenerateAssemblyFile>
+ <AssembleAssemblyFile>0</AssembleAssemblyFile>
+ <PublicsOnly>0</PublicsOnly>
+ <StopOnExitCode>3</StopOnExitCode>
+ <CustomArgument></CustomArgument>
+ <IncludeLibraryModules></IncludeLibraryModules>
+ </CommonProperty>
+ <DllOption>
+ <SimDllName>SARMCM3.DLL</SimDllName>
+ <SimDllArguments>-MPU</SimDllArguments>
+ <SimDlgDll>DCM.DLL</SimDlgDll>
+ <SimDlgDllArguments>-pCM4</SimDlgDllArguments>
+ <TargetDllName>SARMCM3.DLL</TargetDllName>
+ <TargetDllArguments>-MPU</TargetDllArguments>
+ <TargetDlgDll>TCM.DLL</TargetDlgDll>
+ <TargetDlgDllArguments>-pCM4</TargetDlgDllArguments>
+ </DllOption>
+ <DebugOption>
+ <OPTHX>
+ <HexSelection>1</HexSelection>
+ <HexRangeLowAddress>0</HexRangeLowAddress>
+ <HexRangeHighAddress>0</HexRangeHighAddress>
+ <HexOffset>0</HexOffset>
+ <Oh166RecLen>16</Oh166RecLen>
+ </OPTHX>
+ <Simulator>
+ <UseSimulator>0</UseSimulator>
+ <LoadApplicationAtStartup>1</LoadApplicationAtStartup>
+ <RunToMain>1</RunToMain>
+ <RestoreBreakpoints>1</RestoreBreakpoints>
+ <RestoreWatchpoints>1</RestoreWatchpoints>
+ <RestoreMemoryDisplay>1</RestoreMemoryDisplay>
+ <RestoreFunctions>1</RestoreFunctions>
+ <RestoreToolbox>1</RestoreToolbox>
+ <LimitSpeedToRealTime>0</LimitSpeedToRealTime>
+ </Simulator>
+ <Target>
+ <UseTarget>1</UseTarget>
+ <LoadApplicationAtStartup>1</LoadApplicationAtStartup>
+ <RunToMain>0</RunToMain>
+ <RestoreBreakpoints>1</RestoreBreakpoints>
+ <RestoreWatchpoints>1</RestoreWatchpoints>
+ <RestoreMemoryDisplay>1</RestoreMemoryDisplay>
+ <RestoreFunctions>0</RestoreFunctions>
+ <RestoreToolbox>1</RestoreToolbox>
+ </Target>
+ <RunDebugAfterBuild>0</RunDebugAfterBuild>
+ <TargetSelection>4</TargetSelection>
+ <SimDlls>
+ <CpuDll></CpuDll>
+ <CpuDllArguments></CpuDllArguments>
+ <PeripheralDll></PeripheralDll>
+ <PeripheralDllArguments></PeripheralDllArguments>
+ <InitializationFile></InitializationFile>
+ </SimDlls>
+ <TargetDlls>
+ <CpuDll></CpuDll>
+ <CpuDllArguments></CpuDllArguments>
+ <PeripheralDll></PeripheralDll>
+ <PeripheralDllArguments></PeripheralDllArguments>
+ <InitializationFile></InitializationFile>
+ <Driver>BIN\lmidk-agdi.dll</Driver>
+ </TargetDlls>
+ </DebugOption>
+ <Utilities>
+ <Flash1>
+ <UseTargetDll>1</UseTargetDll>
+ <UseExternalTool>0</UseExternalTool>
+ <RunIndependent>0</RunIndependent>
+ <UpdateFlashBeforeDebugging>0</UpdateFlashBeforeDebugging>
+ <Capability>1</Capability>
+ <DriverSelection>4099</DriverSelection>
+ </Flash1>
+ <Flash2>BIN\lmidk-agdi.dll</Flash2>
+ <Flash3></Flash3>
+ <Flash4></Flash4>
+ </Utilities>
+ <TargetArmAds>
+ <ArmAdsMisc>
+ <GenerateListings>0</GenerateListings>
+ <asHll>1</asHll>
+ <asAsm>1</asAsm>
+ <asMacX>1</asMacX>
+ <asSyms>1</asSyms>
+ <asFals>1</asFals>
+ <asDbgD>1</asDbgD>
+ <asForm>1</asForm>
+ <ldLst>0</ldLst>
+ <ldmm>1</ldmm>
+ <ldXref>1</ldXref>
+ <BigEnd>0</BigEnd>
+ <AdsALst>0</AdsALst>
+ <AdsACrf>0</AdsACrf>
+ <AdsANop>0</AdsANop>
+ <AdsANot>0</AdsANot>
+ <AdsLLst>1</AdsLLst>
+ <AdsLmap>1</AdsLmap>
+ <AdsLcgr>1</AdsLcgr>
+ <AdsLsym>1</AdsLsym>
+ <AdsLszi>1</AdsLszi>
+ <AdsLtoi>1</AdsLtoi>
+ <AdsLsun>1</AdsLsun>
+ <AdsLven>1</AdsLven>
+ <AdsLsxf>1</AdsLsxf>
+ <RvctClst>0</RvctClst>
+ <GenPPlst>0</GenPPlst>
+ <AdsCpuType>"Cortex-M4"</AdsCpuType>
+ <RvctDeviceName></RvctDeviceName>
+ <mOS>0</mOS>
+ <uocRom>0</uocRom>
+ <uocRam>0</uocRam>
+ <hadIROM>1</hadIROM>
+ <hadIRAM>1</hadIRAM>
+ <hadXRAM>0</hadXRAM>
+ <uocXRam>0</uocXRam>
+ <RvdsVP>2</RvdsVP>
+ <hadIRAM2>0</hadIRAM2>
+ <hadIROM2>0</hadIROM2>
+ <StupSel>8</StupSel>
+ <useUlib>1</useUlib>
+ <EndSel>0</EndSel>
+ <uLtcg>0</uLtcg>
+ <RoSelD>3</RoSelD>
+ <RwSelD>3</RwSelD>
+ <CodeSel>0</CodeSel>
+ <OptFeed>0</OptFeed>
+ <NoZi1>0</NoZi1>
+ <NoZi2>0</NoZi2>
+ <NoZi3>0</NoZi3>
+ <NoZi4>0</NoZi4>
+ <NoZi5>0</NoZi5>
+ <Ro1Chk>0</Ro1Chk>
+ <Ro2Chk>0</Ro2Chk>
+ <Ro3Chk>0</Ro3Chk>
+ <Ir1Chk>1</Ir1Chk>
+ <Ir2Chk>0</Ir2Chk>
+ <Ra1Chk>0</Ra1Chk>
+ <Ra2Chk>0</Ra2Chk>
+ <Ra3Chk>0</Ra3Chk>
+ <Im1Chk>1</Im1Chk>
+ <Im2Chk>0</Im2Chk>
+ <OnChipMemories>
+ <Ocm1>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm1>
+ <Ocm2>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm2>
+ <Ocm3>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm3>
+ <Ocm4>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm4>
+ <Ocm5>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm5>
+ <Ocm6>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </Ocm6>
+ <IRAM>
+ <Type>0</Type>
+ <StartAddress>0x20000000</StartAddress>
+ <Size>0x8000</Size>
+ </IRAM>
+ <IROM>
+ <Type>1</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x40000</Size>
+ </IROM>
+ <XRAM>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </XRAM>
+ <OCR_RVCT1>
+ <Type>1</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </OCR_RVCT1>
+ <OCR_RVCT2>
+ <Type>1</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </OCR_RVCT2>
+ <OCR_RVCT3>
+ <Type>1</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </OCR_RVCT3>
+ <OCR_RVCT4>
+ <Type>1</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x40000</Size>
+ </OCR_RVCT4>
+ <OCR_RVCT5>
+ <Type>1</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </OCR_RVCT5>
+ <OCR_RVCT6>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </OCR_RVCT6>
+ <OCR_RVCT7>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </OCR_RVCT7>
+ <OCR_RVCT8>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </OCR_RVCT8>
+ <OCR_RVCT9>
+ <Type>0</Type>
+ <StartAddress>0x20000000</StartAddress>
+ <Size>0x8000</Size>
+ </OCR_RVCT9>
+ <OCR_RVCT10>
+ <Type>0</Type>
+ <StartAddress>0x0</StartAddress>
+ <Size>0x0</Size>
+ </OCR_RVCT10>
+ </OnChipMemories>
+ <RvctStartVector></RvctStartVector>
+ </ArmAdsMisc>
+ <Cads>
+ <interw>0</interw>
+ <Optim>3</Optim>
+ <oTime>0</oTime>
+ <SplitLS>0</SplitLS>
+ <OneElfS>1</OneElfS>
+ <Strict>0</Strict>
+ <EnumInt>0</EnumInt>
+ <PlainCh>0</PlainCh>
+ <Ropi>0</Ropi>
+ <Rwpi>0</Rwpi>
+ <wLevel>2</wLevel>
+ <uThumb>0</uThumb>
+ <VariousControls>
+ <MiscControls></MiscControls>
+ <Define>rvmdk PART_LM4F120H5QR TARGET_IS_BLIZZARD_RA1</Define>
+ <Undefine></Undefine>
+ <IncludePath>..;..\..\..;..\..\ek-lm4f120xl;</IncludePath>
+ </VariousControls>
+ </Cads>
+ <Aads>
+ <interw>1</interw>
+ <Ropi>0</Ropi>
+ <Rwpi>0</Rwpi>
+ <thumb>0</thumb>
+ <SplitLS>0</SplitLS>
+ <SwStkChk>0</SwStkChk>
+ <NoWarn>0</NoWarn>
+ <VariousControls>
+ <MiscControls></MiscControls>
+ <Define></Define>
+ <Undefine></Undefine>
+ <IncludePath></IncludePath>
+ </VariousControls>
+ </Aads>
+ <LDads>
+ <umfTarg>0</umfTarg>
+ <Ropi>0</Ropi>
+ <Rwpi>0</Rwpi>
+ <noStLib>0</noStLib>
+ <RepFail>1</RepFail>
+ <useFile>0</useFile>
+ <TextAddressRange>0x00000000</TextAddressRange>
+ <DataAddressRange>0x20000000</DataAddressRange>
+ <ScatterFile>capsense.sct</ScatterFile>
+ <IncludeLibs></IncludeLibs>
+ <IncludeLibsPath></IncludeLibsPath>
+ <Misc>--entry Reset_Handler</Misc>
+ <LinkerInputFile></LinkerInputFile>
+ <DisabledWarnings></DisabledWarnings>
+ </LDads>
+ </TargetArmAds>
+ </TargetOption>
+ <Groups>
+ <Group>
+ <GroupName>Source</GroupName>
+ <Files>
+ <File>
+ <FileName>CTS_HAL.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\drivers\CTS_HAL.c</FilePath>
+ </File>
+ <File>
+ <FileName>CTS_Layer.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\drivers\CTS_Layer.c</FilePath>
+ </File>
+ <File>
+ <FileName>CTS_structure.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\drivers\CTS_structure.c</FilePath>
+ </File>
+ <File>
+ <FileName>buttons.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\ek-lm4f120xl\drivers\buttons.c</FilePath>
+ </File>
+ <File>
+ <FileName>capsense.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>.\capsense.c</FilePath>
+ </File>
+ <File>
+ <FileName>rgb.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\ek-lm4f120xl\drivers\rgb.c</FilePath>
+ </File>
+ <File>
+ <FileName>startup_rvmdk.S</FileName>
+ <FileType>2</FileType>
+ <FilePath>.\startup_rvmdk.S</FilePath>
+ </File>
+ <File>
+ <FileName>uartstdio.c</FileName>
+ <FileType>1</FileType>
+ <FilePath>..\..\..\utils\uartstdio.c</FilePath>
+ </File>
+ </Files>
+ </Group>
+ <Group>
+ <GroupName>Libraries</GroupName>
+ <Files>
+ <File>
+ <FileName>driverlib-cm4f.lib</FileName>
+ <FileType>4</FileType>
+ <FilePath>..\..\..\driverlib\rvmdk-cm4f\driverlib-cm4f.lib</FilePath>
+ </File>
+ </Files>
+ </Group>
+ <Group>
+ <GroupName>Documentation</GroupName>
+ <Files>
+ <File>
+ <FileName>readme.txt</FileName>
+ <FileType>5</FileType>
+ <FilePath>.\readme.txt</FilePath>
+ </File>
+ </Files>
+ </Group>
+ </Groups>
+ </Target>
+ </Targets>
+
+</Project>
diff --git a/boards/ek-lm4f120xl-boost-capsense/capsense/capsense_ccs.cmd b/boards/ek-lm4f120xl-boost-capsense/capsense/capsense_ccs.cmd new file mode 100644 index 0000000..524b166 --- /dev/null +++ b/boards/ek-lm4f120xl-boost-capsense/capsense/capsense_ccs.cmd @@ -0,0 +1,70 @@ +/******************************************************************************
+ *
+ * capsense_ccs.cmd - CCS linker configuration file for capsense.
+ *
+ * Copyright (c) 2012 Texas Instruments Incorporated. All rights reserved.
+ * Software License Agreement
+ *
+ * Texas Instruments (TI) is supplying this software for use solely and
+ * exclusively on TI's microcontroller products. The software is owned by
+ * TI and/or its suppliers, and is protected under applicable copyright
+ * laws. You may not combine this software with "viral" open-source
+ * software in order to form a larger program.
+ *
+ * THIS SOFTWARE IS PROVIDED "AS IS" AND WITH ALL FAULTS.
+ * NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT
+ * NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. TI SHALL NOT, UNDER ANY
+ * CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR CONSEQUENTIAL
+ * DAMAGES, FOR ANY REASON WHATSOEVER.
+ *
+ * This is part of revision 9453 of the EK-LM4F120XL Firmware Package.
+ *
+ *****************************************************************************/
+
+--retain=g_pfnVectors
+
+/* The following command line options are set as part of the CCS project. */
+/* If you are building using the command line, or for some reason want to */
+/* define them here, you can uncomment and modify these lines as needed. */
+/* If you are using CCS for building, it is probably better to make any such */
+/* modifications in your CCS project and leave this file alone. */
+/* */
+/* --heap_size=0 */
+/* --stack_size=256 */
+/* --library=rtsv7M3_T_le_eabi.lib */
+
+/* The starting address of the application. Normally the interrupt vectors */
+/* must be located at the beginning of the application. */
+#define APP_BASE 0x00000000
+#define RAM_BASE 0x20000000
+
+/* System memory map */
+
+MEMORY
+{
+ /* Application stored in and executes from internal flash */
+ FLASH (RX) : origin = APP_BASE, length = 0x00040000
+ /* Application uses internal RAM for data */
+ SRAM (RWX) : origin = 0x20000000, length = 0x00008000
+}
+
+/* Section allocation in memory */
+
+SECTIONS
+{
+ .intvecs: > APP_BASE
+ .text : > FLASH
+ .const : > FLASH
+ .cinit : > FLASH
+ .pinit : > FLASH
+ .init_array : > FLASH
+
+ .vtable : > RAM_BASE
+ .data : > SRAM
+ .bss : > SRAM
+ .sysmem : > SRAM
+ .stack : > SRAM
+}
+
+__STACK_TOP = __stack + 512;
diff --git a/boards/ek-lm4f120xl-boost-capsense/capsense/capsense_sourcerygxx.ld b/boards/ek-lm4f120xl-boost-capsense/capsense/capsense_sourcerygxx.ld new file mode 100644 index 0000000..e17f412 --- /dev/null +++ b/boards/ek-lm4f120xl-boost-capsense/capsense/capsense_sourcerygxx.ld @@ -0,0 +1,31 @@ +/******************************************************************************
+ *
+ * capsense_sourcerygxx.ld - Scatter file for Sourcery CodeBench
+ *
+ * Copyright (c) 2012 Texas Instruments Incorporated. All rights reserved.
+ * Software License Agreement
+ *
+ * Texas Instruments (TI) is supplying this software for use solely and
+ * exclusively on TI's microcontroller products. The software is owned by
+ * TI and/or its suppliers, and is protected under applicable copyright
+ * laws. You may not combine this software with "viral" open-source
+ * software in order to form a larger program.
+ *
+ * THIS SOFTWARE IS PROVIDED "AS IS" AND WITH ALL FAULTS.
+ * NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT
+ * NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. TI SHALL NOT, UNDER ANY
+ * CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR CONSEQUENTIAL
+ * DAMAGES, FOR ANY REASON WHATSOEVER.
+ *
+ * This is part of revision 9453 of the EK-LM4F120XL Firmware Package.
+ *
+ *****************************************************************************/
+
+/******************************************************************************
+ *
+ * Define the end of the heap space, which determines the beginning of the
+ * stack space.
+ *
+ *****************************************************************************/
+__cs3_heap_end = __cs3_region_end_ram - 512;
diff --git a/boards/ek-lm4f120xl-boost-capsense/capsense/ccs/.ccsimportspec b/boards/ek-lm4f120xl-boost-capsense/capsense/ccs/.ccsimportspec new file mode 100644 index 0000000..fff5e0c --- /dev/null +++ b/boards/ek-lm4f120xl-boost-capsense/capsense/ccs/.ccsimportspec @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?>
+<importSpec>
+ <source root="..">
+ <file name="capsense.c"/>
+ <file regex=".*_ccs\.cmd"/>
+ <file name="startup_ccs.c"/>
+ </source>
+</importSpec>
diff --git a/boards/ek-lm4f120xl-boost-capsense/capsense/ccs/.ccsproject b/boards/ek-lm4f120xl-boost-capsense/capsense/ccs/.ccsproject new file mode 100644 index 0000000..56793f4 --- /dev/null +++ b/boards/ek-lm4f120xl-boost-capsense/capsense/ccs/.ccsproject @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?ccsproject version="1.0"?>
+
+<projectOptions>
+<deviceVariant value="Cortex M.LM4F120H5QR"/>
+<deviceFamily value="TMS470"/>
+<deviceEndianness value="little"/>
+<codegenToolVersion value="4.9.5"/>
+<isElfFormat value="true"/>
+<connection value=""/>
+<rts value="libc.a"/>
+</projectOptions>
diff --git a/boards/ek-lm4f120xl-boost-capsense/capsense/ccs/.cproject b/boards/ek-lm4f120xl-boost-capsense/capsense/ccs/.cproject new file mode 100644 index 0000000..c13272a --- /dev/null +++ b/boards/ek-lm4f120xl-boost-capsense/capsense/ccs/.cproject @@ -0,0 +1,195 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?fileVersion 4.0.0?>
+
+<cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
+ <storageModule moduleId="org.eclipse.cdt.core.settings">
+ <cconfiguration id="com.ti.ccstudio.buildDefinitions.TMS470.Debug.1194642630">
+ <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.ti.ccstudio.buildDefinitions.TMS470.Debug.1194642630" moduleId="org.eclipse.cdt.core.settings" name="Debug">
+ <macros>
+ <stringMacro name="SW_ROOT" type="VALUE_PATH_DIR" value="${PROJECT_ROOT}/../../../.."/>
+ </macros>
+ <externalSettings/>
+ <extensions>
+ <extension id="com.ti.ccstudio.binaryparser.CoffParser" point="org.eclipse.cdt.core.BinaryParser"/>
+ <extension id="com.ti.ccstudio.errorparser.CoffErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+ <extension id="com.ti.ccstudio.errorparser.LinkErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+ <extension id="com.ti.ccstudio.errorparser.AsmErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+ </extensions>
+ </storageModule>
+ <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+ <configuration artifactExtension="out" artifactName="${ProjName}" buildProperties="" cleanCommand="${CG_CLEAN_CMD}" description="" id="com.ti.ccstudio.buildDefinitions.TMS470.Debug.1194642630" name="Debug" parent="com.ti.ccstudio.buildDefinitions.TMS470.Debug" postbuildStep=""${CCE_INSTALL_ROOT}/utils/tiobj2bin/tiobj2bin" "${BuildArtifactFileName}" "${BuildArtifactFileBaseName}.bin" "${CG_TOOL_ROOT}/bin/ofd470" "${CG_TOOL_ROOT}/bin/hex470" "${CCE_INSTALL_ROOT}/utils/tiobj2bin/mkhex4bin"">
+ <folderInfo id="com.ti.ccstudio.buildDefinitions.TMS470.Debug.1194642630." name="/" resourcePath="">
+ <toolChain id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.exe.DebugToolchain.1206177089" name="TI Build Tools" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.exe.DebugToolchain" targetTool="com.ti.ccstudio.buildDefinitions.TMS470_4.9.exe.linkerDebug.395230846">
+ <option id="com.ti.ccstudio.buildDefinitions.core.OPT_TAGS.423163806" superClass="com.ti.ccstudio.buildDefinitions.core.OPT_TAGS" valueType="stringList">
+ <listOptionValue builtIn="false" value="DEVICE_CONFIGURATION_ID=Cortex M.LM4F120H5QR"/>
+ <listOptionValue builtIn="false" value="DEVICE_ENDIANNESS=little"/>
+ <listOptionValue builtIn="false" value="OUTPUT_FORMAT=ELF"/>
+ <listOptionValue builtIn="false" value="CCS_MBS_VERSION=5.1.0.01"/>
+ <listOptionValue builtIn="false" value="RUNTIME_SUPPORT_LIBRARY=libc.a"/>
+ <listOptionValue builtIn="false" value="OUTPUT_TYPE=executable"/>
+ </option>
+ <option id="com.ti.ccstudio.buildDefinitions.core.OPT_CODEGEN_VERSION.812771816" superClass="com.ti.ccstudio.buildDefinitions.core.OPT_CODEGEN_VERSION" value="4.9.5" valueType="string"/>
+ <targetPlatform id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.exe.targetPlatformDebug.127347770" name="Platform" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.exe.targetPlatformDebug"/>
+ <builder buildPath="${BuildDirectory}" id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.exe.builderDebug.693317726" name="GNU Make.Debug" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.exe.builderDebug"/>
+ <tool id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.exe.compilerDebug.850873823" name="ARM Compiler" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.exe.compilerDebug">
+ <option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.SILICON_VERSION.1636306183" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.SILICON_VERSION" value="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.SILICON_VERSION.7M4" valueType="enumerated"/>
+ <option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.CODE_STATE.1447833703" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.CODE_STATE" value="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.CODE_STATE.16" valueType="enumerated"/>
+ <option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.ABI.1413528604" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.ABI" value="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.ABI.eabi" valueType="enumerated"/>
+ <option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.FLOAT_SUPPORT.1685164935" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.FLOAT_SUPPORT" value="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.FLOAT_SUPPORT.FPv4SPD16" valueType="enumerated"/>
+ <option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.DEBUGGING_MODEL.1978498262" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.DEBUGGING_MODEL" value="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.DEBUGGING_MODEL.SYMDEBUG__DWARF" valueType="enumerated"/>
+ <option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.DIAG_WARNING.576199569" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.DIAG_WARNING" valueType="stringList">
+ <listOptionValue builtIn="false" value="225"/>
+ </option>
+ <option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.DISPLAY_ERROR_NUMBER.226929457" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.DISPLAY_ERROR_NUMBER" value="true" valueType="boolean"/>
+ <option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.INCLUDE_PATH.803750473" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.INCLUDE_PATH" valueType="includePath">
+ <listOptionValue builtIn="false" value=""${CG_TOOL_ROOT}/include""/>
+ <listOptionValue builtIn="false" value=""${SW_ROOT}/boards/ek-lm4f120xl-boost-capsense""/>
+ <listOptionValue builtIn="false" value=""${SW_ROOT}/boards/ek-lm4f120xl""/>
+ <listOptionValue builtIn="false" value=""${SW_ROOT}""/>
+ </option>
+ <option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.LITTLE_ENDIAN.796887261" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.LITTLE_ENDIAN" value="true" valueType="boolean"/>
+ <option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.GEN_FUNC_SUBSECTIONS.1979085191" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.GEN_FUNC_SUBSECTIONS" value="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.GEN_FUNC_SUBSECTIONS.on" valueType="enumerated"/>
+ <option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.OPT_LEVEL.1635306946" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.OPT_LEVEL" value="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.OPT_LEVEL.2" valueType="enumerated"/>
+ <option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.GCC.657416212" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.GCC" value="true" valueType="boolean"/>
+ <option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.UAL.1839442062" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.UAL" value="true" valueType="boolean"/>
+ <option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.DEFINE.818466728" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.DEFINE" valueType="definedSymbols">
+ <listOptionValue builtIn="false" value="ccs="ccs""/>
+ <listOptionValue builtIn="false" value="PART_LM4F120H5QR"/>
+ <listOptionValue builtIn="false" value="TARGET_IS_BLIZZARD_RA1"/>
+ </option>
+ <inputType id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compiler.inputType__C_SRCS.1383661125" name="C Sources" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compiler.inputType__C_SRCS"/>
+ <inputType id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compiler.inputType__CPP_SRCS.921118246" name="C++ Sources" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compiler.inputType__CPP_SRCS"/>
+ <inputType id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compiler.inputType__ASM_SRCS.1897142201" name="Assembly Sources" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compiler.inputType__ASM_SRCS"/>
+ <inputType id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compiler.inputType__ASM2_SRCS.1107700864" name="Assembly Sources" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compiler.inputType__ASM2_SRCS"/>
+ </tool>
+ <tool id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.exe.linkerDebug.395230846" name="ARM Linker" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.exe.linkerDebug">
+ <option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.linkerID.MAP_FILE.2066123583" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.linkerID.MAP_FILE" value=""capsense_ccs.map"" valueType="string"/>
+ <option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.linkerID.STACK_SIZE.803154768" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.linkerID.STACK_SIZE" value="512" valueType="string"/>
+ <option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.linkerID.HEAP_SIZE.1826823080" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.linkerID.HEAP_SIZE" value="0" valueType="string"/>
+ <option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.linkerID.OUTPUT_FILE.47225234" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.linkerID.OUTPUT_FILE" value=""${ProjName}.out"" valueType="string"/>
+ <option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.linkerID.DISPLAY_ERROR_NUMBER.275676127" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.linkerID.DISPLAY_ERROR_NUMBER" value="true" valueType="boolean"/>
+ <option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.linkerID.SEARCH_PATH.73018227" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.linkerID.SEARCH_PATH" valueType="stringList">
+ <listOptionValue builtIn="false" value=""${CG_TOOL_ROOT}/lib""/>
+ <listOptionValue builtIn="false" value=""${CG_TOOL_ROOT}/include""/>
+ </option>
+ <option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.linkerID.LIBRARY.569226314" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.linkerID.LIBRARY" valueType="libs">
+ <listOptionValue builtIn="false" value=""libc.a""/>
+ <listOptionValue builtIn="false" value=""${SW_ROOT}/driverlib/ccs-cm4f/Debug/driverlib-cm4f.lib""/>
+ </option>
+ </tool>
+ </toolChain>
+ </folderInfo>
+ </configuration>
+ </storageModule>
+ <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+ </cconfiguration>
+ <cconfiguration id="com.ti.ccstudio.buildDefinitions.TMS470.Release.881955297">
+ <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.ti.ccstudio.buildDefinitions.TMS470.Release.881955297" moduleId="org.eclipse.cdt.core.settings" name="Release">
+ <macros>
+ <stringMacro name="SW_ROOT" type="VALUE_PATH_DIR" value="${PROJECT_ROOT}/../../../.."/>
+ </macros>
+ <externalSettings/>
+ <extensions>
+ <extension id="com.ti.ccstudio.binaryparser.CoffParser" point="org.eclipse.cdt.core.BinaryParser"/>
+ <extension id="com.ti.ccstudio.errorparser.CoffErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+ <extension id="com.ti.ccstudio.errorparser.LinkErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+ <extension id="com.ti.ccstudio.errorparser.AsmErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+ </extensions>
+ </storageModule>
+ <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+ <configuration artifactExtension="out" artifactName="${ProjName}" buildProperties="" cleanCommand="${CG_CLEAN_CMD}" description="" id="com.ti.ccstudio.buildDefinitions.TMS470.Release.881955297" name="Release" parent="com.ti.ccstudio.buildDefinitions.TMS470.Release" postbuildStep=""${CCE_INSTALL_ROOT}/utils/tiobj2bin/tiobj2bin" "${BuildArtifactFileName}" "${BuildArtifactFileBaseName}.bin" "${CG_TOOL_ROOT}/bin/ofd470" "${CG_TOOL_ROOT}/bin/hex470" "${CCE_INSTALL_ROOT}/utils/tiobj2bin/mkhex4bin"">
+ <folderInfo id="com.ti.ccstudio.buildDefinitions.TMS470.Release.881955297." name="/" resourcePath="">
+ <toolChain id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.exe.ReleaseToolchain.2126880378" name="TI Build Tools" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.exe.ReleaseToolchain" targetTool="com.ti.ccstudio.buildDefinitions.TMS470_4.9.exe.linkerRelease.2083731359">
+ <option id="com.ti.ccstudio.buildDefinitions.core.OPT_TAGS.1461145266" superClass="com.ti.ccstudio.buildDefinitions.core.OPT_TAGS" valueType="stringList">
+ <listOptionValue builtIn="false" value="DEVICE_CONFIGURATION_ID=Cortex M.LM4F120H5QR"/>
+ <listOptionValue builtIn="false" value="DEVICE_ENDIANNESS=little"/>
+ <listOptionValue builtIn="false" value="OUTPUT_FORMAT=ELF"/>
+ <listOptionValue builtIn="false" value="CCS_MBS_VERSION=5.1.0.01"/>
+ <listOptionValue builtIn="false" value="RUNTIME_SUPPORT_LIBRARY=libc.a"/>
+ <listOptionValue builtIn="false" value="OUTPUT_TYPE=executable"/>
+ </option>
+ <option id="com.ti.ccstudio.buildDefinitions.core.OPT_CODEGEN_VERSION.1195450333" superClass="com.ti.ccstudio.buildDefinitions.core.OPT_CODEGEN_VERSION" value="4.9.5" valueType="string"/>
+ <targetPlatform id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.exe.targetPlatformRelease.1345877511" name="Platform" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.exe.targetPlatformRelease"/>
+ <builder buildPath="${BuildDirectory}" id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.exe.builderRelease.1079437699" name="GNU Make.Release" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.exe.builderRelease"/>
+ <tool id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.exe.compilerRelease.1023013833" name="ARM Compiler" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.exe.compilerRelease">
+ <option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.SILICON_VERSION.225081772" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.SILICON_VERSION" value="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.SILICON_VERSION.7M4" valueType="enumerated"/>
+ <option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.CODE_STATE.772838336" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.CODE_STATE" value="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.CODE_STATE.16" valueType="enumerated"/>
+ <option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.ABI.1561383575" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.ABI" value="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.ABI.eabi" valueType="enumerated"/>
+ <option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.FLOAT_SUPPORT.1229343451" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.FLOAT_SUPPORT" value="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.FLOAT_SUPPORT.FPv4SPD16" valueType="enumerated"/>
+ <option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.DIAG_WARNING.2102946483" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.DIAG_WARNING" valueType="stringList">
+ <listOptionValue builtIn="false" value="225"/>
+ </option>
+ <option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.DISPLAY_ERROR_NUMBER.1060812389" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.DISPLAY_ERROR_NUMBER" value="true" valueType="boolean"/>
+ <option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.INCLUDE_PATH.1549174008" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.INCLUDE_PATH" valueType="includePath">
+ <listOptionValue builtIn="false" value=""${CG_TOOL_ROOT}/include""/>
+ <listOptionValue builtIn="false" value=""${SW_ROOT}/boards/ek-lm4f120xl-boost-capsense""/>
+ <listOptionValue builtIn="false" value=""${SW_ROOT}/boards/ek-lm4f120xl""/>
+ <listOptionValue builtIn="false" value=""${SW_ROOT}""/>
+ </option>
+ <option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.LITTLE_ENDIAN.1952912923" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.LITTLE_ENDIAN" value="true" valueType="boolean"/>
+ <option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.GEN_FUNC_SUBSECTIONS.1337576143" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.GEN_FUNC_SUBSECTIONS" value="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.GEN_FUNC_SUBSECTIONS.on" valueType="enumerated"/>
+ <option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.GCC.468236393" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.GCC" value="true" valueType="boolean"/>
+ <option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.UAL.371933902" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.UAL" value="true" valueType="boolean"/>
+ <option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.DEFINE.1649127727" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compilerID.DEFINE" valueType="definedSymbols">
+ <listOptionValue builtIn="false" value="ccs="ccs""/>
+ <listOptionValue builtIn="false" value="PART_LM4F120H5QR"/>
+ <listOptionValue builtIn="false" value="TARGET_IS_BLIZZARD_RA1"/>
+ </option>
+ <inputType id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compiler.inputType__C_SRCS.74709025" name="C Sources" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compiler.inputType__C_SRCS"/>
+ <inputType id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compiler.inputType__CPP_SRCS.1298486553" name="C++ Sources" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compiler.inputType__CPP_SRCS"/>
+ <inputType id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compiler.inputType__ASM_SRCS.907698408" name="Assembly Sources" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compiler.inputType__ASM_SRCS"/>
+ <inputType id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compiler.inputType__ASM2_SRCS.678076194" name="Assembly Sources" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.compiler.inputType__ASM2_SRCS"/>
+ </tool>
+ <tool id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.exe.linkerRelease.2083731359" name="ARM Linker" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.exe.linkerRelease">
+ <option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.linkerID.MAP_FILE.706488951" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.linkerID.MAP_FILE" value=""capsense_ccs.map"" valueType="string"/>
+ <option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.linkerID.STACK_SIZE.30729503" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.linkerID.STACK_SIZE" value="512" valueType="string"/>
+ <option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.linkerID.HEAP_SIZE.1190956043" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.linkerID.HEAP_SIZE" value="0" valueType="string"/>
+ <option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.linkerID.OUTPUT_FILE.1686690221" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.linkerID.OUTPUT_FILE" value=""${ProjName}.out"" valueType="string"/>
+ <option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.linkerID.DISPLAY_ERROR_NUMBER.808898602" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.linkerID.DISPLAY_ERROR_NUMBER" value="true" valueType="boolean"/>
+ <option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.linkerID.SEARCH_PATH.484148934" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.linkerID.SEARCH_PATH" valueType="stringList">
+ <listOptionValue builtIn="false" value=""${CG_TOOL_ROOT}/lib""/>
+ <listOptionValue builtIn="false" value=""${CG_TOOL_ROOT}/include""/>
+ </option>
+ <option id="com.ti.ccstudio.buildDefinitions.TMS470_4.9.linkerID.LIBRARY.2055857863" superClass="com.ti.ccstudio.buildDefinitions.TMS470_4.9.linkerID.LIBRARY" valueType="libs">
+ <listOptionValue builtIn="false" value=""libc.a""/>
+ <listOptionValue builtIn="false" value=""${SW_ROOT}/driverlib/ccs-cm4f/Debug/driverlib-cm4f.lib""/>
+ </option>
+ </tool>
+ </toolChain>
+ </folderInfo>
+ </configuration>
+ </storageModule>
+ <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+ </cconfiguration>
+ </storageModule>
+ <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+ <project id="capsense.com.ti.ccstudio.buildDefinitions.TMS470.ProjectType.1645583252" name="ARM" projectType="com.ti.ccstudio.buildDefinitions.TMS470.ProjectType"/>
+ </storageModule>
+ <storageModule moduleId="scannerConfiguration">
+ <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+ <scannerConfigBuildInfo instanceId="com.ti.ccstudio.buildDefinitions.TMS470.Debug.1194642630;com.ti.ccstudio.buildDefinitions.TMS470.Debug.1194642630.;com.ti.ccstudio.buildDefinitions.TMS470_4.9.exe.compilerDebug.850873823;com.ti.ccstudio.buildDefinitions.TMS470_4.9.compiler.inputType__ASM_SRCS.1897142201">
+ <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.ti.ccstudio.project.core.CCSScannerDiscoveryProfile"/>
+ </scannerConfigBuildInfo>
+ <scannerConfigBuildInfo instanceId="com.ti.ccstudio.buildDefinitions.TMS470.Release.881955297;com.ti.ccstudio.buildDefinitions.TMS470.Release.881955297.;com.ti.ccstudio.buildDefinitions.TMS470_4.9.exe.compilerRelease.1023013833;com.ti.ccstudio.buildDefinitions.TMS470_4.9.compiler.inputType__ASM2_SRCS.678076194">
+ <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.ti.ccstudio.project.core.CCSScannerDiscoveryProfile"/>
+ </scannerConfigBuildInfo>
+ <scannerConfigBuildInfo instanceId="com.ti.ccstudio.buildDefinitions.TMS470.Debug.1194642630;com.ti.ccstudio.buildDefinitions.TMS470.Debug.1194642630.;com.ti.ccstudio.buildDefinitions.TMS470_4.9.exe.compilerDebug.850873823;com.ti.ccstudio.buildDefinitions.TMS470_4.9.compiler.inputType__C_SRCS.1383661125">
+ <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.ti.ccstudio.project.core.CCSScannerDiscoveryProfile"/>
+ </scannerConfigBuildInfo>
+ <scannerConfigBuildInfo instanceId="com.ti.ccstudio.buildDefinitions.TMS470.Debug.1194642630;com.ti.ccstudio.buildDefinitions.TMS470.Debug.1194642630.;com.ti.ccstudio.buildDefinitions.TMS470_4.9.exe.compilerDebug.850873823;com.ti.ccstudio.buildDefinitions.TMS470_4.9.compiler.inputType__ASM2_SRCS.1107700864">
+ <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.ti.ccstudio.project.core.CCSScannerDiscoveryProfile"/>
+ </scannerConfigBuildInfo>
+ <scannerConfigBuildInfo instanceId="com.ti.ccstudio.buildDefinitions.TMS470.Debug.1194642630;com.ti.ccstudio.buildDefinitions.TMS470.Debug.1194642630.;com.ti.ccstudio.buildDefinitions.TMS470_4.9.exe.compilerDebug.850873823;com.ti.ccstudio.buildDefinitions.TMS470_4.9.compiler.inputType__CPP_SRCS.921118246">
+ <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.ti.ccstudio.project.core.CCSScannerDiscoveryProfile"/>
+ </scannerConfigBuildInfo>
+ <scannerConfigBuildInfo instanceId="com.ti.ccstudio.buildDefinitions.TMS470.Release.881955297;com.ti.ccstudio.buildDefinitions.TMS470.Release.881955297.;com.ti.ccstudio.buildDefinitions.TMS470_4.9.exe.compilerRelease.1023013833;com.ti.ccstudio.buildDefinitions.TMS470_4.9.compiler.inputType__ASM_SRCS.907698408">
+ <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.ti.ccstudio.project.core.CCSScannerDiscoveryProfile"/>
+ </scannerConfigBuildInfo>
+ <scannerConfigBuildInfo instanceId="com.ti.ccstudio.buildDefinitions.TMS470.Release.881955297;com.ti.ccstudio.buildDefinitions.TMS470.Release.881955297.;com.ti.ccstudio.buildDefinitions.TMS470_4.9.exe.compilerRelease.1023013833;com.ti.ccstudio.buildDefinitions.TMS470_4.9.compiler.inputType__CPP_SRCS.1298486553">
+ <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.ti.ccstudio.project.core.CCSScannerDiscoveryProfile"/>
+ </scannerConfigBuildInfo>
+ <scannerConfigBuildInfo instanceId="com.ti.ccstudio.buildDefinitions.TMS470.Release.881955297;com.ti.ccstudio.buildDefinitions.TMS470.Release.881955297.;com.ti.ccstudio.buildDefinitions.TMS470_4.9.exe.compilerRelease.1023013833;com.ti.ccstudio.buildDefinitions.TMS470_4.9.compiler.inputType__C_SRCS.74709025">
+ <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.ti.ccstudio.project.core.CCSScannerDiscoveryProfile"/>
+ </scannerConfigBuildInfo>
+ </storageModule>
+</cproject>
diff --git a/boards/ek-lm4f120xl-boost-capsense/capsense/ccs/.project b/boards/ek-lm4f120xl-boost-capsense/capsense/ccs/.project new file mode 100644 index 0000000..55a238f --- /dev/null +++ b/boards/ek-lm4f120xl-boost-capsense/capsense/ccs/.project @@ -0,0 +1,136 @@ +<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>capsense</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
+ <arguments>
+ <dictionary>
+ <key>?name?</key>
+ <value></value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.append_environment</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.autoBuildTarget</key>
+ <value>all</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.buildArguments</key>
+ <value>-k</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.buildCommand</key>
+ <value>${CCS_UTILS_DIR}/bin/gmake</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.buildLocation</key>
+ <value>${BuildDirectory}</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.cleanBuildTarget</key>
+ <value>clean</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.contents</key>
+ <value>org.eclipse.cdt.make.core.activeConfigSettings</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.enableAutoBuild</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.enableCleanBuild</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.enableFullBuild</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.fullBuildTarget</key>
+ <value>all</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.stopOnError</key>
+ <value>false</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.useDefaultBuildCmd</key>
+ <value>true</value>
+ </dictionary>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
+ <triggers>full,incremental,</triggers>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>com.ti.ccstudio.core.ccsNature</nature>
+ <nature>org.eclipse.cdt.core.cnature</nature>
+ <nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
+ <nature>org.eclipse.cdt.core.ccnature</nature>
+ <nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
+ </natures>
+ <linkedResources>
+ <link>
+ <name>capsense.c</name>
+ <type>1</type>
+ <locationURI>SW_ROOT/boards/ek-lm4f120xl-boost-capsense/capsense/capsense.c</locationURI>
+ </link>
+ <link>
+ <name>capsense_ccs.cmd</name>
+ <type>1</type>
+ <locationURI>SW_ROOT/boards/ek-lm4f120xl-boost-capsense/capsense/capsense_ccs.cmd</locationURI>
+ </link>
+ <link>
+ <name>startup_ccs.c</name>
+ <type>1</type>
+ <locationURI>SW_ROOT/boards/ek-lm4f120xl-boost-capsense/capsense/startup_ccs.c</locationURI>
+ </link>
+ <link>
+ <name>drivers/CTS_HAL.c</name>
+ <type>1</type>
+ <locationURI>SW_ROOT/boards/ek-lm4f120xl-boost-capsense/drivers/CTS_HAL.c</locationURI>
+ </link>
+ <link>
+ <name>drivers/CTS_Layer.c</name>
+ <type>1</type>
+ <locationURI>SW_ROOT/boards/ek-lm4f120xl-boost-capsense/drivers/CTS_Layer.c</locationURI>
+ </link>
+ <link>
+ <name>drivers/CTS_structure.c</name>
+ <type>1</type>
+ <locationURI>SW_ROOT/boards/ek-lm4f120xl-boost-capsense/drivers/CTS_structure.c</locationURI>
+ </link>
+ <link>
+ <name>utils/uartstdio.c</name>
+ <type>1</type>
+ <locationURI>SW_ROOT/utils/uartstdio.c</locationURI>
+ </link>
+ <link>
+ <name>ek-lm4f120xl/drivers/buttons.c</name>
+ <type>1</type>
+ <locationURI>SW_ROOT/boards/ek-lm4f120xl/drivers/buttons.c</locationURI>
+ </link>
+ <link>
+ <name>ek-lm4f120xl/drivers/rgb.c</name>
+ <type>1</type>
+ <locationURI>SW_ROOT/boards/ek-lm4f120xl/drivers/rgb.c</locationURI>
+ </link>
+ </linkedResources>
+ <variableList>
+ <variable>
+ <name>SW_ROOT</name>
+ <value>$%7BPARENT-4-PROJECT_LOC%7D</value>
+ </variable>
+ </variableList>
+</projectDescription>
diff --git a/boards/ek-lm4f120xl-boost-capsense/capsense/ccs/.settings/org.eclipse.cdt.codan.core.prefs b/boards/ek-lm4f120xl-boost-capsense/capsense/ccs/.settings/org.eclipse.cdt.codan.core.prefs new file mode 100644 index 0000000..98b6350 --- /dev/null +++ b/boards/ek-lm4f120xl-boost-capsense/capsense/ccs/.settings/org.eclipse.cdt.codan.core.prefs @@ -0,0 +1,3 @@ +eclipse.preferences.version=1
+inEditor=false
+onBuild=false
diff --git a/boards/ek-lm4f120xl-boost-capsense/capsense/ccs/Debug/capsense.bin b/boards/ek-lm4f120xl-boost-capsense/capsense/ccs/Debug/capsense.bin Binary files differnew file mode 100644 index 0000000..8a87e1b --- /dev/null +++ b/boards/ek-lm4f120xl-boost-capsense/capsense/ccs/Debug/capsense.bin diff --git a/boards/ek-lm4f120xl-boost-capsense/capsense/ccs/Debug/capsense.out b/boards/ek-lm4f120xl-boost-capsense/capsense/ccs/Debug/capsense.out Binary files differnew file mode 100644 index 0000000..30334bd --- /dev/null +++ b/boards/ek-lm4f120xl-boost-capsense/capsense/ccs/Debug/capsense.out diff --git a/boards/ek-lm4f120xl-boost-capsense/capsense/ccs/macros.ini_initial b/boards/ek-lm4f120xl-boost-capsense/capsense/ccs/macros.ini_initial new file mode 100644 index 0000000..588017d --- /dev/null +++ b/boards/ek-lm4f120xl-boost-capsense/capsense/ccs/macros.ini_initial @@ -0,0 +1 @@ +SW_ROOT = ../../../..
diff --git a/boards/ek-lm4f120xl-boost-capsense/capsense/ccs/target_config.ccxml b/boards/ek-lm4f120xl-boost-capsense/capsense/ccs/target_config.ccxml new file mode 100644 index 0000000..469eea0 --- /dev/null +++ b/boards/ek-lm4f120xl-boost-capsense/capsense/ccs/target_config.ccxml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<configurations XML_version="1.2" id="configurations_0">
+ <configuration XML_version="1.2" id="Stellaris In-Circuit Debug Interface_0">
+ <instance XML_version="1.2" desc="Stellaris In-Circuit Debug Interface_0" href="connections/Stellaris_ICDI_Connection.xml" id="Stellaris In-Circuit Debug Interface_0" xml="Stellaris_ICDI_Connection.xml" xmlpath="connections"/>
+ <connection XML_version="1.2" id="Stellaris In-Circuit Debug Interface_0">
+ <instance XML_version="1.2" href="drivers/stellaris_cs_dap.xml" id="drivers" xml="stellaris_cs_dap.xml" xmlpath="drivers"/>
+ <instance XML_version="1.2" href="drivers/stellaris_cortex_m4.xml" id="drivers" xml="stellaris_cortex_m4.xml" xmlpath="drivers"/>
+ <platform XML_version="1.2" id="platform_0">
+ <instance XML_version="1.2" desc="Stellaris LM4F120H5QR_0" href="devices/lm4f120h5qr.xml" id="Stellaris LM4F120H5QR_0" xml="lm4f120h5qr.xml" xmlpath="devices"/>
+ </platform>
+ </connection>
+ </configuration>
+</configurations>
diff --git a/boards/ek-lm4f120xl-boost-capsense/capsense/ewarm/Exe/capsense.bin b/boards/ek-lm4f120xl-boost-capsense/capsense/ewarm/Exe/capsense.bin Binary files differnew file mode 100644 index 0000000..be02763 --- /dev/null +++ b/boards/ek-lm4f120xl-boost-capsense/capsense/ewarm/Exe/capsense.bin diff --git a/boards/ek-lm4f120xl-boost-capsense/capsense/ewarm/Exe/capsense.out b/boards/ek-lm4f120xl-boost-capsense/capsense/ewarm/Exe/capsense.out Binary files differnew file mode 100644 index 0000000..171adb8 --- /dev/null +++ b/boards/ek-lm4f120xl-boost-capsense/capsense/ewarm/Exe/capsense.out diff --git a/boards/ek-lm4f120xl-boost-capsense/capsense/gcc/capsense.axf b/boards/ek-lm4f120xl-boost-capsense/capsense/gcc/capsense.axf Binary files differnew file mode 100644 index 0000000..2313693 --- /dev/null +++ b/boards/ek-lm4f120xl-boost-capsense/capsense/gcc/capsense.axf diff --git a/boards/ek-lm4f120xl-boost-capsense/capsense/gcc/capsense.bin b/boards/ek-lm4f120xl-boost-capsense/capsense/gcc/capsense.bin Binary files differnew file mode 100644 index 0000000..46b0852 --- /dev/null +++ b/boards/ek-lm4f120xl-boost-capsense/capsense/gcc/capsense.bin diff --git a/boards/ek-lm4f120xl-boost-capsense/capsense/readme.txt b/boards/ek-lm4f120xl-boost-capsense/capsense/readme.txt new file mode 100644 index 0000000..cf3300b --- /dev/null +++ b/boards/ek-lm4f120xl-boost-capsense/capsense/readme.txt @@ -0,0 +1,32 @@ +Capacitive Touch Example
+
+An example that works with the 430BOOST-SENSE1 capactive sense
+BoosterPack, originally designed for the MSP430 LaunchPad.
+
+The Stellaris LM4F120H5QR does not have the capacitive sense hardware
+assisted peripheral features of some MSP430 chips. Therefore it is
+required that the user install surface mount resistors on the pads
+provided on the bottom of the capacitive sense BoosterPack. Resistor values
+of 30 ohms are recommended. Calibration may be required for
+resistor values other than 30 ohms.
+
+
+-------------------------------------------------------------------------------
+
+Copyright (c) 2011-2012 Texas Instruments Incorporated. All rights reserved.
+Software License Agreement
+
+Texas Instruments (TI) is supplying this software for use solely and
+exclusively on TI's microcontroller products. The software is owned by
+TI and/or its suppliers, and is protected under applicable copyright
+laws. You may not combine this software with "viral" open-source
+software in order to form a larger program.
+
+THIS SOFTWARE IS PROVIDED "AS IS" AND WITH ALL FAULTS.
+NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT
+NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. TI SHALL NOT, UNDER ANY
+CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES, FOR ANY REASON WHATSOEVER.
+
+This is part of revision 9453 of the EK-LM4F120XL Firmware Package.
diff --git a/boards/ek-lm4f120xl-boost-capsense/capsense/rvmdk/capsense.axf b/boards/ek-lm4f120xl-boost-capsense/capsense/rvmdk/capsense.axf Binary files differnew file mode 100644 index 0000000..8979a0a --- /dev/null +++ b/boards/ek-lm4f120xl-boost-capsense/capsense/rvmdk/capsense.axf diff --git a/boards/ek-lm4f120xl-boost-capsense/capsense/rvmdk/capsense.bin b/boards/ek-lm4f120xl-boost-capsense/capsense/rvmdk/capsense.bin Binary files differnew file mode 100644 index 0000000..498e8fb --- /dev/null +++ b/boards/ek-lm4f120xl-boost-capsense/capsense/rvmdk/capsense.bin diff --git a/boards/ek-lm4f120xl-boost-capsense/capsense/sourcerygxx/capsense.axf b/boards/ek-lm4f120xl-boost-capsense/capsense/sourcerygxx/capsense.axf Binary files differnew file mode 100644 index 0000000..7c18785 --- /dev/null +++ b/boards/ek-lm4f120xl-boost-capsense/capsense/sourcerygxx/capsense.axf diff --git a/boards/ek-lm4f120xl-boost-capsense/capsense/sourcerygxx/capsense.bin b/boards/ek-lm4f120xl-boost-capsense/capsense/sourcerygxx/capsense.bin Binary files differnew file mode 100644 index 0000000..16dc618 --- /dev/null +++ b/boards/ek-lm4f120xl-boost-capsense/capsense/sourcerygxx/capsense.bin diff --git a/boards/ek-lm4f120xl-boost-capsense/capsense/startup_ccs.c b/boards/ek-lm4f120xl-boost-capsense/capsense/startup_ccs.c new file mode 100644 index 0000000..9f15b47 --- /dev/null +++ b/boards/ek-lm4f120xl-boost-capsense/capsense/startup_ccs.c @@ -0,0 +1,291 @@ +//*****************************************************************************
+//
+// startup_ccs.c - Startup code for use with TI's Code Composer Studio.
+//
+// Copyright (c) 2012 Texas Instruments Incorporated. All rights reserved.
+// Software License Agreement
+//
+// Texas Instruments (TI) is supplying this software for use solely and
+// exclusively on TI's microcontroller products. The software is owned by
+// TI and/or its suppliers, and is protected under applicable copyright
+// laws. You may not combine this software with "viral" open-source
+// software in order to form a larger program.
+//
+// THIS SOFTWARE IS PROVIDED "AS IS" AND WITH ALL FAULTS.
+// NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT
+// NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. TI SHALL NOT, UNDER ANY
+// CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR CONSEQUENTIAL
+// DAMAGES, FOR ANY REASON WHATSOEVER.
+//
+// This is part of revision 9453 of the EK-LM4F120XL Firmware Package.
+//
+//*****************************************************************************
+
+//*****************************************************************************
+//
+// Forward declaration of the default fault handlers.
+//
+//*****************************************************************************
+void ResetISR(void);
+static void NmiSR(void);
+static void FaultISR(void);
+static void IntDefaultHandler(void);
+
+//*****************************************************************************
+//
+// External declaration for the reset handler that is to be called when the
+// processor is started
+//
+//*****************************************************************************
+extern void _c_int00(void);
+
+//*****************************************************************************
+//
+// Linker variable that marks the top of the stack.
+//
+//*****************************************************************************
+extern unsigned long __STACK_TOP;
+
+//*****************************************************************************
+//
+// The vector table. Note that the proper constructs must be placed on this to
+// ensure that it ends up at physical address 0x0000.0000 or at the start of
+// the program if located at a start address other than 0.
+//
+//*****************************************************************************
+#pragma DATA_SECTION(g_pfnVectors, ".intvecs")
+void (* const g_pfnVectors[])(void) =
+{
+ (void (*)(void))((unsigned long)&__STACK_TOP),
+ // The initial stack pointer
+ ResetISR, // The reset handler
+ NmiSR, // The NMI handler
+ FaultISR, // The hard fault handler
+ IntDefaultHandler, // The MPU fault handler
+ IntDefaultHandler, // The bus fault handler
+ IntDefaultHandler, // The usage fault handler
+ 0, // Reserved
+ 0, // Reserved
+ 0, // Reserved
+ 0, // Reserved
+ IntDefaultHandler, // SVCall handler
+ IntDefaultHandler, // Debug monitor handler
+ 0, // Reserved
+ IntDefaultHandler, // The PendSV handler
+ IntDefaultHandler, // The SysTick handler
+ IntDefaultHandler, // GPIO Port A
+ IntDefaultHandler, // GPIO Port B
+ IntDefaultHandler, // GPIO Port C
+ IntDefaultHandler, // GPIO Port D
+ IntDefaultHandler, // GPIO Port E
+ IntDefaultHandler, // UART0 Rx and Tx
+ IntDefaultHandler, // UART1 Rx and Tx
+ IntDefaultHandler, // SSI0 Rx and Tx
+ IntDefaultHandler, // I2C0 Master and Slave
+ IntDefaultHandler, // PWM Fault
+ IntDefaultHandler, // PWM Generator 0
+ IntDefaultHandler, // PWM Generator 1
+ IntDefaultHandler, // PWM Generator 2
+ IntDefaultHandler, // Quadrature Encoder 0
+ IntDefaultHandler, // ADC Sequence 0
+ IntDefaultHandler, // ADC Sequence 1
+ IntDefaultHandler, // ADC Sequence 2
+ IntDefaultHandler, // ADC Sequence 3
+ IntDefaultHandler, // Watchdog timer
+ IntDefaultHandler, // Timer 0 subtimer A
+ IntDefaultHandler, // Timer 0 subtimer B
+ IntDefaultHandler, // Timer 1 subtimer A
+ IntDefaultHandler, // Timer 1 subtimer B
+ IntDefaultHandler, // Timer 2 subtimer A
+ IntDefaultHandler, // Timer 2 subtimer B
+ IntDefaultHandler, // Analog Comparator 0
+ IntDefaultHandler, // Analog Comparator 1
+ IntDefaultHandler, // Analog Comparator 2
+ IntDefaultHandler, // System Control (PLL, OSC, BO)
+ IntDefaultHandler, // FLASH Control
+ IntDefaultHandler, // GPIO Port F
+ IntDefaultHandler, // GPIO Port G
+ IntDefaultHandler, // GPIO Port H
+ IntDefaultHandler, // UART2 Rx and Tx
+ IntDefaultHandler, // SSI1 Rx and Tx
+ IntDefaultHandler, // Timer 3 subtimer A
+ IntDefaultHandler, // Timer 3 subtimer B
+ IntDefaultHandler, // I2C1 Master and Slave
+ IntDefaultHandler, // Quadrature Encoder 1
+ IntDefaultHandler, // CAN0
+ IntDefaultHandler, // CAN1
+ IntDefaultHandler, // CAN2
+ IntDefaultHandler, // Ethernet
+ IntDefaultHandler, // Hibernate
+ IntDefaultHandler, // USB0
+ IntDefaultHandler, // PWM Generator 3
+ IntDefaultHandler, // uDMA Software Transfer
+ IntDefaultHandler, // uDMA Error
+ IntDefaultHandler, // ADC1 Sequence 0
+ IntDefaultHandler, // ADC1 Sequence 1
+ IntDefaultHandler, // ADC1 Sequence 2
+ IntDefaultHandler, // ADC1 Sequence 3
+ IntDefaultHandler, // I2S0
+ IntDefaultHandler, // External Bus Interface 0
+ IntDefaultHandler, // GPIO Port J
+ IntDefaultHandler, // GPIO Port K
+ IntDefaultHandler, // GPIO Port L
+ IntDefaultHandler, // SSI2 Rx and Tx
+ IntDefaultHandler, // SSI3 Rx and Tx
+ IntDefaultHandler, // UART3 Rx and Tx
+ IntDefaultHandler, // UART4 Rx and Tx
+ IntDefaultHandler, // UART5 Rx and Tx
+ IntDefaultHandler, // UART6 Rx and Tx
+ IntDefaultHandler, // UART7 Rx and Tx
+ 0, // Reserved
+ 0, // Reserved
+ 0, // Reserved
+ 0, // Reserved
+ IntDefaultHandler, // I2C2 Master and Slave
+ IntDefaultHandler, // I2C3 Master and Slave
+ IntDefaultHandler, // Timer 4 subtimer A
+ IntDefaultHandler, // Timer 4 subtimer B
+ 0, // Reserved
+ 0, // Reserved
+ 0, // Reserved
+ 0, // Reserved
+ 0, // Reserved
+ 0, // Reserved
+ 0, // Reserved
+ 0, // Reserved
+ 0, // Reserved
+ 0, // Reserved
+ 0, // Reserved
+ 0, // Reserved
+ 0, // Reserved
+ 0, // Reserved
+ 0, // Reserved
+ 0, // Reserved
+ 0, // Reserved
+ 0, // Reserved
+ 0, // Reserved
+ 0, // Reserved
+ IntDefaultHandler, // Timer 5 subtimer A
+ IntDefaultHandler, // Timer 5 subtimer B
+ IntDefaultHandler, // Wide Timer 0 subtimer A
+ IntDefaultHandler, // Wide Timer 0 subtimer B
+ IntDefaultHandler, // Wide Timer 1 subtimer A
+ IntDefaultHandler, // Wide Timer 1 subtimer B
+ IntDefaultHandler, // Wide Timer 2 subtimer A
+ IntDefaultHandler, // Wide Timer 2 subtimer B
+ IntDefaultHandler, // Wide Timer 3 subtimer A
+ IntDefaultHandler, // Wide Timer 3 subtimer B
+ IntDefaultHandler, // Wide Timer 4 subtimer A
+ IntDefaultHandler, // Wide Timer 4 subtimer B
+ IntDefaultHandler, // Wide Timer 5 subtimer A
+ IntDefaultHandler, // Wide Timer 5 subtimer B
+ IntDefaultHandler, // FPU
+ IntDefaultHandler, // PECI 0
+ IntDefaultHandler, // LPC 0
+ IntDefaultHandler, // I2C4 Master and Slave
+ IntDefaultHandler, // I2C5 Master and Slave
+ IntDefaultHandler, // GPIO Port M
+ IntDefaultHandler, // GPIO Port N
+ IntDefaultHandler, // Quadrature Encoder 2
+ IntDefaultHandler, // Fan 0
+ 0, // Reserved
+ IntDefaultHandler, // GPIO Port P (Summary or P0)
+ IntDefaultHandler, // GPIO Port P1
+ IntDefaultHandler, // GPIO Port P2
+ IntDefaultHandler, // GPIO Port P3
+ IntDefaultHandler, // GPIO Port P4
+ IntDefaultHandler, // GPIO Port P5
+ IntDefaultHandler, // GPIO Port P6
+ IntDefaultHandler, // GPIO Port P7
+ IntDefaultHandler, // GPIO Port Q (Summary or Q0)
+ IntDefaultHandler, // GPIO Port Q1
+ IntDefaultHandler, // GPIO Port Q2
+ IntDefaultHandler, // GPIO Port Q3
+ IntDefaultHandler, // GPIO Port Q4
+ IntDefaultHandler, // GPIO Port Q5
+ IntDefaultHandler, // GPIO Port Q6
+ IntDefaultHandler, // GPIO Port Q7
+ IntDefaultHandler, // GPIO Port R
+ IntDefaultHandler, // GPIO Port S
+ IntDefaultHandler, // PWM 1 Generator 0
+ IntDefaultHandler, // PWM 1 Generator 1
+ IntDefaultHandler, // PWM 1 Generator 2
+ IntDefaultHandler, // PWM 1 Generator 3
+ IntDefaultHandler // PWM 1 Fault
+};
+
+//*****************************************************************************
+//
+// This is the code that gets called when the processor first starts execution
+// following a reset event. Only the absolutely necessary set is performed,
+// after which the application supplied entry() routine is called. Any fancy
+// actions (such as making decisions based on the reset cause register, and
+// resetting the bits in that register) are left solely in the hands of the
+// application.
+//
+//*****************************************************************************
+void
+ResetISR(void)
+{
+ //
+ // Jump to the CCS C initialization routine. This will enable the
+ // floating-point unit as well, so that does not need to be done here.
+ //
+ __asm(" .global _c_int00\n"
+ " b.w _c_int00");
+}
+
+//*****************************************************************************
+//
+// This is the code that gets called when the processor receives a NMI. This
+// simply enters an infinite loop, preserving the system state for examination
+// by a debugger.
+//
+//*****************************************************************************
+static void
+NmiSR(void)
+{
+ //
+ // Enter an infinite loop.
+ //
+ while(1)
+ {
+ }
+}
+
+//*****************************************************************************
+//
+// This is the code that gets called when the processor receives a fault
+// interrupt. This simply enters an infinite loop, preserving the system state
+// for examination by a debugger.
+//
+//*****************************************************************************
+static void
+FaultISR(void)
+{
+ //
+ // Enter an infinite loop.
+ //
+ while(1)
+ {
+ }
+}
+
+//*****************************************************************************
+//
+// This is the code that gets called when the processor receives an unexpected
+// interrupt. This simply enters an infinite loop, preserving the system state
+// for examination by a debugger.
+//
+//*****************************************************************************
+static void
+IntDefaultHandler(void)
+{
+ //
+ // Go into an infinite loop.
+ //
+ while(1)
+ {
+ }
+}
diff --git a/boards/ek-lm4f120xl-boost-capsense/capsense/startup_ewarm.c b/boards/ek-lm4f120xl-boost-capsense/capsense/startup_ewarm.c new file mode 100644 index 0000000..ea56618 --- /dev/null +++ b/boards/ek-lm4f120xl-boost-capsense/capsense/startup_ewarm.c @@ -0,0 +1,325 @@ +//*****************************************************************************
+//
+// startup_ewarm.c - Startup code for use with IAR's Embedded Workbench,
+// version 5.
+//
+// Copyright (c) 2012 Texas Instruments Incorporated. All rights reserved.
+// Software License Agreement
+//
+// Texas Instruments (TI) is supplying this software for use solely and
+// exclusively on TI's microcontroller products. The software is owned by
+// TI and/or its suppliers, and is protected under applicable copyright
+// laws. You may not combine this software with "viral" open-source
+// software in order to form a larger program.
+//
+// THIS SOFTWARE IS PROVIDED "AS IS" AND WITH ALL FAULTS.
+// NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT
+// NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. TI SHALL NOT, UNDER ANY
+// CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR CONSEQUENTIAL
+// DAMAGES, FOR ANY REASON WHATSOEVER.
+//
+// This is part of revision 9453 of the EK-LM4F120XL Firmware Package.
+//
+//*****************************************************************************
+
+#include "inc/hw_nvic.h"
+#include "inc/hw_types.h"
+
+//*****************************************************************************
+//
+// Enable the IAR extensions for this source file.
+//
+//*****************************************************************************
+#pragma language=extended
+
+//*****************************************************************************
+//
+// Forward declaration of the default fault handlers.
+//
+//*****************************************************************************
+void ResetISR(void);
+static void NmiSR(void);
+static void FaultISR(void);
+static void IntDefaultHandler(void);
+
+//*****************************************************************************
+//
+// The entry point for the application startup code.
+//
+//*****************************************************************************
+extern void __iar_program_start(void);
+
+//*****************************************************************************
+//
+// Reserve space for the system stack.
+//
+//*****************************************************************************
+static unsigned long pulStack[128] @ ".noinit";
+
+//*****************************************************************************
+//
+// A union that describes the entries of the vector table. The union is needed
+// since the first entry is the stack pointer and the remainder are function
+// pointers.
+//
+//*****************************************************************************
+typedef union
+{
+ void (*pfnHandler)(void);
+ unsigned long ulPtr;
+}
+uVectorEntry;
+
+//*****************************************************************************
+//
+// The vector table. Note that the proper constructs must be placed on this to
+// ensure that it ends up at physical address 0x0000.0000.
+//
+//*****************************************************************************
+__root const uVectorEntry __vector_table[] @ ".intvec" =
+{
+ { .ulPtr = (unsigned long)pulStack + sizeof(pulStack) },
+ // The initial stack pointer
+ ResetISR, // The reset handler
+ NmiSR, // The NMI handler
+ FaultISR, // The hard fault handler
+ IntDefaultHandler, // The MPU fault handler
+ IntDefaultHandler, // The bus fault handler
+ IntDefaultHandler, // The usage fault handler
+ 0, // Reserved
+ 0, // Reserved
+ 0, // Reserved
+ 0, // Reserved
+ IntDefaultHandler, // SVCall handler
+ IntDefaultHandler, // Debug monitor handler
+ 0, // Reserved
+ IntDefaultHandler, // The PendSV handler
+ IntDefaultHandler, // The SysTick handler
+ IntDefaultHandler, // GPIO Port A
+ IntDefaultHandler, // GPIO Port B
+ IntDefaultHandler, // GPIO Port C
+ IntDefaultHandler, // GPIO Port D
+ IntDefaultHandler, // GPIO Port E
+ IntDefaultHandler, // UART0 Rx and Tx
+ IntDefaultHandler, // UART1 Rx and Tx
+ IntDefaultHandler, // SSI0 Rx and Tx
+ IntDefaultHandler, // I2C0 Master and Slave
+ IntDefaultHandler, // PWM Fault
+ IntDefaultHandler, // PWM Generator 0
+ IntDefaultHandler, // PWM Generator 1
+ IntDefaultHandler, // PWM Generator 2
+ IntDefaultHandler, // Quadrature Encoder 0
+ IntDefaultHandler, // ADC Sequence 0
+ IntDefaultHandler, // ADC Sequence 1
+ IntDefaultHandler, // ADC Sequence 2
+ IntDefaultHandler, // ADC Sequence 3
+ IntDefaultHandler, // Watchdog timer
+ IntDefaultHandler, // Timer 0 subtimer A
+ IntDefaultHandler, // Timer 0 subtimer B
+ IntDefaultHandler, // Timer 1 subtimer A
+ IntDefaultHandler, // Timer 1 subtimer B
+ IntDefaultHandler, // Timer 2 subtimer A
+ IntDefaultHandler, // Timer 2 subtimer B
+ IntDefaultHandler, // Analog Comparator 0
+ IntDefaultHandler, // Analog Comparator 1
+ IntDefaultHandler, // Analog Comparator 2
+ IntDefaultHandler, // System Control (PLL, OSC, BO)
+ IntDefaultHandler, // FLASH Control
+ IntDefaultHandler, // GPIO Port F
+ IntDefaultHandler, // GPIO Port G
+ IntDefaultHandler, // GPIO Port H
+ IntDefaultHandler, // UART2 Rx and Tx
+ IntDefaultHandler, // SSI1 Rx and Tx
+ IntDefaultHandler, // Timer 3 subtimer A
+ IntDefaultHandler, // Timer 3 subtimer B
+ IntDefaultHandler, // I2C1 Master and Slave
+ IntDefaultHandler, // Quadrature Encoder 1
+ IntDefaultHandler, // CAN0
+ IntDefaultHandler, // CAN1
+ IntDefaultHandler, // CAN2
+ IntDefaultHandler, // Ethernet
+ IntDefaultHandler, // Hibernate
+ IntDefaultHandler, // USB0
+ IntDefaultHandler, // PWM Generator 3
+ IntDefaultHandler, // uDMA Software Transfer
+ IntDefaultHandler, // uDMA Error
+ IntDefaultHandler, // ADC1 Sequence 0
+ IntDefaultHandler, // ADC1 Sequence 1
+ IntDefaultHandler, // ADC1 Sequence 2
+ IntDefaultHandler, // ADC1 Sequence 3
+ IntDefaultHandler, // I2S0
+ IntDefaultHandler, // External Bus Interface 0
+ IntDefaultHandler, // GPIO Port J
+ IntDefaultHandler, // GPIO Port K
+ IntDefaultHandler, // GPIO Port L
+ IntDefaultHandler, // SSI2 Rx and Tx
+ IntDefaultHandler, // SSI3 Rx and Tx
+ IntDefaultHandler, // UART3 Rx and Tx
+ IntDefaultHandler, // UART4 Rx and Tx
+ IntDefaultHandler, // UART5 Rx and Tx
+ IntDefaultHandler, // UART6 Rx and Tx
+ IntDefaultHandler, // UART7 Rx and Tx
+ 0, // Reserved
+ 0, // Reserved
+ 0, // Reserved
+ 0, // Reserved
+ IntDefaultHandler, // I2C2 Master and Slave
+ IntDefaultHandler, // I2C3 Master and Slave
+ IntDefaultHandler, // Timer 4 subtimer A
+ IntDefaultHandler, // Timer 4 subtimer B
+ 0, // Reserved
+ 0, // Reserved
+ 0, // Reserved
+ 0, // Reserved
+ 0, // Reserved
+ 0, // Reserved
+ 0, // Reserved
+ 0, // Reserved
+ 0, // Reserved
+ 0, // Reserved
+ 0, // Reserved
+ 0, // Reserved
+ 0, // Reserved
+ 0, // Reserved
+ 0, // Reserved
+ 0, // Reserved
+ 0, // Reserved
+ 0, // Reserved
+ 0, // Reserved
+ 0, // Reserved
+ IntDefaultHandler, // Timer 5 subtimer A
+ IntDefaultHandler, // Timer 5 subtimer B
+ IntDefaultHandler, // Wide Timer 0 subtimer A
+ IntDefaultHandler, // Wide Timer 0 subtimer B
+ IntDefaultHandler, // Wide Timer 1 subtimer A
+ IntDefaultHandler, // Wide Timer 1 subtimer B
+ IntDefaultHandler, // Wide Timer 2 subtimer A
+ IntDefaultHandler, // Wide Timer 2 subtimer B
+ IntDefaultHandler, // Wide Timer 3 subtimer A
+ IntDefaultHandler, // Wide Timer 3 subtimer B
+ IntDefaultHandler, // Wide Timer 4 subtimer A
+ IntDefaultHandler, // Wide Timer 4 subtimer B
+ IntDefaultHandler, // Wide Timer 5 subtimer A
+ IntDefaultHandler, // Wide Timer 5 subtimer B
+ IntDefaultHandler, // FPU
+ IntDefaultHandler, // PECI 0
+ IntDefaultHandler, // LPC 0
+ IntDefaultHandler, // I2C4 Master and Slave
+ IntDefaultHandler, // I2C5 Master and Slave
+ IntDefaultHandler, // GPIO Port M
+ IntDefaultHandler, // GPIO Port N
+ IntDefaultHandler, // Quadrature Encoder 2
+ IntDefaultHandler, // Fan 0
+ 0, // Reserved
+ IntDefaultHandler, // GPIO Port P (Summary or P0)
+ IntDefaultHandler, // GPIO Port P1
+ IntDefaultHandler, // GPIO Port P2
+ IntDefaultHandler, // GPIO Port P3
+ IntDefaultHandler, // GPIO Port P4
+ IntDefaultHandler, // GPIO Port P5
+ IntDefaultHandler, // GPIO Port P6
+ IntDefaultHandler, // GPIO Port P7
+ IntDefaultHandler, // GPIO Port Q (Summary or Q0)
+ IntDefaultHandler, // GPIO Port Q1
+ IntDefaultHandler, // GPIO Port Q2
+ IntDefaultHandler, // GPIO Port Q3
+ IntDefaultHandler, // GPIO Port Q4
+ IntDefaultHandler, // GPIO Port Q5
+ IntDefaultHandler, // GPIO Port Q6
+ IntDefaultHandler, // GPIO Port Q7
+ IntDefaultHandler, // GPIO Port R
+ IntDefaultHandler, // GPIO Port S
+ IntDefaultHandler, // PWM 1 Generator 0
+ IntDefaultHandler, // PWM 1 Generator 1
+ IntDefaultHandler, // PWM 1 Generator 2
+ IntDefaultHandler, // PWM 1 Generator 3
+ IntDefaultHandler // PWM 1 Fault
+};
+
+//*****************************************************************************
+//
+// This is the code that gets called when the processor first starts execution
+// following a reset event. Only the absolutely necessary set is performed,
+// after which the application supplied entry() routine is called. Any fancy
+// actions (such as making decisions based on the reset cause register, and
+// resetting the bits in that register) are left solely in the hands of the
+// application.
+//
+//*****************************************************************************
+void
+ResetISR(void)
+{
+ //
+ // Enable the floating-point unit. This must be done here to handle the
+ // case where main() uses floating-point and the function prologue saves
+ // floating-point registers (which will fault if floating-point is not
+ // enabled). Any configuration of the floating-point unit using DriverLib
+ // APIs must be done here prior to the floating-point unit being enabled.
+ //
+ // Note that this does not use DriverLib since it might not be included in
+ // this project.
+ //
+ HWREG(NVIC_CPAC) = ((HWREG(NVIC_CPAC) &
+ ~(NVIC_CPAC_CP10_M | NVIC_CPAC_CP11_M)) |
+ NVIC_CPAC_CP10_FULL | NVIC_CPAC_CP11_FULL);
+
+ //
+ // Call the application's entry point.
+ //
+ __iar_program_start();
+}
+
+//*****************************************************************************
+//
+// This is the code that gets called when the processor receives a NMI. This
+// simply enters an infinite loop, preserving the system state for examination
+// by a debugger.
+//
+//*****************************************************************************
+static void
+NmiSR(void)
+{
+ //
+ // Enter an infinite loop.
+ //
+ while(1)
+ {
+ }
+}
+
+//*****************************************************************************
+//
+// This is the code that gets called when the processor receives a fault
+// interrupt. This simply enters an infinite loop, preserving the system state
+// for examination by a debugger.
+//
+//*****************************************************************************
+static void
+FaultISR(void)
+{
+ //
+ // Enter an infinite loop.
+ //
+ while(1)
+ {
+ }
+}
+
+//*****************************************************************************
+//
+// This is the code that gets called when the processor receives an unexpected
+// interrupt. This simply enters an infinite loop, preserving the system state
+// for examination by a debugger.
+//
+//*****************************************************************************
+static void
+IntDefaultHandler(void)
+{
+ //
+ // Go into an infinite loop.
+ //
+ while(1)
+ {
+ }
+}
diff --git a/boards/ek-lm4f120xl-boost-capsense/capsense/startup_gcc.c b/boards/ek-lm4f120xl-boost-capsense/capsense/startup_gcc.c new file mode 100644 index 0000000..4c64cd2 --- /dev/null +++ b/boards/ek-lm4f120xl-boost-capsense/capsense/startup_gcc.c @@ -0,0 +1,341 @@ +//*****************************************************************************
+//
+// startup_gcc.c - Startup code for use with GNU tools.
+//
+// Copyright (c) 2012 Texas Instruments Incorporated. All rights reserved.
+// Software License Agreement
+//
+// Texas Instruments (TI) is supplying this software for use solely and
+// exclusively on TI's microcontroller products. The software is owned by
+// TI and/or its suppliers, and is protected under applicable copyright
+// laws. You may not combine this software with "viral" open-source
+// software in order to form a larger program.
+//
+// THIS SOFTWARE IS PROVIDED "AS IS" AND WITH ALL FAULTS.
+// NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT
+// NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. TI SHALL NOT, UNDER ANY
+// CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR CONSEQUENTIAL
+// DAMAGES, FOR ANY REASON WHATSOEVER.
+//
+// This is part of revision 9453 of the EK-LM4F120XL Firmware Package.
+//
+//*****************************************************************************
+
+#include "inc/hw_nvic.h"
+#include "inc/hw_types.h"
+
+//*****************************************************************************
+//
+// Forward declaration of the default fault handlers.
+//
+//*****************************************************************************
+void ResetISR(void);
+static void NmiSR(void);
+static void FaultISR(void);
+static void IntDefaultHandler(void);
+
+//*****************************************************************************
+//
+// The entry point for the application.
+//
+//*****************************************************************************
+extern int main(void);
+
+//*****************************************************************************
+//
+// Reserve space for the system stack.
+//
+//*****************************************************************************
+static unsigned long pulStack[128];
+
+//*****************************************************************************
+//
+// The vector table. Note that the proper constructs must be placed on this to
+// ensure that it ends up at physical address 0x0000.0000.
+//
+//*****************************************************************************
+__attribute__ ((section(".isr_vector")))
+void (* const g_pfnVectors[])(void) =
+{
+ (void (*)(void))((unsigned long)pulStack + sizeof(pulStack)),
+ // The initial stack pointer
+ ResetISR, // The reset handler
+ NmiSR, // The NMI handler
+ FaultISR, // The hard fault handler
+ IntDefaultHandler, // The MPU fault handler
+ IntDefaultHandler, // The bus fault handler
+ IntDefaultHandler, // The usage fault handler
+ 0, // Reserved
+ 0, // Reserved
+ 0, // Reserved
+ 0, // Reserved
+ IntDefaultHandler, // SVCall handler
+ IntDefaultHandler, // Debug monitor handler
+ 0, // Reserved
+ IntDefaultHandler, // The PendSV handler
+ IntDefaultHandler, // The SysTick handler
+ IntDefaultHandler, // GPIO Port A
+ IntDefaultHandler, // GPIO Port B
+ IntDefaultHandler, // GPIO Port C
+ IntDefaultHandler, // GPIO Port D
+ IntDefaultHandler, // GPIO Port E
+ IntDefaultHandler, // UART0 Rx and Tx
+ IntDefaultHandler, // UART1 Rx and Tx
+ IntDefaultHandler, // SSI0 Rx and Tx
+ IntDefaultHandler, // I2C0 Master and Slave
+ IntDefaultHandler, // PWM Fault
+ IntDefaultHandler, // PWM Generator 0
+ IntDefaultHandler, // PWM Generator 1
+ IntDefaultHandler, // PWM Generator 2
+ IntDefaultHandler, // Quadrature Encoder 0
+ IntDefaultHandler, // ADC Sequence 0
+ IntDefaultHandler, // ADC Sequence 1
+ IntDefaultHandler, // ADC Sequence 2
+ IntDefaultHandler, // ADC Sequence 3
+ IntDefaultHandler, // Watchdog timer
+ IntDefaultHandler, // Timer 0 subtimer A
+ IntDefaultHandler, // Timer 0 subtimer B
+ IntDefaultHandler, // Timer 1 subtimer A
+ IntDefaultHandler, // Timer 1 subtimer B
+ IntDefaultHandler, // Timer 2 subtimer A
+ IntDefaultHandler, // Timer 2 subtimer B
+ IntDefaultHandler, // Analog Comparator 0
+ IntDefaultHandler, // Analog Comparator 1
+ IntDefaultHandler, // Analog Comparator 2
+ IntDefaultHandler, // System Control (PLL, OSC, BO)
+ IntDefaultHandler, // FLASH Control
+ IntDefaultHandler, // GPIO Port F
+ IntDefaultHandler, // GPIO Port G
+ IntDefaultHandler, // GPIO Port H
+ IntDefaultHandler, // UART2 Rx and Tx
+ IntDefaultHandler, // SSI1 Rx and Tx
+ IntDefaultHandler, // Timer 3 subtimer A
+ IntDefaultHandler, // Timer 3 subtimer B
+ IntDefaultHandler, // I2C1 Master and Slave
+ IntDefaultHandler, // Quadrature Encoder 1
+ IntDefaultHandler, // CAN0
+ IntDefaultHandler, // CAN1
+ IntDefaultHandler, // CAN2
+ IntDefaultHandler, // Ethernet
+ IntDefaultHandler, // Hibernate
+ IntDefaultHandler, // USB0
+ IntDefaultHandler, // PWM Generator 3
+ IntDefaultHandler, // uDMA Software Transfer
+ IntDefaultHandler, // uDMA Error
+ IntDefaultHandler, // ADC1 Sequence 0
+ IntDefaultHandler, // ADC1 Sequence 1
+ IntDefaultHandler, // ADC1 Sequence 2
+ IntDefaultHandler, // ADC1 Sequence 3
+ IntDefaultHandler, // I2S0
+ IntDefaultHandler, // External Bus Interface 0
+ IntDefaultHandler, // GPIO Port J
+ IntDefaultHandler, // GPIO Port K
+ IntDefaultHandler, // GPIO Port L
+ IntDefaultHandler, // SSI2 Rx and Tx
+ IntDefaultHandler, // SSI3 Rx and Tx
+ IntDefaultHandler, // UART3 Rx and Tx
+ IntDefaultHandler, // UART4 Rx and Tx
+ IntDefaultHandler, // UART5 Rx and Tx
+ IntDefaultHandler, // UART6 Rx and Tx
+ IntDefaultHandler, // UART7 Rx and Tx
+ 0, // Reserved
+ 0, // Reserved
+ 0, // Reserved
+ 0, // Reserved
+ IntDefaultHandler, // I2C2 Master and Slave
+ IntDefaultHandler, // I2C3 Master and Slave
+ IntDefaultHandler, // Timer 4 subtimer A
+ IntDefaultHandler, // Timer 4 subtimer B
+ 0, // Reserved
+ 0, // Reserved
+ 0, // Reserved
+ 0, // Reserved
+ 0, // Reserved
+ 0, // Reserved
+ 0, // Reserved
+ 0, // Reserved
+ 0, // Reserved
+ 0, // Reserved
+ 0, // Reserved
+ 0, // Reserved
+ 0, // Reserved
+ 0, // Reserved
+ 0, // Reserved
+ 0, // Reserved
+ 0, // Reserved
+ 0, // Reserved
+ 0, // Reserved
+ 0, // Reserved
+ IntDefaultHandler, // Timer 5 subtimer A
+ IntDefaultHandler, // Timer 5 subtimer B
+ IntDefaultHandler, // Wide Timer 0 subtimer A
+ IntDefaultHandler, // Wide Timer 0 subtimer B
+ IntDefaultHandler, // Wide Timer 1 subtimer A
+ IntDefaultHandler, // Wide Timer 1 subtimer B
+ IntDefaultHandler, // Wide Timer 2 subtimer A
+ IntDefaultHandler, // Wide Timer 2 subtimer B
+ IntDefaultHandler, // Wide Timer 3 subtimer A
+ IntDefaultHandler, // Wide Timer 3 subtimer B
+ IntDefaultHandler, // Wide Timer 4 subtimer A
+ IntDefaultHandler, // Wide Timer 4 subtimer B
+ IntDefaultHandler, // Wide Timer 5 subtimer A
+ IntDefaultHandler, // Wide Timer 5 subtimer B
+ IntDefaultHandler, // FPU
+ IntDefaultHandler, // PECI 0
+ IntDefaultHandler, // LPC 0
+ IntDefaultHandler, // I2C4 Master and Slave
+ IntDefaultHandler, // I2C5 Master and Slave
+ IntDefaultHandler, // GPIO Port M
+ IntDefaultHandler, // GPIO Port N
+ IntDefaultHandler, // Quadrature Encoder 2
+ IntDefaultHandler, // Fan 0
+ 0, // Reserved
+ IntDefaultHandler, // GPIO Port P (Summary or P0)
+ IntDefaultHandler, // GPIO Port P1
+ IntDefaultHandler, // GPIO Port P2
+ IntDefaultHandler, // GPIO Port P3
+ IntDefaultHandler, // GPIO Port P4
+ IntDefaultHandler, // GPIO Port P5
+ IntDefaultHandler, // GPIO Port P6
+ IntDefaultHandler, // GPIO Port P7
+ IntDefaultHandler, // GPIO Port Q (Summary or Q0)
+ IntDefaultHandler, // GPIO Port Q1
+ IntDefaultHandler, // GPIO Port Q2
+ IntDefaultHandler, // GPIO Port Q3
+ IntDefaultHandler, // GPIO Port Q4
+ IntDefaultHandler, // GPIO Port Q5
+ IntDefaultHandler, // GPIO Port Q6
+ IntDefaultHandler, // GPIO Port Q7
+ IntDefaultHandler, // GPIO Port R
+ IntDefaultHandler, // GPIO Port S
+ IntDefaultHandler, // PWM 1 Generator 0
+ IntDefaultHandler, // PWM 1 Generator 1
+ IntDefaultHandler, // PWM 1 Generator 2
+ IntDefaultHandler, // PWM 1 Generator 3
+ IntDefaultHandler // PWM 1 Fault
+};
+
+//*****************************************************************************
+//
+// The following are constructs created by the linker, indicating where the
+// the "data" and "bss" segments reside in memory. The initializers for the
+// for the "data" segment resides immediately following the "text" segment.
+//
+//*****************************************************************************
+extern unsigned long _etext;
+extern unsigned long _data;
+extern unsigned long _edata;
+extern unsigned long _bss;
+extern unsigned long _ebss;
+
+//*****************************************************************************
+//
+// This is the code that gets called when the processor first starts execution
+// following a reset event. Only the absolutely necessary set is performed,
+// after which the application supplied entry() routine is called. Any fancy
+// actions (such as making decisions based on the reset cause register, and
+// resetting the bits in that register) are left solely in the hands of the
+// application.
+//
+//*****************************************************************************
+void
+ResetISR(void)
+{
+ unsigned long *pulSrc, *pulDest;
+
+ //
+ // Copy the data segment initializers from flash to SRAM.
+ //
+ pulSrc = &_etext;
+ for(pulDest = &_data; pulDest < &_edata; )
+ {
+ *pulDest++ = *pulSrc++;
+ }
+
+ //
+ // Zero fill the bss segment.
+ //
+ __asm(" ldr r0, =_bss\n"
+ " ldr r1, =_ebss\n"
+ " mov r2, #0\n"
+ " .thumb_func\n"
+ "zero_loop:\n"
+ " cmp r0, r1\n"
+ " it lt\n"
+ " strlt r2, [r0], #4\n"
+ " blt zero_loop");
+
+ //
+ // Enable the floating-point unit. This must be done here to handle the
+ // case where main() uses floating-point and the function prologue saves
+ // floating-point registers (which will fault if floating-point is not
+ // enabled). Any configuration of the floating-point unit using DriverLib
+ // APIs must be done here prior to the floating-point unit being enabled.
+ //
+ // Note that this does not use DriverLib since it might not be included in
+ // this project.
+ //
+ HWREG(NVIC_CPAC) = ((HWREG(NVIC_CPAC) &
+ ~(NVIC_CPAC_CP10_M | NVIC_CPAC_CP11_M)) |
+ NVIC_CPAC_CP10_FULL | NVIC_CPAC_CP11_FULL);
+
+ //
+ // Call the application's entry point.
+ //
+ main();
+}
+
+//*****************************************************************************
+//
+// This is the code that gets called when the processor receives a NMI. This
+// simply enters an infinite loop, preserving the system state for examination
+// by a debugger.
+//
+//*****************************************************************************
+static void
+NmiSR(void)
+{
+ //
+ // Enter an infinite loop.
+ //
+ while(1)
+ {
+ }
+}
+
+//*****************************************************************************
+//
+// This is the code that gets called when the processor receives a fault
+// interrupt. This simply enters an infinite loop, preserving the system state
+// for examination by a debugger.
+//
+//*****************************************************************************
+static void
+FaultISR(void)
+{
+ //
+ // Enter an infinite loop.
+ //
+ while(1)
+ {
+ }
+}
+
+//*****************************************************************************
+//
+// This is the code that gets called when the processor receives an unexpected
+// interrupt. This simply enters an infinite loop, preserving the system state
+// for examination by a debugger.
+//
+//*****************************************************************************
+static void
+IntDefaultHandler(void)
+{
+ //
+ // Go into an infinite loop.
+ //
+ while(1)
+ {
+ }
+}
diff --git a/boards/ek-lm4f120xl-boost-capsense/capsense/startup_rvmdk.S b/boards/ek-lm4f120xl-boost-capsense/capsense/startup_rvmdk.S new file mode 100644 index 0000000..5de7fdc --- /dev/null +++ b/boards/ek-lm4f120xl-boost-capsense/capsense/startup_rvmdk.S @@ -0,0 +1,351 @@ +; <<< Use Configuration Wizard in Context Menu >>>
+;******************************************************************************
+;
+; startup_rvmdk.S - Startup code for use with Keil's uVision.
+;
+; Copyright (c) 2012 Texas Instruments Incorporated. All rights reserved.
+; Software License Agreement
+;
+; Texas Instruments (TI) is supplying this software for use solely and
+; exclusively on TI's microcontroller products. The software is owned by
+; TI and/or its suppliers, and is protected under applicable copyright
+; laws. You may not combine this software with "viral" open-source
+; software in order to form a larger program.
+;
+; THIS SOFTWARE IS PROVIDED "AS IS" AND WITH ALL FAULTS.
+; NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT
+; NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+; A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. TI SHALL NOT, UNDER ANY
+; CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR CONSEQUENTIAL
+; DAMAGES, FOR ANY REASON WHATSOEVER.
+;
+; This is part of revision 9453 of the EK-LM4F120XL Firmware Package.
+;
+;******************************************************************************
+
+;******************************************************************************
+;
+; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
+;
+;******************************************************************************
+Stack EQU 0x00000200
+
+;******************************************************************************
+;
+; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
+;
+;******************************************************************************
+Heap EQU 0x00000000
+
+;******************************************************************************
+;
+; Allocate space for the stack.
+;
+;******************************************************************************
+ AREA STACK, NOINIT, READWRITE, ALIGN=3
+StackMem
+ SPACE Stack
+__initial_sp
+
+;******************************************************************************
+;
+; Allocate space for the heap.
+;
+;******************************************************************************
+ AREA HEAP, NOINIT, READWRITE, ALIGN=3
+__heap_base
+HeapMem
+ SPACE Heap
+__heap_limit
+
+;******************************************************************************
+;
+; Indicate that the code in this file preserves 8-byte alignment of the stack.
+;
+;******************************************************************************
+ PRESERVE8
+
+;******************************************************************************
+;
+; Place code into the reset code section.
+;
+;******************************************************************************
+ AREA RESET, CODE, READONLY
+ THUMB
+
+;******************************************************************************
+;
+; The vector table.
+;
+;******************************************************************************
+ EXPORT __Vectors
+__Vectors
+ DCD StackMem + Stack ; Top of Stack
+ DCD Reset_Handler ; Reset Handler
+ DCD NmiSR ; NMI Handler
+ DCD FaultISR ; Hard Fault Handler
+ DCD IntDefaultHandler ; The MPU fault handler
+ DCD IntDefaultHandler ; The bus fault handler
+ DCD IntDefaultHandler ; The usage fault handler
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD IntDefaultHandler ; SVCall handler
+ DCD IntDefaultHandler ; Debug monitor handler
+ DCD 0 ; Reserved
+ DCD IntDefaultHandler ; The PendSV handler
+ DCD IntDefaultHandler ; The SysTick handler
+ DCD IntDefaultHandler ; GPIO Port A
+ DCD IntDefaultHandler ; GPIO Port B
+ DCD IntDefaultHandler ; GPIO Port C
+ DCD IntDefaultHandler ; GPIO Port D
+ DCD IntDefaultHandler ; GPIO Port E
+ DCD IntDefaultHandler ; UART0 Rx and Tx
+ DCD IntDefaultHandler ; UART1 Rx and Tx
+ DCD IntDefaultHandler ; SSI0 Rx and Tx
+ DCD IntDefaultHandler ; I2C0 Master and Slave
+ DCD IntDefaultHandler ; PWM Fault
+ DCD IntDefaultHandler ; PWM Generator 0
+ DCD IntDefaultHandler ; PWM Generator 1
+ DCD IntDefaultHandler ; PWM Generator 2
+ DCD IntDefaultHandler ; Quadrature Encoder 0
+ DCD IntDefaultHandler ; ADC Sequence 0
+ DCD IntDefaultHandler ; ADC Sequence 1
+ DCD IntDefaultHandler ; ADC Sequence 2
+ DCD IntDefaultHandler ; ADC Sequence 3
+ DCD IntDefaultHandler ; Watchdog timer
+ DCD IntDefaultHandler ; Timer 0 subtimer A
+ DCD IntDefaultHandler ; Timer 0 subtimer B
+ DCD IntDefaultHandler ; Timer 1 subtimer A
+ DCD IntDefaultHandler ; Timer 1 subtimer B
+ DCD IntDefaultHandler ; Timer 2 subtimer A
+ DCD IntDefaultHandler ; Timer 2 subtimer B
+ DCD IntDefaultHandler ; Analog Comparator 0
+ DCD IntDefaultHandler ; Analog Comparator 1
+ DCD IntDefaultHandler ; Analog Comparator 2
+ DCD IntDefaultHandler ; System Control (PLL, OSC, BO)
+ DCD IntDefaultHandler ; FLASH Control
+ DCD IntDefaultHandler ; GPIO Port F
+ DCD IntDefaultHandler ; GPIO Port G
+ DCD IntDefaultHandler ; GPIO Port H
+ DCD IntDefaultHandler ; UART2 Rx and Tx
+ DCD IntDefaultHandler ; SSI1 Rx and Tx
+ DCD IntDefaultHandler ; Timer 3 subtimer A
+ DCD IntDefaultHandler ; Timer 3 subtimer B
+ DCD IntDefaultHandler ; I2C1 Master and Slave
+ DCD IntDefaultHandler ; Quadrature Encoder 1
+ DCD IntDefaultHandler ; CAN0
+ DCD IntDefaultHandler ; CAN1
+ DCD IntDefaultHandler ; CAN2
+ DCD IntDefaultHandler ; Ethernet
+ DCD IntDefaultHandler ; Hibernate
+ DCD IntDefaultHandler ; USB0
+ DCD IntDefaultHandler ; PWM Generator 3
+ DCD IntDefaultHandler ; uDMA Software Transfer
+ DCD IntDefaultHandler ; uDMA Error
+ DCD IntDefaultHandler ; ADC1 Sequence 0
+ DCD IntDefaultHandler ; ADC1 Sequence 1
+ DCD IntDefaultHandler ; ADC1 Sequence 2
+ DCD IntDefaultHandler ; ADC1 Sequence 3
+ DCD IntDefaultHandler ; I2S0
+ DCD IntDefaultHandler ; External Bus Interface 0
+ DCD IntDefaultHandler ; GPIO Port J
+ DCD IntDefaultHandler ; GPIO Port K
+ DCD IntDefaultHandler ; GPIO Port L
+ DCD IntDefaultHandler ; SSI2 Rx and Tx
+ DCD IntDefaultHandler ; SSI3 Rx and Tx
+ DCD IntDefaultHandler ; UART3 Rx and Tx
+ DCD IntDefaultHandler ; UART4 Rx and Tx
+ DCD IntDefaultHandler ; UART5 Rx and Tx
+ DCD IntDefaultHandler ; UART6 Rx and Tx
+ DCD IntDefaultHandler ; UART7 Rx and Tx
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD IntDefaultHandler ; I2C2 Master and Slave
+ DCD IntDefaultHandler ; I2C3 Master and Slave
+ DCD IntDefaultHandler ; Timer 4 subtimer A
+ DCD IntDefaultHandler ; Timer 4 subtimer B
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD IntDefaultHandler ; Timer 5 subtimer A
+ DCD IntDefaultHandler ; Timer 5 subtimer B
+ DCD IntDefaultHandler ; Wide Timer 0 subtimer A
+ DCD IntDefaultHandler ; Wide Timer 0 subtimer B
+ DCD IntDefaultHandler ; Wide Timer 1 subtimer A
+ DCD IntDefaultHandler ; Wide Timer 1 subtimer B
+ DCD IntDefaultHandler ; Wide Timer 2 subtimer A
+ DCD IntDefaultHandler ; Wide Timer 2 subtimer B
+ DCD IntDefaultHandler ; Wide Timer 3 subtimer A
+ DCD IntDefaultHandler ; Wide Timer 3 subtimer B
+ DCD IntDefaultHandler ; Wide Timer 4 subtimer A
+ DCD IntDefaultHandler ; Wide Timer 4 subtimer B
+ DCD IntDefaultHandler ; Wide Timer 5 subtimer A
+ DCD IntDefaultHandler ; Wide Timer 5 subtimer B
+ DCD IntDefaultHandler ; FPU
+ DCD IntDefaultHandler ; PECI 0
+ DCD IntDefaultHandler ; LPC 0
+ DCD IntDefaultHandler ; I2C4 Master and Slave
+ DCD IntDefaultHandler ; I2C5 Master and Slave
+ DCD IntDefaultHandler ; GPIO Port M
+ DCD IntDefaultHandler ; GPIO Port N
+ DCD IntDefaultHandler ; Quadrature Encoder 2
+ DCD IntDefaultHandler ; Fan 0
+ DCD 0 ; Reserved
+ DCD IntDefaultHandler ; GPIO Port P (Summary or P0)
+ DCD IntDefaultHandler ; GPIO Port P1
+ DCD IntDefaultHandler ; GPIO Port P2
+ DCD IntDefaultHandler ; GPIO Port P3
+ DCD IntDefaultHandler ; GPIO Port P4
+ DCD IntDefaultHandler ; GPIO Port P5
+ DCD IntDefaultHandler ; GPIO Port P6
+ DCD IntDefaultHandler ; GPIO Port P7
+ DCD IntDefaultHandler ; GPIO Port Q (Summary or Q0)
+ DCD IntDefaultHandler ; GPIO Port Q1
+ DCD IntDefaultHandler ; GPIO Port Q2
+ DCD IntDefaultHandler ; GPIO Port Q3
+ DCD IntDefaultHandler ; GPIO Port Q4
+ DCD IntDefaultHandler ; GPIO Port Q5
+ DCD IntDefaultHandler ; GPIO Port Q6
+ DCD IntDefaultHandler ; GPIO Port Q7
+ DCD IntDefaultHandler ; GPIO Port R
+ DCD IntDefaultHandler ; GPIO Port S
+ DCD IntDefaultHandler ; PWM 1 Generator 0
+ DCD IntDefaultHandler ; PWM 1 Generator 1
+ DCD IntDefaultHandler ; PWM 1 Generator 2
+ DCD IntDefaultHandler ; PWM 1 Generator 3
+ DCD IntDefaultHandler ; PWM 1 Fault
+
+;******************************************************************************
+;
+; This is the code that gets called when the processor first starts execution
+; following a reset event.
+;
+;******************************************************************************
+ EXPORT Reset_Handler
+Reset_Handler
+ ;
+ ; Enable the floating-point unit. This must be done here to handle the
+ ; case where main() uses floating-point and the function prologue saves
+ ; floating-point registers (which will fault if floating-point is not
+ ; enabled). Any configuration of the floating-point unit using
+ ; DriverLib APIs must be done here prior to the floating-point unit
+ ; being enabled.
+ ;
+ ; Note that this does not use DriverLib since it might not be included
+ ; in this project.
+ ;
+ MOVW R0, #0xED88
+ MOVT R0, #0xE000
+ LDR R1, [R0]
+ ORR R1, #0x00F00000
+ STR R1, [R0]
+
+ ;
+ ; Call the C library enty point that handles startup. This will copy
+ ; the .data section initializers from flash to SRAM and zero fill the
+ ; .bss section.
+ ;
+ IMPORT __main
+ B __main
+
+;******************************************************************************
+;
+; This is the code that gets called when the processor receives a NMI. This
+; simply enters an infinite loop, preserving the system state for examination
+; by a debugger.
+;
+;******************************************************************************
+NmiSR
+ B NmiSR
+
+;******************************************************************************
+;
+; This is the code that gets called when the processor receives a fault
+; interrupt. This simply enters an infinite loop, preserving the system state
+; for examination by a debugger.
+;
+;******************************************************************************
+FaultISR
+ B FaultISR
+
+;******************************************************************************
+;
+; This is the code that gets called when the processor receives an unexpected
+; interrupt. This simply enters an infinite loop, preserving the system state
+; for examination by a debugger.
+;
+;******************************************************************************
+IntDefaultHandler
+ B IntDefaultHandler
+
+;******************************************************************************
+;
+; Make sure the end of this section is aligned.
+;
+;******************************************************************************
+ ALIGN
+
+;******************************************************************************
+;
+; Some code in the normal code section for initializing the heap and stack.
+;
+;******************************************************************************
+ AREA |.text|, CODE, READONLY
+
+;******************************************************************************
+;
+; The function expected of the C library startup code for defining the stack
+; and heap memory locations. For the C library version of the startup code,
+; provide this function so that the C library initialization code can find out
+; the location of the stack and heap.
+;
+;******************************************************************************
+ IF :DEF: __MICROLIB
+ EXPORT __initial_sp
+ EXPORT __heap_base
+ EXPORT __heap_limit
+ ELSE
+ IMPORT __use_two_region_memory
+ EXPORT __user_initial_stackheap
+__user_initial_stackheap
+ LDR R0, =HeapMem
+ LDR R1, =(StackMem + Stack)
+ LDR R2, =(HeapMem + Heap)
+ LDR R3, =StackMem
+ BX LR
+ ENDIF
+
+;******************************************************************************
+;
+; Make sure the end of this section is aligned.
+;
+;******************************************************************************
+ ALIGN
+
+;******************************************************************************
+;
+; Tell the assembler that we're done.
+;
+;******************************************************************************
+ END
diff --git a/boards/ek-lm4f120xl-boost-capsense/capsense/startup_sourcerygxx.S b/boards/ek-lm4f120xl-boost-capsense/capsense/startup_sourcerygxx.S new file mode 100644 index 0000000..b720839 --- /dev/null +++ b/boards/ek-lm4f120xl-boost-capsense/capsense/startup_sourcerygxx.S @@ -0,0 +1,75 @@ +//*****************************************************************************
+//
+// startup_sourcerygxx.S - Startup code for Sourcery CodeBench.
+//
+// Copyright (c) 2012 Texas Instruments Incorporated. All rights reserved.
+// Software License Agreement
+//
+// Texas Instruments (TI) is supplying this software for use solely and
+// exclusively on TI's microcontroller products. The software is owned by
+// TI and/or its suppliers, and is protected under applicable copyright
+// laws. You may not combine this software with "viral" open-source
+// software in order to form a larger program.
+//
+// THIS SOFTWARE IS PROVIDED "AS IS" AND WITH ALL FAULTS.
+// NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT
+// NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. TI SHALL NOT, UNDER ANY
+// CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR CONSEQUENTIAL
+// DAMAGES, FOR ANY REASON WHATSOEVER.
+//
+// This is part of revision 9453 of the EK-LM4F120XL Firmware Package.
+//
+//*****************************************************************************
+
+ .syntax unified
+ .thumb
+
+//*****************************************************************************
+//
+// Place this code into the .cs3.reset section so that it can be executed prior
+// to the startup code in Sourcery CodeBench.
+//
+//*****************************************************************************
+ .section .cs3.reset,"x"
+
+//*****************************************************************************
+//
+// The reset handler, which overrides the one provided by CS3.
+//
+//*****************************************************************************
+ .globl __cs3_reset
+ .thumb_func
+__cs3_reset:
+ //
+ // Enable the floating-point unit. This must be done here to handle the
+ // case where main() uses floating-point and the function prologue saves
+ // floating-point registers (which will fault if floating-point is not
+ // enabled). Any configuration of the floating-point unit using DriverLib
+ // APIs must be done here prior to the floating-point unit being enabled.
+ //
+ // Note that this does not use DriverLib since it might not be included in
+ // this project.
+ //
+ movw r0, #0xed88
+ movt r0, #0xe000
+ ldr r1, [r0]
+ orr r1, #0x00f00000
+ str r1, [r0]
+
+ //
+ // Branch to the normal CS3 startup code.
+ //
+ .extern __cs3_reset_ekc_lm4f232
+ ldr r0, =__cs3_reset_ekc_lm4f232
+ bx r0
+
+ //
+ // Place the literal pool here.
+ //
+ .ltorg
+
+ //
+ // The end of the file.
+ //
+ .end
diff --git a/boards/ek-lm4f120xl-boost-capsense/drivers/CTS_HAL.c b/boards/ek-lm4f120xl-boost-capsense/drivers/CTS_HAL.c new file mode 100644 index 0000000..5ad0720 --- /dev/null +++ b/boards/ek-lm4f120xl-boost-capsense/drivers/CTS_HAL.c @@ -0,0 +1,140 @@ +//*****************************************************************************
+//
+// CTS_HAL.c - Capacative Sense Library Hardware Abstraction Layer.
+//
+// Copyright (c) 2012 Texas Instruments Incorporated. All rights reserved.
+// Software License Agreement
+//
+// Texas Instruments (TI) is supplying this software for use solely and
+// exclusively on TI's microcontroller products. The software is owned by
+// TI and/or its suppliers, and is protected under applicable copyright
+// laws. You may not combine this software with "viral" open-source
+// software in order to form a larger program.
+//
+// THIS SOFTWARE IS PROVIDED "AS IS" AND WITH ALL FAULTS.
+// NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT
+// NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. TI SHALL NOT, UNDER ANY
+// CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR CONSEQUENTIAL
+// DAMAGES, FOR ANY REASON WHATSOEVER.
+//
+// This is part of revision 9453 of the EK-LM4F120XL Firmware Package.
+//
+//*****************************************************************************
+
+#include "inc/hw_types.h"
+#include "inc/hw_gpio.h"
+#include "inc/hw_memmap.h"
+#include "inc/hw_nvic.h"
+#include "drivers/CTS_structure.h"
+#include "drivers/CTS_HAL.h"
+
+//*****************************************************************************
+//
+// Function to get a capacitance reading from a single-pin RC-based capacitive
+// sensor. This function assumes that the capacitive sensor is charged by a
+// GPIO, and then discharged through a resistor to GND. The same GPIO used to
+// perform the charging will be used as an input during discharge to sense when
+// the capacitor's voltage has decreased to at least VIL. The function will
+// execute several cycles of this, and report how long the process took in
+// units of SysTick counts. This count should be proportional to the current
+// capacitance of the sensor, and the resistance of the discharge resistor.
+//
+//*****************************************************************************
+void
+CapSenseSystickRC(const tSensor *group, unsigned long *counts)
+{
+ unsigned char ucIndex;
+
+ //
+ // Run an RC based capacitance measurement routine on each element in the
+ // sensor array.
+ //
+ for(ucIndex = 0; ucIndex < (group->ucNumElements); ucIndex++)
+ {
+ //
+ // Reset Systick to zero (probably not necessary for most cases, but we
+ // want to make sure that Systick doesn't roll over.)
+ //
+ HWREG(NVIC_ST_CURRENT) = 0x0;
+
+ //
+ // Grab a count number from the capacitive sensor element.
+ //
+ counts[ucIndex] =
+ CapSenseElementSystickRC(group->Element[ucIndex]->ulGPIOPort,
+ group->Element[ucIndex]->ulGPIOPin,
+ group->ulNumSamples);
+
+ }
+}
+
+//*****************************************************************************
+//
+//
+//
+//
+//*****************************************************************************
+unsigned long
+CapSenseElementSystickRC(unsigned long ulGPIOPort, unsigned long ulGPIOPin,
+ unsigned long ulNumSamples)
+{
+ volatile unsigned long ulStartTime;
+ volatile unsigned long ulEndTime;
+ unsigned long ulIndex;
+ unsigned long ulGPIODataReg;
+ unsigned long ulGPIODirReg;
+
+ //
+ // Save off our GPIO information.
+ //
+ ulGPIODataReg = (ulGPIOPort + (GPIO_O_DATA + (ulGPIOPin << 2)));
+ ulGPIODirReg = ulGPIOPort + GPIO_O_DIR;
+
+ //
+ // Grab the time
+ //
+ ulStartTime = HWREG(NVIC_ST_CURRENT);
+
+ //
+ // Loop until we have the requisite number of samples.
+ //
+ for(ulIndex = 0; ulIndex < ulNumSamples; ulIndex++)
+ {
+ //
+ // Drive up.
+ //
+ //GPIOPinWrite(ulGPIOPort, ulGPIOPin, ulGPIOPin);
+ HWREG(ulGPIODataReg) = 0xFF;
+
+ //
+ // Configure as input
+ //
+ //GPIOPinTypeGPIOInput(ulGPIOPort, ulGPIOPin);
+ HWREG(ulGPIODirReg) = (HWREG(ulGPIODirReg) & ~(ulGPIOPin));
+
+ //
+ // Wait until the capacitor drains away to ground
+ //
+ //while(GPIOPinRead(ulGPIOPort, ulGPIOPin))
+ while(HWREG(ulGPIODataReg))
+ {
+ }
+
+ //
+ // Configure as an output.
+ //
+ //GPIOPinTypeGPIOOutput(ulGPIOPort, ulGPIOPin);
+ HWREG(ulGPIODirReg) = (HWREG(ulGPIODirReg) | ulGPIOPin);
+ }
+
+ //
+ // Grab the time, and calculate the difference
+ //
+ ulEndTime = HWREG(NVIC_ST_CURRENT);
+
+ //
+ // Return the time difference
+ //
+ return(ulStartTime - ulEndTime);
+}
diff --git a/boards/ek-lm4f120xl-boost-capsense/drivers/CTS_HAL.h b/boards/ek-lm4f120xl-boost-capsense/drivers/CTS_HAL.h new file mode 100644 index 0000000..40ba534 --- /dev/null +++ b/boards/ek-lm4f120xl-boost-capsense/drivers/CTS_HAL.h @@ -0,0 +1,34 @@ +//*****************************************************************************
+//
+// CTS_HAL.h - Capacative Sense HAL Header file definitions.
+//
+// Copyright (c) 2012 Texas Instruments Incorporated. All rights reserved.
+// Software License Agreement
+//
+// Texas Instruments (TI) is supplying this software for use solely and
+// exclusively on TI's microcontroller products. The software is owned by
+// TI and/or its suppliers, and is protected under applicable copyright
+// laws. You may not combine this software with "viral" open-source
+// software in order to form a larger program.
+//
+// THIS SOFTWARE IS PROVIDED "AS IS" AND WITH ALL FAULTS.
+// NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT
+// NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. TI SHALL NOT, UNDER ANY
+// CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR CONSEQUENTIAL
+// DAMAGES, FOR ANY REASON WHATSOEVER.
+//
+// This is part of revision 9453 of the EK-LM4F120XL Firmware Package.
+//
+//*****************************************************************************
+
+#ifndef __CTS_HAL_H__
+#define __CTS_HAL_H__
+
+extern void CapSenseSystickRC(const tSensor *group, unsigned long *counts);
+
+extern unsigned long CapSenseElementSystickRC(unsigned long ulGPIOPort,
+ unsigned long ulGPIOPin,
+ unsigned long ulNumSamples);
+
+#endif // __CTS_HAL_H__
diff --git a/boards/ek-lm4f120xl-boost-capsense/drivers/CTS_Layer.c b/boards/ek-lm4f120xl-boost-capsense/drivers/CTS_Layer.c new file mode 100644 index 0000000..c16a0fd --- /dev/null +++ b/boards/ek-lm4f120xl-boost-capsense/drivers/CTS_Layer.c @@ -0,0 +1,663 @@ +//*****************************************************************************
+//
+// CTS_HAL.c - Capacative Sense Library Hardware Abstraction Layer.
+//
+// Copyright (c) 2012 Texas Instruments Incorporated. All rights reserved.
+// Software License Agreement
+//
+// Texas Instruments (TI) is supplying this software for use solely and
+// exclusively on TI's microcontroller products. The software is owned by
+// TI and/or its suppliers, and is protected under applicable copyright
+// laws. You may not combine this software with "viral" open-source
+// software in order to form a larger program.
+//
+// THIS SOFTWARE IS PROVIDED "AS IS" AND WITH ALL FAULTS.
+// NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT
+// NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. TI SHALL NOT, UNDER ANY
+// CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR CONSEQUENTIAL
+// DAMAGES, FOR ANY REASON WHATSOEVER.
+//
+// This is part of revision 9453 of the EK-LM4F120XL Firmware Package.
+//
+//*****************************************************************************
+
+#include "drivers/CTS_structure.h"
+#include "drivers/CTS_Layer.h"
+#define RAM_FOR_FLASH
+
+// Global variables for sensing
+#ifdef TOTAL_NUMBER_OF_ELEMENTS
+unsigned long baseCnt[TOTAL_NUMBER_OF_ELEMENTS];
+#ifdef RAM_FOR_FLASH
+unsigned long measCnt[MAXIMUM_NUMBER_OF_ELEMENTS_PER_SENSOR];
+#endif
+unsigned long ctsStatusReg = (DOI_INC+TRADOI_FAST+TRIDOI_SLOW);
+#endif
+
+//*****************************************************************************
+//
+//! \addtogroup CTS_API
+//! @{
+//
+//*****************************************************************************
+
+
+//*****************************************************************************
+//
+//! Measure the capacitance of each element within the Sensor
+//!
+//! \param groupOfElements Pointer to Sensor structure to be measured
+//!
+//! \param counts Address to where the measurements are to be written
+//!
+//! This function selects the appropriate HAL to perform the capacitance
+//! measurement based upon the halDefinition found in the sensor structure.
+//! The order of the elements within the Sensor structure is arbitrary but must
+//! be consistent between the application and configuration. The first element
+//! in the array (counts) corresponds to the first element within the Sensor
+//! structure.
+//!
+//! \return None.
+//
+//*****************************************************************************
+void
+TI_CAPT_Raw(const tSensor* groupOfElements, unsigned long * counts)
+{
+ CapSenseSystickRC(groupOfElements, counts);
+}
+
+#ifdef TOTAL_NUMBER_OF_ELEMENTS
+
+
+//*****************************************************************************
+//
+//! Make a single capacitance meausrment to initialize baseline tracking
+//!
+//! \param groupOfElements Pointer to Sensor structure to be measured
+//!
+//! \return none
+//
+//*****************************************************************************
+void
+TI_CAPT_Init_Baseline(const tSensor* groupOfElements)
+{
+ TI_CAPT_Raw(groupOfElements, &baseCnt[groupOfElements->ulBaseOffset]);
+}
+
+//*****************************************************************************
+//
+//! Update baseline tracking by averaging several measurements
+//!
+//! \param groupOfElements Pointer to Sensor structure to be measured
+//!
+//! \param numberOfAverages Number of measurements to be averaged
+//!
+//! \return none
+//
+//*****************************************************************************
+void
+TI_CAPT_Update_Baseline(const tSensor* groupOfElements, unsigned char numberOfAverages)
+{
+ unsigned char i,j;
+ #ifndef RAM_FOR_FLASH
+ unsigned long *measCnt;
+ measCnt = (unsigned long *)malloc(groupOfElements->ucNumElements * sizeof(unsigned long));
+ if(measCnt ==0)
+ {
+ while(1);
+ }
+ #endif
+ for(j=0; j < numberOfAverages; j++)
+ {
+ for(i=0; i < groupOfElements->ucNumElements; i++)
+ {
+ TI_CAPT_Raw(groupOfElements, measCnt);
+ baseCnt[i+groupOfElements->ulBaseOffset] = measCnt[i]/2 + baseCnt[i+groupOfElements->ulBaseOffset]/2;
+ }
+ }
+ #ifndef RAM_FOR_FLASH
+ free(measCnt);
+ #endif
+}
+
+//*****************************************************************************
+//! Reset the Baseline Tracking algorithm to the default state
+//!
+//! \return none
+//
+//*****************************************************************************
+void
+TI_CAPT_Reset_Tracking(void)
+{
+ ctsStatusReg = (DOI_INC+TRADOI_FAST+TRIDOI_SLOW);
+}
+
+//*****************************************************************************
+//
+//! Update the Baseline Tracking algorithm Direction of Interest
+//!
+//! \param direction Direction of increasing or decreasing capacitance
+//!
+//! \return none
+//
+//*****************************************************************************
+void
+TI_CAPT_Update_Tracking_DOI(unsigned char direction)
+{
+ if(direction)
+ {
+ ctsStatusReg |= DOI_INC;
+ }
+ else
+ {
+ ctsStatusReg &= ~DOI_INC;
+ }
+}
+
+//*****************************************************************************
+//
+//! Update the baseling tracking algorithm tracking rates
+//!
+//! \param rate Rate of tracking changes in and against direction of intrest
+//!
+//! \return none
+//
+//*****************************************************************************
+void
+TI_CAPT_Update_Tracking_Rate(unsigned char rate)
+{
+ ctsStatusReg &= ~(TRIDOI_FAST+TRADOI_VSLOW); // clear fields
+ ctsStatusReg |= (rate & 0xF0); // update fields
+}
+
+//*****************************************************************************
+//
+//! Measure the change in capacitance of the Sensor
+//!
+//! \param groupOfElements Pointer to Sensor structure to be measured
+//!
+//! \param deltaCnt Address to where the measurements are to be written
+//!
+//! This function measures the change in capacitance of each element within a
+//! sensor and updates the baseline tracking in the event that no change
+//! exceeds the detection threshold. The order of the elements within the
+//! Sensor structure is arbitrary but must be consistent between the
+//! application and configuration. The first element in the array (deltaCnt)
+//! corresponds to the first element within the Sensor structure.
+//!
+//! \return none
+//
+//*****************************************************************************
+void
+TI_CAPT_Custom(const tSensor* groupOfElements, unsigned long * deltaCnt)
+{
+ unsigned char j;
+ unsigned long tempCnt;
+ ctsStatusReg &= ~ EVNT;
+
+ // This section calculates the delta counts*************************************
+ //******************************************************************************
+ TI_CAPT_Raw(groupOfElements, &deltaCnt[0]); // measure group of sensors
+
+ for (j = 0; j < (groupOfElements->ucNumElements); j++)
+ {
+ tempCnt = deltaCnt[j];
+ if((!(ctsStatusReg & DOI_MASK)))
+ {
+ // RO method, interested in an increase in capacitance
+ if(baseCnt[j+groupOfElements->ulBaseOffset] < deltaCnt[j])
+ {
+ // If capacitance decreases, then measCnt is greater than base
+ // , set delta to zero
+ deltaCnt[j] = 0;
+ // Limit the change in the opposite direction to the threshold
+ if(((groupOfElements->Element[j])->ulThreshold)
+ &&
+ (baseCnt[j+groupOfElements->ulBaseOffset]+(groupOfElements->Element[j])->ulThreshold < tempCnt))
+ {
+ tempCnt = baseCnt[j+groupOfElements->ulBaseOffset]+(groupOfElements->Element[j])->ulThreshold;
+ }
+ }
+ else
+ {
+ // change occuring in our DOI, save result
+ deltaCnt[j] = baseCnt[j+groupOfElements->ulBaseOffset]-deltaCnt[j];
+ }
+ }
+ if(((ctsStatusReg & DOI_MASK)))
+ {
+ // RO method: interested in a decrease in capactiance
+ // measCnt is greater than baseCnt
+ if(baseCnt[j+groupOfElements->ulBaseOffset] > deltaCnt[j])
+ {
+ // If capacitance increases, set delta to zero
+ deltaCnt[j] = 0;
+ // Limit the change in the opposite direction to the threshold
+ if(((groupOfElements->Element[j])->ulThreshold)
+ &&
+ (baseCnt[j+groupOfElements->ulBaseOffset] > tempCnt+(groupOfElements->Element[j])->ulThreshold))
+ {
+ tempCnt = baseCnt[j+groupOfElements->ulBaseOffset]-(groupOfElements->Element[j])->ulThreshold;
+ }
+ }
+ else
+ {
+ // change occuring in our DOI
+ deltaCnt[j] = deltaCnt[j] - baseCnt[j+groupOfElements->ulBaseOffset];
+ }
+ }
+
+ // This section updates the baseline capacitance****************************
+ //**************************************************************************
+ if (deltaCnt[j]==0)
+ { // if delta counts is 0, then the change in capacitance was opposite the
+ // direction of interest. The baseCnt[i] is updated with the saved
+ // measCnt value for the current index value 'i'.
+ switch ((ctsStatusReg & TRADOI_VSLOW))
+ {
+ case TRADOI_FAST://Fast
+ tempCnt = tempCnt/2;
+ baseCnt[j+groupOfElements->ulBaseOffset] = (baseCnt[j+groupOfElements->ulBaseOffset]/2);
+ break;
+ case TRADOI_MED://Medium
+ tempCnt = tempCnt/4;
+ baseCnt[j+groupOfElements->ulBaseOffset] = 3*(baseCnt[j+groupOfElements->ulBaseOffset]/4);
+ break;
+ case TRADOI_SLOW://slow
+ tempCnt = tempCnt/64;
+ baseCnt[j+groupOfElements->ulBaseOffset] = 63*(baseCnt[j+groupOfElements->ulBaseOffset]/64);
+ break;
+ case TRADOI_VSLOW://very slow
+ tempCnt = tempCnt/128;
+ baseCnt[j+groupOfElements->ulBaseOffset] = 127*(baseCnt[j+groupOfElements->ulBaseOffset]/128);
+ break;
+ }
+ // set X, Y & Z, then perform calculation for baseline tracking:
+ // Base_Capacitance = X*(Measured_Capacitance/Z) + Y*(Base_Capacitance/Z)
+ baseCnt[j+groupOfElements->ulBaseOffset] = (tempCnt)+(baseCnt[j+groupOfElements->ulBaseOffset]);
+ }
+ // delta counts are either 0, less than threshold, or greater than threshold
+ // never negative
+ else if(deltaCnt[j]<(groupOfElements->Element[j])->ulThreshold && !(ctsStatusReg & PAST_EVNT))
+ { //if delta counts is positive but less than threshold,
+ switch ((ctsStatusReg & TRIDOI_FAST))
+ {
+ case TRIDOI_VSLOW://very slow
+ if(deltaCnt[j] > 15)
+ {
+ if(tempCnt < baseCnt[j+groupOfElements->ulBaseOffset])
+ {
+ baseCnt[j+groupOfElements->ulBaseOffset] = baseCnt[j+groupOfElements->ulBaseOffset] - 1;
+ }
+ else
+ {
+ baseCnt[j+groupOfElements->ulBaseOffset] = baseCnt[j+groupOfElements->ulBaseOffset] + 1;
+ }
+ }
+ tempCnt = 0;
+ break;
+ case TRIDOI_SLOW://slow
+ if(tempCnt < baseCnt[j+groupOfElements->ulBaseOffset])
+ {
+ baseCnt[j+groupOfElements->ulBaseOffset] = baseCnt[j+groupOfElements->ulBaseOffset] - 1;
+ }
+ else
+ {
+ baseCnt[j+groupOfElements->ulBaseOffset] = baseCnt[j+groupOfElements->ulBaseOffset] + 1;
+ }
+ tempCnt = 0;
+ break;
+ case TRIDOI_MED://medium
+ tempCnt = tempCnt/4;
+ baseCnt[j+groupOfElements->ulBaseOffset] = 3*(baseCnt[j+groupOfElements->ulBaseOffset]/4);
+ break;
+ case TRIDOI_FAST://fast
+ tempCnt = tempCnt/2;
+ baseCnt[j+groupOfElements->ulBaseOffset] = (baseCnt[j+groupOfElements->ulBaseOffset]/2);
+ break;
+ }
+ // set X, Y & Z, then perform calculation for baseline tracking:
+ // Base_Capacitance = X*(Measured_Capacitance/Z) + Y*(Base_Capacitance/Z)
+ baseCnt[j+groupOfElements->ulBaseOffset] = (tempCnt)+(baseCnt[j+groupOfElements->ulBaseOffset]);
+ }
+ //if delta counts above the threshold, event has occurred
+ else if(deltaCnt[j]>=(groupOfElements->Element[j])->ulThreshold)
+ {
+ ctsStatusReg |= EVNT;
+ ctsStatusReg |= PAST_EVNT;
+ }
+ }// end of for-loop
+ if(!(ctsStatusReg & EVNT))
+ {
+ ctsStatusReg &= ~PAST_EVNT;
+ }
+}
+
+//*****************************************************************************
+//
+//! Determine if a button is being pressed
+//!
+//! \param groupOfElements Pointer to button to be scanned
+//!
+//! \return result Indication if button is (1) or is not (0) being pressed
+//!
+//
+//*****************************************************************************
+unsigned char
+TI_CAPT_Button(const tSensor * groupOfElements)
+{
+ unsigned char result = 0;
+
+ #ifndef RAM_FOR_FLASH
+ unsigned long *measCnt;
+ measCnt = (unsigned long *)malloc(groupOfElements->ucNumElements * sizeof(unsigned long));
+ if(measCnt ==0)
+ {
+ while(1);
+ }
+ #endif
+
+ TI_CAPT_Custom(groupOfElements, measCnt);
+ #ifndef RAM_FOR_FLASH
+ free(measCnt);
+ #endif
+ if(ctsStatusReg & EVNT)
+ {
+ result = 1;
+ }
+ return result;
+}
+
+//*****************************************************************************
+//
+//! \brief Determine which button if any is being pressed
+//!
+//! \param groupOfElements Pointer to buttons to be scanned
+//!
+//! \return result pointer to element (button) being pressed or 0 none
+//
+//*****************************************************************************
+const tCapTouchElement *
+TI_CAPT_Buttons(const tSensor *groupOfElements)
+{
+ unsigned char index;
+ #ifndef RAM_FOR_FLASH
+ unsigned long *measCnt;
+ measCnt = (unsigned long *)malloc(groupOfElements->ucNumElements * sizeof(unsigned long));
+ if(measCnt ==0)
+ {
+ while(1);
+ }
+ #endif
+ TI_CAPT_Custom(groupOfElements, measCnt);
+
+ if(ctsStatusReg & EVNT)
+ {
+ index = Dominant_Element(groupOfElements, measCnt);
+ //ctsStatusReg &= ~EVNT;
+ index++;
+ }
+ else
+ {
+ index = 0;
+ }
+ #ifndef RAM_FOR_FLASH
+ free(measCnt);
+ #endif
+ if(index)
+ {
+ return groupOfElements->Element[index-1];
+ }
+ return 0;
+}
+
+#ifdef SLIDER
+//*****************************************************************************
+//
+//! Determine the position on a slider
+//
+//! \param groupOfElements Pointer to slider
+//
+//! \return result position on slider or illegal value if no touch
+//
+//*****************************************************************************
+unsigned long
+TI_CAPT_Slider(const tSensor* groupOfElements)
+{
+ unsigned char index;
+ signed long position;
+ // allocate memory for measurement
+ #ifndef RAM_FOR_FLASH
+ unsigned long *measCnt;
+ measCnt = (unsigned long *)malloc(groupOfElements->ucNumElements * sizeof(unsigned long));
+ if(measCnt ==0)
+ {
+ while(1);
+ }
+ #endif
+ position = ILLEGAL_SLIDER_WHEEL_POSITION;
+ //make measurement
+ TI_CAPT_Custom(groupOfElements, measCnt);
+
+ // Use EVNT flag to determine if slider was touched.
+ // The EVNT flag is a global variable and managed within the TI_CAPT_Custom function.
+ if(ctsStatusReg & EVNT)
+ {
+ index = Dominant_Element(groupOfElements, &measCnt[0]);
+ // The index represents the element within the array with the highest return.
+ if(index == 0)
+ {
+ // Special case of 1st element in slider, add 1st, last, and 2nd
+ position = measCnt[0] + measCnt[1];
+ }
+ else if(index == (groupOfElements->ucNumElements -1))
+ {
+ // Special case of Last element in slider, add last, 1st, and 2nd to last
+ position = measCnt[groupOfElements->ucNumElements -1] + measCnt[groupOfElements->ucNumElements -2];
+ }
+ else
+ {
+ position = measCnt[index] + measCnt[index+1] + measCnt[index-1];
+ }
+ // Determine if sensor threshold criteria is met
+ if(position > groupOfElements->ulSensorThreshold)
+ {
+ // calculate position
+ position = index*(groupOfElements->ucPoints/groupOfElements->ucNumElements);
+ position += (groupOfElements->ucPoints/groupOfElements->ucNumElements)/2;
+ if(index == 0)
+ {
+ // Special case of 1st element in slider, which only has one
+ // neighbor, measCnt[1]. measCnt is limited to ulMaxResponse
+ // within dominantElement function
+ if(measCnt[1])
+ {
+ position += (measCnt[1]*(groupOfElements->ucPoints/groupOfElements->ucNumElements))/100;
+ }
+ else
+ {
+ position = (measCnt[0]*(groupOfElements->ucPoints/groupOfElements->ucNumElements)/2)/100;
+ }
+ }
+ else if(index == (groupOfElements->ucNumElements -1))
+ {
+ // Special case of Last element in slider, which only has one
+ // neighbor, measCnt[x-1] or measCnt[ucNumElements-1]
+ if(measCnt[index-1])
+ {
+ position -= (measCnt[index-1]*(groupOfElements->ucPoints/groupOfElements->ucNumElements))/100;
+ }
+ else
+ {
+ position = groupOfElements->ucPoints;
+ position -= (measCnt[index]*(groupOfElements->ucPoints/groupOfElements->ucNumElements)/2)/100;
+ }
+ }
+ else
+ {
+ position += (measCnt[index+1]*(groupOfElements->ucPoints/groupOfElements->ucNumElements))/100;
+ position -= (measCnt[index-1]*(groupOfElements->ucPoints/groupOfElements->ucNumElements))/100;
+ }
+ if((position > groupOfElements->ucPoints) || (position < 0))
+ {
+ position = ILLEGAL_SLIDER_WHEEL_POSITION;
+ }
+ }
+ else
+ {
+ position = ILLEGAL_SLIDER_WHEEL_POSITION;
+ }
+ }
+ #ifndef RAM_FOR_FLASH
+ free(measCnt);
+ #endif
+ return position;
+}
+#endif
+
+#ifdef WHEEL
+//*****************************************************************************
+//
+//! Determine the position on a wheel
+//
+//! \param groupOfElements Pointer to wheel
+//
+//! \return result position on wheel or illegal value if no touch
+//
+//*****************************************************************************
+unsigned long
+TI_CAPT_Wheel(const tSensor* groupOfElements)
+{
+ unsigned char index;
+ signed long position;
+ // allocate memory for measurement
+ #ifndef RAM_FOR_FLASH
+ unsigned long *measCnt;
+ measCnt = (unsigned long *)malloc(groupOfElements->ucNumElements * sizeof(unsigned long));
+ if(measCnt ==0)
+ {
+ while(1);
+ }
+ #endif
+ position = ILLEGAL_SLIDER_WHEEL_POSITION;
+ //make measurement
+ TI_CAPT_Custom(groupOfElements, measCnt);
+ // Translate the EVNT flag from an element level EVNT to a sensor level EVNT.
+ // The sensor must read at least 75% cumulative response before indicating a
+ // touch.
+ if(ctsStatusReg & EVNT)
+ {
+ index = Dominant_Element(groupOfElements, &measCnt[0]);
+ // The index represents the element within the array with the highest return.
+ //
+ if(index == 0)
+ {
+ // Special case of 1st element in slider, add 1st, last, and 2nd
+ position = measCnt[0] + measCnt[groupOfElements->ucNumElements -1] + measCnt[1];
+ }
+ else if(index == (groupOfElements->ucNumElements -1))
+ {
+ // Special case of Last element in slider, add last, 1st, and 2nd to last
+ position = measCnt[index] + measCnt[0] + measCnt[index-1];
+ }
+ else
+ {
+ position = measCnt[index] + measCnt[index+1] + measCnt[index-1];
+ }
+ if(position > groupOfElements->ulSensorThreshold)
+ {
+ //index = Dominant_Element(groupOfElements, &measCnt[0]);
+ // The index represents the element within the array with the highest return.
+ //
+ position = index*(groupOfElements->ucPoints/groupOfElements->ucNumElements);
+ position += (groupOfElements->ucPoints/groupOfElements->ucNumElements)/2;
+ if(index == 0)
+ {
+ // Special case of 1st element in slider, which only has one neighbor, measCnt[1]
+ // measCnt is limited to ulMaxResponse within dominantElement function
+ position += (measCnt[1]*(groupOfElements->ucPoints/groupOfElements->ucNumElements))/100;
+ position -= (measCnt[groupOfElements->ucNumElements -1]*(groupOfElements->ucPoints/groupOfElements->ucNumElements))/100;
+ if(position < 0)
+ {
+ position = position + (unsigned long)groupOfElements->ucPoints;
+ }
+ }
+ else if(index == (groupOfElements->ucNumElements -1))
+ {
+ // Special case of Last element in slider, which only has one neighbor, measCnt[x-1] or measCnt[ucNumElements-1]
+ // measCnt is limited to ulMaxResponse within dominantElement function
+ position += (measCnt[0]*(groupOfElements->ucPoints/groupOfElements->ucNumElements))/100;
+ position -= (measCnt[index-1]*(groupOfElements->ucPoints/groupOfElements->ucNumElements))/100;
+ if(position > (groupOfElements->ucPoints -1))
+ {
+ position = position - (unsigned long)groupOfElements->ucPoints;
+ }
+ }
+ else
+ {
+ position += (measCnt[index+1]*(groupOfElements->ucPoints/groupOfElements->ucNumElements))/100;
+ position -= (measCnt[index-1]*(groupOfElements->ucPoints/groupOfElements->ucNumElements))/100;
+ }
+ if((position > groupOfElements->ucPoints) || position < 0)
+ {
+ position = ILLEGAL_SLIDER_WHEEL_POSITION;
+ }
+ }
+ else
+ {
+ position = ILLEGAL_SLIDER_WHEEL_POSITION;
+ }
+ }
+ #ifndef RAM_FOR_FLASH
+ free(measCnt);
+ #endif
+ return position;
+}
+#endif
+
+//*****************************************************************************
+//
+// Close the Doxygen group.
+//! @}
+//
+//*****************************************************************************
+
+
+//*****************************************************************************
+//
+//
+//*****************************************************************************
+unsigned char
+Dominant_Element(const tSensor* groupOfElements, unsigned long* deltaCnt)
+{
+ unsigned char i;
+ unsigned long percentDelta=0;
+ unsigned char dominantElement=0;
+ for(i=0;i<groupOfElements->ucNumElements;i++)
+ {
+ if(deltaCnt[i]>=(groupOfElements->Element[i])->ulThreshold)
+ {
+ if(deltaCnt[i] > ((groupOfElements->Element[i])->ulMaxResponse))
+ {
+ deltaCnt[i] = (groupOfElements->Element[i])->ulMaxResponse;
+ // limit response to the maximum
+ }
+ // (ulMaxResponse - threshold) cannot exceed 655
+ // 100*(delta - threshold) / (ulMaxResponse - threshold)
+ deltaCnt[i] = (100*(deltaCnt[i]-(groupOfElements->Element[i])->ulThreshold))/((groupOfElements->Element[i])->ulMaxResponse - (groupOfElements->Element[i])->ulThreshold);
+ if(deltaCnt[i] > percentDelta)
+ {
+ //update percentDelta
+ percentDelta = deltaCnt[i];
+ dominantElement = i;
+ }
+ }
+ else
+ {
+ deltaCnt[i] = 0;
+ }
+ } // end for loop
+ return dominantElement;
+}
+#endif
diff --git a/boards/ek-lm4f120xl-boost-capsense/drivers/CTS_Layer.h b/boards/ek-lm4f120xl-boost-capsense/drivers/CTS_Layer.h new file mode 100644 index 0000000..51f54ae --- /dev/null +++ b/boards/ek-lm4f120xl-boost-capsense/drivers/CTS_Layer.h @@ -0,0 +1,64 @@ +//*****************************************************************************
+//
+// CTS_Layer.h - Capacative Sense API Layer Header file definitions.
+//
+// Copyright (c) 2012 Texas Instruments Incorporated. All rights reserved.
+// Software License Agreement
+//
+// Texas Instruments (TI) is supplying this software for use solely and
+// exclusively on TI's microcontroller products. The software is owned by
+// TI and/or its suppliers, and is protected under applicable copyright
+// laws. You may not combine this software with "viral" open-source
+// software in order to form a larger program.
+//
+// THIS SOFTWARE IS PROVIDED "AS IS" AND WITH ALL FAULTS.
+// NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT
+// NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. TI SHALL NOT, UNDER ANY
+// CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR CONSEQUENTIAL
+// DAMAGES, FOR ANY REASON WHATSOEVER.
+//
+// This is part of revision 9453 of the EK-LM4F120XL Firmware Package.
+//
+//*****************************************************************************
+
+#ifndef __CTS_LAYER_H__
+#define __CTS_LAYER_H__
+
+#define EVNT 0x01
+#define DOI_MASK 0x02
+#define DOI_INC 0x02
+#define DOI_DEC 0x00
+#define PAST_EVNT 0x04
+#define TRIDOI_VSLOW 0x00
+#define TRIDOI_SLOW 0x10
+#define TRIDOI_MED 0x20
+#define TRIDOI_FAST 0x30
+#define TRADOI_FAST 0x00
+#define TRADOI_MED 0x40
+#define TRADOI_SLOW 0x80
+#define TRADOI_VSLOW 0xC0
+
+
+
+// API Calls
+void TI_CAPT_Init_Baseline(const tSensor*);
+void TI_CAPT_Update_Baseline(const tSensor*, unsigned char);
+
+void TI_CAPT_Reset_Tracking(void);
+void TI_CAPT_Update_Tracking_DOI(unsigned char);
+void TI_CAPT_Update_Tracking_Rate(unsigned char);
+
+void TI_CAPT_Raw(const tSensor*, unsigned long*);
+
+void TI_CAPT_Custom(const tSensor *, unsigned long*);
+
+unsigned char TI_CAPT_Button(const tSensor *);
+const tCapTouchElement * TI_CAPT_Buttons(const tSensor *);
+unsigned long TI_CAPT_Slider(const tSensor*);
+unsigned long TI_CAPT_Wheel(const tSensor*);
+
+// Internal Calls
+unsigned char Dominant_Element (const tSensor*, unsigned long*);
+
+#endif // __CTS_LAYER_H__
diff --git a/boards/ek-lm4f120xl-boost-capsense/drivers/CTS_structure.c b/boards/ek-lm4f120xl-boost-capsense/drivers/CTS_structure.c new file mode 100644 index 0000000..db1465e --- /dev/null +++ b/boards/ek-lm4f120xl-boost-capsense/drivers/CTS_structure.c @@ -0,0 +1,131 @@ +//*****************************************************************************
+//
+// CTS_structure.c - Capacative Sense structures.
+//
+// Copyright (c) 2012 Texas Instruments Incorporated. All rights reserved.
+// Software License Agreement
+//
+// Texas Instruments (TI) is supplying this software for use solely and
+// exclusively on TI's microcontroller products. The software is owned by
+// TI and/or its suppliers, and is protected under applicable copyright
+// laws. You may not combine this software with "viral" open-source
+// software in order to form a larger program.
+//
+// THIS SOFTWARE IS PROVIDED "AS IS" AND WITH ALL FAULTS.
+// NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT
+// NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. TI SHALL NOT, UNDER ANY
+// CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR CONSEQUENTIAL
+// DAMAGES, FOR ANY REASON WHATSOEVER.
+//
+// This is part of revision 9453 of the EK-LM4F120XL Firmware Package.
+//
+//*****************************************************************************
+
+//*****************************************************************************
+//
+// 4 elements configured as a wheel.
+// 1 element configured as a button. [Center Button]
+// 1 element configured as a proximity sensor.
+// This file contains the structure names and the variable assingments.
+//
+// Revision 1.00 Baseline
+// Developed with IAR 5.10.4 [Kickstart] (5.10.4.30168)
+//
+// 09/24/10 Rev1.00 Pre-Alpha Version. Added "max_cnts" slider variable in
+// CT_Handler object.
+//
+// 09/29/10 0.02 Update naming convention for elements and sensors.
+//
+// 10/11/10 0.03 Update
+//
+//******************************************************************************
+
+#include "inc/hw_types.h"
+#include "inc/hw_gpio.h"
+#include "inc/hw_memmap.h"
+#include "driverlib/gpio.h"
+#include "drivers/CTS_structure.h"
+
+//
+// Volume down button on PD3
+//
+const tCapTouchElement g_sVolumeDownElement =
+{
+ GPIO_PORTA_AHB_BASE,//ulGPIOPort
+ GPIO_PIN_7,//ulGPIOPin
+ 100,//ulThreshold
+ 2000//ulMaxResponse
+};
+
+//
+// Left button on PD2
+//
+const tCapTouchElement g_sLeftElement =
+{
+ GPIO_PORTA_AHB_BASE,//ulGPIOPort
+ GPIO_PIN_6,//ulGPIOPin
+ 100,//ulThreshold
+ 2000//ulMaxResponse
+};
+
+//
+// Right button on PE3
+//
+const tCapTouchElement g_sRightElement =
+{
+ GPIO_PORTA_AHB_BASE,//ulGPIOPort
+ GPIO_PIN_2,//ulGPIOPin
+ 100,//ulThreshold
+ 2000//ulMaxResponse
+};
+
+//
+// Volume up button on PE2
+//
+const tCapTouchElement g_sVolumeUpElement =
+{
+ GPIO_PORTA_AHB_BASE,//ulGPIOPort
+ GPIO_PIN_3,//ulGPIOPin
+ 100,//ulThreshold
+ 2000//ulMaxResponse
+};
+
+//
+// Middle button on PE1
+//
+const tCapTouchElement g_sMiddleElement =
+{
+ GPIO_PORTA_AHB_BASE,//ulGPIOPort
+ GPIO_PIN_4,//ulGPIOPin
+ 100,//ulThreshold
+ 1800//ulMaxResponse
+};
+
+const tSensor g_sSensorWheel =
+{
+ 4,//unsigned char ucNumElements;
+ 100,//unsigned long ulNumSamples;
+ 64,//unsigned char ucPoints;
+ 75,//unsigned char ucSensorThreshold;
+ 0,//unsigned long ulBaseOffset;
+ {
+ &g_sVolumeUpElement,
+ &g_sRightElement,
+ &g_sVolumeDownElement,
+ &g_sLeftElement
+ }//const tCapTouchElement *Element[MAXIMUM_NUMBER_OF_ELEMENTS_PER_SENSOR];
+};
+
+const tSensor g_sMiddleButton =
+{
+ 1,//unsigned char ucNumElements;
+ 100,//unsigned long ulNumSamples;
+ 0,//unsigned char ucPoints;
+ 0,//unsigned char ucSensorThreshold;
+ 4,//unsigned long ulBaseOffset;
+ {
+ &g_sMiddleElement
+ }//const tCapTouchElement *Element[MAXIMUM_NUMBER_OF_ELEMENTS_PER_SENSOR];
+};
+
diff --git a/boards/ek-lm4f120xl-boost-capsense/drivers/CTS_structure.h b/boards/ek-lm4f120xl-boost-capsense/drivers/CTS_structure.h new file mode 100644 index 0000000..eb603a4 --- /dev/null +++ b/boards/ek-lm4f120xl-boost-capsense/drivers/CTS_structure.h @@ -0,0 +1,74 @@ +//*****************************************************************************
+//
+// CTS_structure.c - Capacative Sense structures.
+//
+// Copyright (c) 2012 Texas Instruments Incorporated. All rights reserved.
+// Software License Agreement
+//
+// Texas Instruments (TI) is supplying this software for use solely and
+// exclusively on TI's microcontroller products. The software is owned by
+// TI and/or its suppliers, and is protected under applicable copyright
+// laws. You may not combine this software with "viral" open-source
+// software in order to form a larger program.
+//
+// THIS SOFTWARE IS PROVIDED "AS IS" AND WITH ALL FAULTS.
+// NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT
+// NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. TI SHALL NOT, UNDER ANY
+// CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR CONSEQUENTIAL
+// DAMAGES, FOR ANY REASON WHATSOEVER.
+//
+// This is part of revision 9453 of the EK-LM4F120XL Firmware Package.
+//
+//*****************************************************************************
+
+#ifndef __CTS_STRUCTURE_H__
+#define __CTS_STRUCTURE_H__
+
+
+#define MAXIMUM_NUMBER_OF_ELEMENTS_PER_SENSOR 4
+#define TOTAL_NUMBER_OF_ELEMENTS 6
+
+
+#define ILLEGAL_SLIDER_WHEEL_POSITION 0xFFFFFFFF
+#define WHEEL
+
+//******************************************************************************
+// The following structure definitons are application independent and are not
+// intended to be modified.
+//
+// The CT_handler 'groups' the sensor based upon function and capacitive
+// measurement method.
+//******************************************************************************
+typedef struct
+{
+ unsigned long ulGPIOPort;
+ unsigned long ulGPIOPin;
+ unsigned long ulThreshold;
+ unsigned long ulMaxResponse;
+}
+tCapTouchElement;
+
+typedef struct tSensor
+{
+ unsigned char ucNumElements;
+ unsigned long ulNumSamples;
+ unsigned char ucPoints;
+ unsigned long ulSensorThreshold;
+ unsigned long ulBaseOffset;
+ const tCapTouchElement *Element[MAXIMUM_NUMBER_OF_ELEMENTS_PER_SENSOR];
+}
+tSensor;
+
+extern const tCapTouchElement g_sVolumeDownElement; // structure containing elements for
+extern const tCapTouchElement g_sVolumeUpElement; //
+extern const tCapTouchElement g_sRightElement; //
+extern const tCapTouchElement g_sLeftElement; //
+extern const tCapTouchElement g_sMiddleElement; //
+extern const tCapTouchElement g_sProximityElement; //
+
+extern const tSensor g_sSensorWheel;
+
+extern const tSensor g_sMiddleButton; // structure of info for a given
+
+#endif // __CTS_STRUCTURE_H__
diff --git a/boards/ek-lm4f120xl-boost-capsense/ek-lm4f120xl-boost-capsense.eww b/boards/ek-lm4f120xl-boost-capsense/ek-lm4f120xl-boost-capsense.eww new file mode 100644 index 0000000..3f340d5 --- /dev/null +++ b/boards/ek-lm4f120xl-boost-capsense/ek-lm4f120xl-boost-capsense.eww @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="iso-8859-1"?>
+
+<workspace>
+ <project>
+ <path>$WS_DIR$\..\..\driverlib\driverlib-cm4f.ewp</path>
+ </project>
+ <project>
+ <path>$WS_DIR$\..\..\usblib\usblib-cm4f.ewp</path>
+ </project>
+ <project>
+ <path>$WS_DIR$\capsense\capsense.ewp</path>
+ </project>
+ <batchBuild>
+ <batchDefinition>
+ <name>All Examples</name>
+ <member>
+ <project>driverlib-cm4f</project>
+ <configuration>Debug</configuration>
+ </member>
+ <member>
+ <project>usblib-cm4f</project>
+ <configuration>Debug</configuration>
+ </member>
+ <member>
+ <project>capsense</project>
+ <configuration>Debug</configuration>
+ </member>
+ </batchDefinition>
+ </batchBuild>
+</workspace>
diff --git a/boards/ek-lm4f120xl-boost-capsense/ek-lm4f120xl-boost-capsense.sgxw b/boards/ek-lm4f120xl-boost-capsense/ek-lm4f120xl-boost-capsense.sgxw new file mode 100644 index 0000000..0d1b79a --- /dev/null +++ b/boards/ek-lm4f120xl-boost-capsense/ek-lm4f120xl-boost-capsense.sgxw @@ -0,0 +1,30 @@ +<!--
+Configuration file for Sourcery G++ workspace ek-lm4f120xl-boost-capsense
+
+Copyright (c) 2009-2012 Texas Instruments Incorporated. All rights reserved.
+Software License Agreement
+
+Texas Instruments (TI) is supplying this software for use solely and
+exclusively on TI's microcontroller products. The software is owned by
+TI and/or its suppliers, and is protected under applicable copyright
+laws. You may not combine this software with "viral" open-source
+software in order to form a larger program.
+
+THIS SOFTWARE IS PROVIDED "AS IS" AND WITH ALL FAULTS.
+NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT
+NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. TI SHALL NOT, UNDER ANY
+CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES, FOR ANY REASON WHATSOEVER.
+
+This is part of revision 9453 of the EK-LM4F120XL Firmware Package.
+-->
+
+<workspace>
+ <project description="../../inc/inc.sgxx" />
+ <project description="../../third_party/third_party.sgxx" />
+ <project description="../../utils/utils.sgxx" />
+ <project description="../../driverlib/driverlib-cm4f.sgxx" />
+ <project description="../../usblib/usblib-cm4f.sgxx" />
+ <project description="capsense/capsense.sgxx" />
+</workspace>
diff --git a/boards/ek-lm4f120xl-boost-capsense/ek-lm4f120xl-boost-capsense.uvmpw b/boards/ek-lm4f120xl-boost-capsense/ek-lm4f120xl-boost-capsense.uvmpw new file mode 100644 index 0000000..63a8f56 --- /dev/null +++ b/boards/ek-lm4f120xl-boost-capsense/ek-lm4f120xl-boost-capsense.uvmpw @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<ProjectWorkspace xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_mpw.xsd">
+
+ <SchemaVersion>1.0</SchemaVersion>
+
+ <Header>### uVision Project, (C) Keil Software</Header>
+
+ <WorkspaceName>ek-lm4f120xl-boost-capsense</WorkspaceName>
+
+ <project>
+ <PathAndName>..\..\driverlib\driverlib-cm4f.uvproj</PathAndName>
+ <NodeIsCheckedInBatchBuild>1</NodeIsCheckedInBatchBuild>
+ </project>
+
+ <project>
+ <PathAndName>..\..\usblib\usblib-cm4f.uvproj</PathAndName>
+ <NodeIsCheckedInBatchBuild>1</NodeIsCheckedInBatchBuild>
+ </project>
+
+ <project>
+ <PathAndName>.\capsense\capsense.uvproj</PathAndName>
+ <NodeIsCheckedInBatchBuild>1</NodeIsCheckedInBatchBuild>
+ </project>
+
+</ProjectWorkspace>
|
