From c3e4c9a25c2910d2d66d52215b3406b13d5b23d5 Mon Sep 17 00:00:00 2001 From: Yuval Adam Date: Sun, 29 Jun 2014 12:34:32 +0300 Subject: Add more board models --- boards/dk-tm4c129x/enet_io/io.c | 259 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 259 insertions(+) create mode 100644 boards/dk-tm4c129x/enet_io/io.c (limited to 'boards/dk-tm4c129x/enet_io/io.c') diff --git a/boards/dk-tm4c129x/enet_io/io.c b/boards/dk-tm4c129x/enet_io/io.c new file mode 100644 index 0000000..e8d90bd --- /dev/null +++ b/boards/dk-tm4c129x/enet_io/io.c @@ -0,0 +1,259 @@ +//***************************************************************************** +// +// io.c - I/O routines for the enet_io example application. +// +// Copyright (c) 2007-2014 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 2.1.0.12573 of the DK-TM4C129X Firmware Package. +// +//***************************************************************************** +#include +#include +#include "inc/hw_ints.h" +#include "inc/hw_memmap.h" +#include "inc/hw_pwm.h" +#include "inc/hw_types.h" +#include "driverlib/gpio.h" +#include "driverlib/pwm.h" +#include "driverlib/sysctl.h" +#include "driverlib/timer.h" +#include "driverlib/interrupt.h" +#include "driverlib/rom.h" +#include "utils/ustdlib.h" +#include "io.h" + +//***************************************************************************** +// +// Hardware connection for the user LED. +// +//***************************************************************************** +#define LED_PORT_BASE GPIO_PORTQ_BASE +#define LED_PIN GPIO_PIN_7 + +//***************************************************************************** +// +// The system clock speed. +// +//***************************************************************************** +extern uint32_t g_ui32SysClock; + +//***************************************************************************** +// +// The current speed of the on-screen animation expressed as a percentage. +// +//***************************************************************************** +volatile unsigned long g_ulAnimSpeed = 10; + +//***************************************************************************** +// +// Set the timer used to pace the animation. We scale the timer timeout such +// that a speed of 100% causes the timer to tick once every 4 mS (250Hz). +// +//***************************************************************************** +static void +io_set_timer(unsigned long ulSpeedPercent) +{ + unsigned long ulTimeout; + + // + // Turn the timer off while we are mucking with it. + // + ROM_TimerDisable(TIMER2_BASE, TIMER_A); + + // + // If the speed is non-zero, we reset the timeout. If it is zero, we + // just leave the timer disabled. + // + if(ulSpeedPercent) + { + ulTimeout = g_ui32SysClock / 250; + ulTimeout = (ulTimeout * 100 ) / ulSpeedPercent; + + ROM_TimerLoadSet(TIMER2_BASE, TIMER_A, ulTimeout); + ROM_TimerEnable(TIMER2_BASE, TIMER_A); + } +} + +//***************************************************************************** +// +// Initialize the IO used in this demo +// +//***************************************************************************** +void +io_init(void) +{ + // + // Configure Port F0 for as an output for the status LED. + // + ROM_GPIOPinTypeGPIOOutput(LED_PORT_BASE, LED_PIN); + + // + // Initialize LED to OFF (0) + // + ROM_GPIOPinWrite(LED_PORT_BASE, LED_PIN, 0); + + // + // Enable the peripherals used by this example. + // + ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER2); + + // + // Configure the timer used to pace the animation. + // + ROM_TimerConfigure(TIMER2_BASE, TIMER_CFG_PERIODIC); + + // + // Setup the interrupts for the timer timeouts. + // + ROM_IntEnable(INT_TIMER2A); + ROM_TimerIntEnable(TIMER2_BASE, TIMER_TIMA_TIMEOUT); + + // + // Set the timer for the current animation speed. This enables the + // timer as a side effect. + // + io_set_timer(g_ulAnimSpeed); +} + +//***************************************************************************** +// +// Set the status LED on or off. +// +//***************************************************************************** +void +io_set_led(bool bOn) +{ + // + // Turn the LED on or off as requested. + // + ROM_GPIOPinWrite(LED_PORT_BASE, LED_PIN, bOn ? LED_PIN : 0); +} + +//***************************************************************************** +// +// Return LED state +// +//***************************************************************************** +void +io_get_ledstate(char * pcBuf, int iBufLen) +{ + // + // Get the state of the LED + // + if(ROM_GPIOPinRead(LED_PORT_BASE, LED_PIN)) + { + usnprintf(pcBuf, iBufLen, "ON"); + } + else + { + usnprintf(pcBuf, iBufLen, "OFF"); + } + +} + +//***************************************************************************** +// +// Return LED state as an integer, 1 on, 0 off. +// +//***************************************************************************** +int +io_is_led_on(void) +{ + // + // Get the state of the LED + // + if(ROM_GPIOPinRead(LED_PORT_BASE, LED_PIN)) + { + return(true); + } + else + { + return(0); + } +} + +//***************************************************************************** +// +// Set the speed of the animation shown on the display. In this version, the +// speed is described as a decimal number encoded as an ASCII string. +// +//***************************************************************************** +void +io_set_animation_speed_string(char *pcBuf) +{ + unsigned long ulSpeed; + + // + // Parse the passed parameter as a decimal number. + // + ulSpeed = 0; + while((*pcBuf >= '0') && (*pcBuf <= '9')) + { + ulSpeed *= 10; + ulSpeed += (*pcBuf - '0'); + pcBuf++; + } + + // + // If the number is valid, set the new speed. + // + if(ulSpeed <= 100) + { + g_ulAnimSpeed = ulSpeed; + io_set_timer(g_ulAnimSpeed); + } +} + +//***************************************************************************** +// +// Set the speed of the animation shown on the display. +// +//***************************************************************************** +void +io_set_animation_speed(unsigned long ulSpeed) +{ + // + // If the number is valid, set the new speed. + // + if(ulSpeed <= 100) + { + g_ulAnimSpeed = ulSpeed; + io_set_timer(g_ulAnimSpeed); + } +} + +//***************************************************************************** +// +// Get the current animation speed as an ASCII string. +// +//***************************************************************************** +void +io_get_animation_speed_string(char *pcBuf, int iBufLen) +{ + usnprintf(pcBuf, iBufLen, "%d%%", g_ulAnimSpeed); +} + +//***************************************************************************** +// +// Get the current animation speed as a number. +// +//***************************************************************************** +unsigned long +io_get_animation_speed(void) +{ + return(g_ulAnimSpeed); +} -- cgit v1.3.1