From 6cff82a4bc7ed9fcc7e9ad73a4542d5b1e7c1328 Mon Sep 17 00:00:00 2001 From: Yuval Adam Date: Wed, 7 Nov 2012 23:31:05 +0200 Subject: Revert "Move RGB and button drivers 2 dirs up" This reverts commit 3a282de9331ea261eeadca0dd36c0527f173dd4c. --- boards/ek-lm4f120xl/drivers/buttons.c | 193 ++++++++++++++++++++++ boards/ek-lm4f120xl/drivers/buttons.h | 96 +++++++++++ boards/ek-lm4f120xl/drivers/rgb.c | 298 ++++++++++++++++++++++++++++++++++ boards/ek-lm4f120xl/drivers/rgb.h | 143 ++++++++++++++++ 4 files changed, 730 insertions(+) create mode 100644 boards/ek-lm4f120xl/drivers/buttons.c create mode 100644 boards/ek-lm4f120xl/drivers/buttons.h create mode 100644 boards/ek-lm4f120xl/drivers/rgb.c create mode 100644 boards/ek-lm4f120xl/drivers/rgb.h (limited to 'boards') diff --git a/boards/ek-lm4f120xl/drivers/buttons.c b/boards/ek-lm4f120xl/drivers/buttons.c new file mode 100644 index 0000000..4415168 --- /dev/null +++ b/boards/ek-lm4f120xl/drivers/buttons.c @@ -0,0 +1,193 @@ +//***************************************************************************** +// +// buttons.c - Evaluation board driver for push buttons. +// +// 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_memmap.h" +#include "inc/hw_gpio.h" +#include "driverlib/sysctl.h" +#include "driverlib/rom.h" +#include "driverlib/pin_map.h" +#include "driverlib/gpio.h" +#include "drivers/buttons.h" + +//***************************************************************************** +// +//! \addtogroup buttons_api +//! @{ +// +//***************************************************************************** + +//***************************************************************************** +// +// Holds the current, debounced state of each button. A 0 in a bit indicates +// that that button is currently pressed, otherwise it is released. +// We assume that we start with all the buttons released (though if one is +// pressed when the application starts, this will be detected). +// +//***************************************************************************** +static unsigned char g_ucButtonStates = ALL_BUTTONS; + +//***************************************************************************** +// +//! Polls the current state of the buttons and determines which have changed. +//! +//! \param pucDelta points to a character that will be written to indicate +//! which button states changed since the last time this function was called. +//! This value is derived from the debounced state of the buttons. +//! \param pucRawState points to a location where the raw button state will +//! be stored. +//! +//! This function should be called periodically by the application to poll the +//! pushbuttons. It determines both the current debounced state of the buttons +//! and also which buttons have changed state since the last time the function +//! was called. +//! +//! In order for button debouncing to work properly, this function should be +//! caled at a regular interval, even if the state of the buttons is not needed +//! that often. +//! +//! If button debouncing is not required, the the caller can pass a pointer +//! for the \e pucRawState parameter in order to get the raw state of the +//! buttons. The value returned in \e pucRawState will be a bit mask where +//! a 1 indicates the buttons is pressed. +//! +//! \return Returns the current debounced state of the buttons where a 1 in the +//! button ID's position indicates that the button is pressed and a 0 +//! indicates that it is released. +// +//***************************************************************************** +unsigned char +ButtonsPoll(unsigned char *pucDelta, unsigned char *pucRawState) +{ + unsigned long ulDelta; + unsigned long ulData; + static unsigned char ucSwitchClockA = 0; + static unsigned char ucSwitchClockB = 0; + + // + // Read the raw state of the push buttons. Save the raw state + // (inverting the bit sense) if the caller supplied storage for the + // raw value. + // + ulData = (ROM_GPIOPinRead(BUTTONS_GPIO_BASE, ALL_BUTTONS)); + if(pucRawState) + { + *pucRawState = (unsigned char)~ulData; + } + + // + // Determine the switches that are at a different state than the debounced + // state. + // + ulDelta = ulData ^ g_ucButtonStates; + + // + // Increment the clocks by one. + // + ucSwitchClockA ^= ucSwitchClockB; + ucSwitchClockB = ~ucSwitchClockB; + + // + // Reset the clocks corresponding to switches that have not changed state. + // + ucSwitchClockA &= ulDelta; + ucSwitchClockB &= ulDelta; + + // + // Get the new debounced switch state. + // + g_ucButtonStates &= ucSwitchClockA | ucSwitchClockB; + g_ucButtonStates |= (~(ucSwitchClockA | ucSwitchClockB)) & ulData; + + // + // Determine the switches that just changed debounced state. + // + ulDelta ^= (ucSwitchClockA | ucSwitchClockB); + + // + // Store the bit mask for the buttons that have changed for return to + // caller. + // + if(pucDelta) + { + *pucDelta = (unsigned char)ulDelta; + } + + // + // Return the debounced buttons states to the caller. Invert the bit + // sense so that a '1' indicates the button is pressed, which is a + // sensible way to interpret the return value. + // + return(~g_ucButtonStates); +} + +//***************************************************************************** +// +//! Initializes the GPIO pins used by the board pushbuttons. +//! +//! This function must be called during application initialization to +//! configure the GPIO pins to which the pushbuttons are attached. It enables +//! the port used by the buttons and configures each button GPIO as an input +//! with a weak pull-up. +//! +//! \return None. +// +//***************************************************************************** +void +ButtonsInit(void) +{ + // + // Enable the GPIO port to which the pushbuttons are connected. + // + ROM_SysCtlPeripheralEnable(BUTTONS_GPIO_PERIPH); + + // + // Unlock PF0 so we can change it to a GPIO input + // Once we have enabled (unlocked) the commit register then re-lock it + // to prevent further changes. PF0 is muxed with NMI thus a special case. + // + HWREG(BUTTONS_GPIO_BASE + GPIO_O_LOCK) = GPIO_LOCK_KEY_DD; + HWREG(BUTTONS_GPIO_BASE + GPIO_O_CR) |= 0x01; + HWREG(BUTTONS_GPIO_BASE + GPIO_O_LOCK) = 0; + + // + // Set each of the button GPIO pins as an input with a pull-up. + // + ROM_GPIODirModeSet(BUTTONS_GPIO_BASE, ALL_BUTTONS, GPIO_DIR_MODE_IN); + ROM_GPIOPadConfigSet(BUTTONS_GPIO_BASE, ALL_BUTTONS, + GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD_WPU); + + // + // Initialize the debounced button state with the current state read from + // the GPIO bank. + // + g_ucButtonStates = ROM_GPIOPinRead(BUTTONS_GPIO_BASE, ALL_BUTTONS); +} + +//***************************************************************************** +// +// Close the Doxygen group. +//! @} +// +//***************************************************************************** diff --git a/boards/ek-lm4f120xl/drivers/buttons.h b/boards/ek-lm4f120xl/drivers/buttons.h new file mode 100644 index 0000000..416125a --- /dev/null +++ b/boards/ek-lm4f120xl/drivers/buttons.h @@ -0,0 +1,96 @@ +//***************************************************************************** +// +// buttons.h - Prototypes for the evaluation board buttons driver. +// +// 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 __BUTTONS_H__ +#define __BUTTONS_H__ + +//***************************************************************************** +// +// Defines for the hardware resources used by the pushbuttons. +// +// The switches are on the following ports/pins: +// +// PF4 - Left Button +// PF0 - Right Button +// +// The switches tie the GPIO to ground, so the GPIOs need to be configured +// with pull-ups, and a value of 0 means the switch is pressed. +// +//***************************************************************************** +#define BUTTONS_GPIO_PERIPH SYSCTL_PERIPH_GPIOF +#define BUTTONS_GPIO_BASE GPIO_PORTF_BASE + +#define NUM_BUTTONS 2 +#define LEFT_BUTTON GPIO_PIN_4 +#define RIGHT_BUTTON GPIO_PIN_0 + +#define ALL_BUTTONS (LEFT_BUTTON | RIGHT_BUTTON) + +//***************************************************************************** +// +// Useful macros for detecting button events. +// +//***************************************************************************** +#define BUTTON_PRESSED(button, buttons, changed) \ + (((button) & (changed)) && ((button) & (buttons))) + +#define BUTTON_RELEASED(button, buttons, changed) \ + (((button) & (changed)) && !((button) & (buttons))) + +//***************************************************************************** +// +// If building with a C++ compiler, make all of the definitions in this header +// have a C binding. +// +//***************************************************************************** +#ifdef __cplusplus +extern "C" +{ +#endif + +//***************************************************************************** +// +// Functions exported from buttons.c +// +//***************************************************************************** +extern void ButtonsInit(void); +extern unsigned char ButtonsPoll(unsigned char *pucDelta, + unsigned char *pucRaw); + +//***************************************************************************** +// +// Mark the end of the C bindings section for C++ compilers. +// +//***************************************************************************** +#ifdef __cplusplus +} +#endif + +//***************************************************************************** +// +// Prototypes for the globals exported by this driver. +// +//***************************************************************************** + +#endif // __BUTTONS_H__ diff --git a/boards/ek-lm4f120xl/drivers/rgb.c b/boards/ek-lm4f120xl/drivers/rgb.c new file mode 100644 index 0000000..f3107f2 --- /dev/null +++ b/boards/ek-lm4f120xl/drivers/rgb.c @@ -0,0 +1,298 @@ +//***************************************************************************** +// +// rgb.c - Evaluation board driver for RGB LED. +// +// 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_memmap.h" +#include "inc/hw_timer.h" +#include "driverlib/sysctl.h" +#include "driverlib/rom.h" +#include "driverlib/pin_map.h" +#include "driverlib/timer.h" +#include "driverlib/gpio.h" +#include "rgb.h" + +//***************************************************************************** +// +//! \addtogroup rgb_api +//! @{ +// +//***************************************************************************** + +//***************************************************************************** +// +// This is a custom driver that allows the easy manipulation of the RGB LED. +// +// The driver uses the general purpose timers to govern the brightness of the +// LED through simple PWM output mode of the GP Timers. +// +// A global array contains the current relative color of each of the three +// LEDs. A global float variable controls intensity of the overall mixed color. +// +//***************************************************************************** +static unsigned long g_ulColors[3]; +static float g_fIntensity = 0.3f; + +//***************************************************************************** +// +//! Initializes the Timer and GPIO functionality associated with the RGB LED +//! +//! \param ulEnable enables RGB immediately if set. +//! +//! This function must be called during application initialization to +//! configure the GPIO pins to which the LEDs are attached. It enables +//! the port used by the LEDs and configures each color's Timer. It optionally +//! enables the RGB LED by configuring the GPIO pins and starting the timers. +//! +//! \return None. +// +//***************************************************************************** +void +RGBInit(unsigned long ulEnable) +{ + // + // Enable the GPIO Port and Timer for each LED + // + SysCtlPeripheralEnable(RED_GPIO_PERIPH); + SysCtlPeripheralEnable(RED_TIMER_PERIPH); + + SysCtlPeripheralEnable(GREEN_GPIO_PERIPH); + SysCtlPeripheralEnable(GREEN_TIMER_PERIPH); + + SysCtlPeripheralEnable(BLUE_GPIO_PERIPH); + SysCtlPeripheralEnable(BLUE_TIMER_PERIPH); + + // + // Configure each timer for output mode + // + HWREG(GREEN_TIMER_BASE + TIMER_O_CFG) = 0x04; + HWREG(GREEN_TIMER_BASE + TIMER_O_TAMR) = 0x0A; + HWREG(GREEN_TIMER_BASE + TIMER_O_TAILR) = 0xFFFF; + + HWREG(BLUE_TIMER_BASE + TIMER_O_CFG) = 0x04; + HWREG(BLUE_TIMER_BASE + TIMER_O_TBMR) = 0x0A; + HWREG(BLUE_TIMER_BASE + TIMER_O_TBILR) = 0xFFFF; + + HWREG(RED_TIMER_BASE + TIMER_O_CFG) = 0x04; + HWREG(RED_TIMER_BASE + TIMER_O_TBMR) = 0x0A; + HWREG(RED_TIMER_BASE + TIMER_O_TBILR) = 0xFFFF; + + // + // Invert the output signals. + // + HWREG(RED_TIMER_BASE + TIMER_O_CTL) |= 0x4000; + HWREG(GREEN_TIMER_BASE + TIMER_O_CTL) |= 0x40; + HWREG(BLUE_TIMER_BASE + TIMER_O_CTL) |= 0x4000; + + if(ulEnable) + { + RGBEnable(); + } +} + +//***************************************************************************** +// +//! Enable the RGB LED with already configured timer settings +//! +//! This function or RGBDisable should be called during application +//! initialization to configure the GPIO pins to which the LEDs are attached. +//! This function enables the timers and configures the GPIO pins as timer +//! outputs. +//! +//! \return None. +// +//***************************************************************************** +void +RGBEnable(void) +{ + // + // Enable timers to begin counting + // + TimerEnable(RED_TIMER_BASE, TIMER_BOTH); + TimerEnable(GREEN_TIMER_BASE, TIMER_BOTH); + TimerEnable(BLUE_TIMER_BASE, TIMER_BOTH); + + // + // Reconfigure each LED's GPIO pad for timer control + // + GPIOPinConfigure(GREEN_GPIO_PIN_CFG); + GPIOPinTypeTimer(GREEN_GPIO_BASE, GREEN_GPIO_PIN); + GPIOPadConfigSet(GREEN_GPIO_BASE, GREEN_GPIO_PIN, GPIO_STRENGTH_8MA_SC, + GPIO_PIN_TYPE_STD); + + GPIOPinConfigure(BLUE_GPIO_PIN_CFG); + GPIOPinTypeTimer(BLUE_GPIO_BASE, BLUE_GPIO_PIN); + GPIOPadConfigSet(BLUE_GPIO_BASE, BLUE_GPIO_PIN, GPIO_STRENGTH_8MA_SC, + GPIO_PIN_TYPE_STD); + + GPIOPinConfigure(RED_GPIO_PIN_CFG); + GPIOPinTypeTimer(RED_GPIO_BASE, RED_GPIO_PIN); + GPIOPadConfigSet(RED_GPIO_BASE, RED_GPIO_PIN, GPIO_STRENGTH_8MA_SC, + GPIO_PIN_TYPE_STD); +} + +//***************************************************************************** +// +//! Disable the RGB LED by configuring the GPIO's as inputs. +//! +//! This function or RGBEnable should be called during application +//! initialization to configure the GPIO pins to which the LEDs are attached. +//! This function disables the timers and configures the GPIO pins as inputs +//! for minimum current draw. +//! +//! \return None. +// +//***************************************************************************** +void +RGBDisable(void) +{ + // + // Configure the GPIO pads as general purpose inputs. + // + GPIOPinTypeGPIOInput(RED_GPIO_BASE, RED_GPIO_PIN); + GPIOPinTypeGPIOInput(GREEN_GPIO_BASE, GREEN_GPIO_PIN); + GPIOPinTypeGPIOInput(BLUE_GPIO_BASE, BLUE_GPIO_PIN); + + // + // Stop the timer counting. + // + TimerDisable(RED_TIMER_BASE, TIMER_BOTH); + TimerDisable(GREEN_TIMER_BASE, TIMER_BOTH); + TimerDisable(BLUE_TIMER_BASE, TIMER_BOTH); +} + +//***************************************************************************** +// +//! Set the output color and intensity. +//! +//! \param pulRGBColor points to a three element array representing the +//! relative intensity of each color. Red is element 0, Green is element 1, +//! Blue is element 2. 0x0000 is off. 0xFFFF is fully on. +//! +//! \param fIntensity is used to scale the intensity of all three colors by +//! the same amount. fIntensity should be between 0.0 and 1.0. This scale +//! factor is applied to all three colors. +//! +//! This function should be called by the application to set the color and +//! intensity of the RGB LED. +//! +//! \return None. +// +//***************************************************************************** +void +RGBSet(volatile unsigned long * pulRGBColor, float fIntensity) +{ + RGBColorSet(pulRGBColor); + RGBIntensitySet(fIntensity); +} + +//***************************************************************************** +// +//! Set the output color. +//! +//! \param pulRGBColor points to a three element array representing the +//! relative intensity of each color. Red is element 0, Green is element 1, +//! Blue is element 2. 0x0000 is off. 0xFFFF is fully on. +//! +//! This function should be called by the application to set the color +//! of the RGB LED. +//! +//! \return None. +// +//***************************************************************************** +void +RGBColorSet(volatile unsigned long * pulRGBColor) +{ + unsigned long ulColor[3]; + unsigned long ulIndex; + + for(ulIndex=0; ulIndex < 3; ulIndex++) + { + g_ulColors[ulIndex] = pulRGBColor[ulIndex]; + ulColor[ulIndex] = (unsigned long) (((float) pulRGBColor[ulIndex]) * + g_fIntensity + 0.5f); + + if(ulColor[ulIndex] > 0xFFFF) + { + ulColor[ulIndex] = 0xFFFF; + } + } + + TimerMatchSet(RED_TIMER_BASE, RED_TIMER, ulColor[RED]); + TimerMatchSet(GREEN_TIMER_BASE, GREEN_TIMER, ulColor[GREEN]); + TimerMatchSet(BLUE_TIMER_BASE, BLUE_TIMER, ulColor[BLUE]); +} + +//***************************************************************************** +// +//! Set the current output intensity. +//! +//! \param fIntensity is used to scale the intensity of all three colors by +//! the same amount. fIntensity should be between 0.0 and 1.0. This scale +//! factor is applied individually to all three colors. +//! +//! This function should be called by the application to set the intensity +//! of the RGB LED. +//! +//! \return None. +// +//***************************************************************************** +void +RGBIntensitySet(float fIntensity) +{ + g_fIntensity = fIntensity; + RGBColorSet(g_ulColors); +} + +//***************************************************************************** +// +//! Get the output color. +//! +//! \param pulRGBColor points to a three element array representing the +//! relative intensity of each color. Red is element 0, Green is element 1, +//! Blue is element 2. 0x0000 is off. 0xFFFF is fully on. Caller must allocate +//! and pass a pointer to a three element array of unsigned longs. +//! +//! This function should be called by the application to get the current color +//! of the RGB LED. +//! +//! \return None. +// +//***************************************************************************** +void +RGBColorGet(unsigned long * pulRGBColor) +{ + unsigned long ulIndex; + + for(ulIndex=0; ulIndex < 3; ulIndex++) + { + pulRGBColor[ulIndex] = g_ulColors[ulIndex]; + } +} + +//***************************************************************************** +// +// Close the Doxygen group. +//! @} +// +//***************************************************************************** diff --git a/boards/ek-lm4f120xl/drivers/rgb.h b/boards/ek-lm4f120xl/drivers/rgb.h new file mode 100644 index 0000000..27d2276 --- /dev/null +++ b/boards/ek-lm4f120xl/drivers/rgb.h @@ -0,0 +1,143 @@ +//***************************************************************************** +// +// rgb.h - Prototypes for the evaluation board RGB LED driver. +// +// 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 __RGBLED_H__ +#define __RGBLED_H__ + +//***************************************************************************** +// +// Defines for the hardware resources used by the pushbuttons. +// +// The switches are on the following ports/pins: +// +// PF1 - RED (632 nanometer) +// PF2 - GREEN (518 nanometer) +// PF3 - BLUE (465 nanometer) + +// +// The RGB LED is tied up to 5V but since the lowest Vf is 1.75 we can still +// use a General Purpose Timer in pulse out mode. +// +//***************************************************************************** + +// +// Indexes into the array of colors +// +#define RED 0 +#define BLUE 2 +#define GREEN 1 + + +// +// Ratio for percent of full on that should be "true" white. +// +#define RED_WHITE_BALANCE 0.497f +#define GREEN_WHITE_BALANCE 0.6f +#define BLUE_WHITE_BALANCE 1.0f + +// +// GPIO, Timer, Peripheral, and Pin assignments for the colors +// +#define RED_GPIO_PERIPH SYSCTL_PERIPH_GPIOF +#define RED_TIMER_PERIPH SYSCTL_PERIPH_TIMER0 +#define BLUE_GPIO_PERIPH SYSCTL_PERIPH_GPIOF +#define BLUE_TIMER_PERIPH SYSCTL_PERIPH_TIMER1 +#define GREEN_GPIO_PERIPH SYSCTL_PERIPH_GPIOF +#define GREEN_TIMER_PERIPH SYSCTL_PERIPH_TIMER1 + + +#define RED_GPIO_BASE GPIO_PORTF_BASE +#define RED_TIMER_BASE TIMER0_BASE +#define BLUE_GPIO_BASE GPIO_PORTF_BASE +#define BLUE_TIMER_BASE TIMER1_BASE +#define GREEN_GPIO_BASE GPIO_PORTF_BASE +#define GREEN_TIMER_BASE TIMER1_BASE + +#define RED_GPIO_PIN GPIO_PIN_1 +#define BLUE_GPIO_PIN GPIO_PIN_2 +#define GREEN_GPIO_PIN GPIO_PIN_3 + + +#define RED_GPIO_PIN_CFG GPIO_PF1_T0CCP1 +#define BLUE_GPIO_PIN_CFG GPIO_PF2_T1CCP0 +#define GREEN_GPIO_PIN_CFG GPIO_PF3_T1CCP1 + +#define RED_TIMER_CFG TIMER_CFG_B_PWM +#define BLUE_TIMER_CFG TIMER_CFG_A_PWM +#define GREEN_TIMER_CFG TIMER_CFG_B_PWM + +#define RED_TIMER TIMER_B +#define BLUE_TIMER TIMER_A +#define GREEN_TIMER TIMER_B + + +//***************************************************************************** +// +// Useful macros +// +//***************************************************************************** + +//***************************************************************************** +// +// If building with a C++ compiler, make all of the definitions in this header +// have a C binding. +// +//***************************************************************************** +#ifdef __cplusplus +extern "C" +{ +#endif + +//***************************************************************************** +// +// Functions exported from rgb.c +// +//***************************************************************************** +extern void RGBInit(unsigned long ulEnable); + +extern void RGBEnable(void); +extern void RGBDisable(void); +extern void RGBSet(volatile unsigned long * pulRGBColor, float fIntensity); +extern void RGBColorSet(volatile unsigned long * pulRGBColor); + +extern void RGBIntensitySet(float fIntensity); + +extern void RGBGet(unsigned long * pulRGBColor, float * pfIntensity); + +//***************************************************************************** +// +// Mark the end of the C bindings section for C++ compilers. +// +//***************************************************************************** +#ifdef __cplusplus +} +#endif + +//***************************************************************************** +// +// Prototypes for the globals exported by this driver. +// +//***************************************************************************** + +#endif // __RGBLED_H__ -- cgit v1.3.1