Add base code
This commit is contained in:
parent
92a2716ca6
commit
c8a891b513
|
@ -0,0 +1,61 @@
|
||||||
|
#include <stdint.h>
|
||||||
|
#include "tm4c123gh6pm.h"
|
||||||
|
|
||||||
|
#define ZERO_DEF 0
|
||||||
|
|
||||||
|
/**
|
||||||
|
* main.c
|
||||||
|
*/
|
||||||
|
|
||||||
|
void counter_loop (void);
|
||||||
|
|
||||||
|
int main(void)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GPIODATA ->> 0xE
|
||||||
|
* GPIODIR ->> COnfigure each pin as I/P or O/P >> <0000 1110> = 0xE
|
||||||
|
* GPIOPCTL
|
||||||
|
GPIOSLR -- Slew Rate Control
|
||||||
|
x GPIOPUR -- Pull Up Enable -- 0x11
|
||||||
|
x GPIOPDR -- Pull Down Enable
|
||||||
|
x GPIOODR -- OpenDrain
|
||||||
|
x GPIODEN -- GPIO Digital Enable -- 0x00011111 >> 0x1F
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
{
|
||||||
|
|
||||||
|
register uint32_t x = ZERO_DEF;
|
||||||
|
|
||||||
|
SYSCTL_RCGC2_R |= SYSCTL_RCGC2_GPIOF;
|
||||||
|
GPIO_PORTF_DEN_R = 0x1F;
|
||||||
|
GPIO_PORTF_PUR_R = 0x11;
|
||||||
|
GPIO_PORTF_DIR_R = 0x0E;
|
||||||
|
GPIO_PORTF_DATA_R = 0xE;
|
||||||
|
while(1)
|
||||||
|
{
|
||||||
|
GPIO_PORTF_DATA_R = 0x0;
|
||||||
|
GPIO_PORTF_DATA_R = 0x2;
|
||||||
|
GPIO_PORTF_DATA_R = 0x4;
|
||||||
|
GPIO_PORTF_DATA_R = 0x8;
|
||||||
|
GPIO_PORTF_DATA_R = 0xE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
while (1)
|
||||||
|
{
|
||||||
|
x++;
|
||||||
|
counter_loop();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void counter_loop (void)
|
||||||
|
{
|
||||||
|
register uint32_t count=10;
|
||||||
|
while(count>0)
|
||||||
|
count--;
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,45 @@
|
||||||
|
/******************************************************************************
|
||||||
|
*
|
||||||
|
* Default Linker Command file for the Texas Instruments TM4C123GH6PM
|
||||||
|
*
|
||||||
|
* This is derived from revision 15071 of the TivaWare Library.
|
||||||
|
*
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
|
--retain=g_pfnVectors
|
||||||
|
|
||||||
|
MEMORY
|
||||||
|
{
|
||||||
|
FLASH (RX) : origin = 0x00000000, length = 0x00040000
|
||||||
|
SRAM (RWX) : origin = 0x20000000, length = 0x00008000
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 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=rtsv7M4_T_le_eabi.lib */
|
||||||
|
|
||||||
|
/* Section allocation in memory */
|
||||||
|
|
||||||
|
SECTIONS
|
||||||
|
{
|
||||||
|
.intvecs: > 0x00000000
|
||||||
|
.text : > FLASH
|
||||||
|
.const : > FLASH
|
||||||
|
.cinit : > FLASH
|
||||||
|
.pinit : > FLASH
|
||||||
|
.init_array : > FLASH
|
||||||
|
|
||||||
|
.vtable : > 0x20000000
|
||||||
|
.data : > SRAM
|
||||||
|
.bss : > SRAM
|
||||||
|
.sysmem : > SRAM
|
||||||
|
.stack : > SRAM
|
||||||
|
}
|
||||||
|
|
||||||
|
__STACK_TOP = __stack + 512;
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,300 @@
|
||||||
|
//*****************************************************************************
|
||||||
|
//
|
||||||
|
// Startup code for use with TI's Code Composer Studio.
|
||||||
|
//
|
||||||
|
// Copyright (c) 2011-2014 Texas Instruments Incorporated. All rights reserved.
|
||||||
|
// Software License Agreement
|
||||||
|
//
|
||||||
|
// 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.
|
||||||
|
//
|
||||||
|
//*****************************************************************************
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
//*****************************************************************************
|
||||||
|
//
|
||||||
|
// 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 uint32_t __STACK_TOP;
|
||||||
|
|
||||||
|
//*****************************************************************************
|
||||||
|
//
|
||||||
|
// External declarations for the interrupt handlers used by the application.
|
||||||
|
//
|
||||||
|
//*****************************************************************************
|
||||||
|
// To be added by user
|
||||||
|
|
||||||
|
//*****************************************************************************
|
||||||
|
//
|
||||||
|
// 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))((uint32_t)&__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
|
||||||
|
0, // Reserved
|
||||||
|
0, // Reserved
|
||||||
|
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
|
||||||
|
0, // Reserved
|
||||||
|
0, // Reserved
|
||||||
|
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
|
||||||
|
0, // Reserved
|
||||||
|
0, // Reserved
|
||||||
|
IntDefaultHandler, // I2C4 Master and Slave
|
||||||
|
IntDefaultHandler, // I2C5 Master and Slave
|
||||||
|
IntDefaultHandler, // GPIO Port M
|
||||||
|
IntDefaultHandler, // GPIO Port N
|
||||||
|
IntDefaultHandler, // Quadrature Encoder 2
|
||||||
|
0, // Reserved
|
||||||
|
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)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue