Jump to content
43oh

change system clock @Stellaris howto


Recommended Posts

Hi all,

I'm testing system clock frequency.

 

 

 

1) change board.txt

    (energia_dir)\hardware\lm4f\boards.txt

######################################################
# Tiva C TM4C1233H6PM 80MHz
# with launchpad
######################################################
lpTivaC-1.name=Tiva C w/ TM4C1233H6PM (80MHz)
lpTivaC-1.upload.maximum_size=262144
lpTivaC-1.build.mcu=cortex-m4
lpTivaC-1.build.f_cpu=80000000L
lpTivaC-1.build.core=lm4f
lpTivaC-1.build.variant=stellarpad
lpTivaC-1.ldscript=lm4fcpp.ld

######################################################
# Tiva C TM4C1233H6PM 25MHz
# with launchpad
######################################################
lpTivaC-2.name=Tiva C w/ TM4C1233H6PM (25MHz)
lpTivaC-2.upload.maximum_size=262144
lpTivaC-2.build.mcu=cortex-m4
lpTivaC-2.build.f_cpu=25000000L
lpTivaC-2.build.core=lm4f
lpTivaC-2.build.variant=stellarpad
lpTivaC-2.ldscript=lm4fcpp.ld

2) change wireing.c,

    (energia_dir)\hardware\lm4f\cores\lm4f\wiring.c

void timerInit()
{

#if F_CPU >= 80000000
    ROM_SysCtlClockSet(SYSCTL_SYSDIV_2_5|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHZ|
                SYSCTL_OSC_MAIN);
#elif F_CPU >= 50000000
    ROM_SysCtlClockSet(SYSCTL_SYSDIV_4|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHZ|
                SYSCTL_OSC_MAIN);
#elif F_CPU >= 40000000
    ROM_SysCtlClockSet(SYSCTL_SYSDIV_5|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHZ|
                SYSCTL_OSC_MAIN);
#elif F_CPU >= 25000000
    ROM_SysCtlClockSet(SYSCTL_SYSDIV_8|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHZ|
                SYSCTL_OSC_MAIN);
#elif F_CPU >= 16000000
    ROM_SysCtlClockSet(SYSCTL_SYSDIV_12_5|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHZ|
                SYSCTL_OSC_MAIN);
#elif F_CPU >= 8000000
    ROM_SysCtlClockSet(SYSCTL_SYSDIV_25|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHZ|
                SYSCTL_OSC_MAIN);
#elif F_CPU >= 4000000
    ROM_SysCtlClockSet(SYSCTL_SYSDIV_50|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHZ|
                SYSCTL_OSC_MAIN);
#else
    ROM_SysCtlClockSet(SYSCTL_SYSDIV_2_5|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHZ|
                SYSCTL_OSC_MAIN);
#endif
    //
    // Run at system clock at 80MHz
    //

    //
    // SysTick is used for delay() and delayMicroseconds()
    //
// ROM_SysTickPeriodSet(0x00FFFFFF);
    ROM_SysTickPeriodSet(ROM_SysCtlClockGet() / TICKS_PER_SECOND);
    ROM_SysTickEnable();

.....
}
 
unsigned long micros(void)
{
    volatile unsigned int conMz = ROM_SysCtlClockGet()/1000/1000;
// return (milliseconds * 1000) + (HWREG(TIMER5_BASE + TIMER_O_TAV) / 80);
return (milliseconds * 1000) + (HWREG(TIMER5_BASE + TIMER_O_TAV) / conMz);
}


void delayMicroseconds(unsigned int us)
{
    volatile unsigned int conMz = ROM_SysCtlClockGet()/1000/1000;
volatile unsigned long elapsedTime;
unsigned long startTime = HWREG(NVIC_ST_CURRENT);
do{
elapsedTime = startTime-(HWREG(NVIC_ST_CURRENT) & 0x00FFFFFF);
}
// while(elapsedTime <= us*80);
while(elapsedTime <= us*conMz );
}


3) check clock @ Stellaris LaunchPad

//
// Check System Clock
//
//

#include "Energia.h"
#include "inc/hw_ints.h"
#include "inc/hw_nvic.h"
#include "inc/hw_sysctl.h"
#include "inc/hw_types.h"
#include "inc/hw_timer.h"

#include "driverlib/rom.h"
#include "driverlib/cpu.h"
#include "driverlib/debug.h"
#include "driverlib/interrupt.h"
#include "driverlib/timer.h"
#include "driverlib/sysctl.h"
#include "driverlib/systick.h"



void setup()
{
  Serial.begin(38400);
  pinMode( PUSH1, INPUT_PULLUP );
  pinMode( PUSH2, INPUT_PULLUP );
  
}

uint32_t system_clock;
uint32_t tick_value;

void loop()
{
  // put your main code here, to run repeatedly:
  system_clock = SysCtlClockGet()/1000;
  
  Serial.println( system_clock );
  tick_value = ROM_SysTickPeriodGet();
  Serial.println( tick_value );
  
  tone( BLUE_LED,500,100);
  delay(1000);
  
}
Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...