/** | |
* @file hal_board.c | |
* | |
* Copyright 2010 Texas Instruments, Inc. | |
******************************************************************************/ | |
#include "msp430.h" | |
#include "hal_MSP-EXP430F5438.h" | |
/**********************************************************************//** | |
* @brief Initializes ACLK, MCLK, SMCLK outputs on P11.0, P11.1, | |
* and P11.2, respectively. | |
* | |
* @param none | |
* | |
* @return none | |
*************************************************************************/ | |
void halBoardOutputSystemClock(void) //outputs clock to testpoints | |
{ | |
CLK_PORT_DIR |= 0x07; | |
CLK_PORT_SEL |= 0x07; | |
} | |
/**********************************************************************//** | |
* @brief Stops the output of ACLK, MCLK, SMCLK on P11.0, P11.1, and P11.2. | |
* | |
* @param none | |
* | |
* @return none | |
*************************************************************************/ | |
void halBoardStopOutputSystemClock(void) | |
{ | |
CLK_PORT_OUT &= ~0x07; | |
CLK_PORT_DIR |= 0x07; | |
CLK_PORT_SEL &= ~0x07; | |
} | |
/**********************************************************************//** | |
* @brief Initializes all GPIO configurations. | |
* | |
* @param none | |
* | |
* @return none | |
*************************************************************************/ | |
void halBoardInit(void) | |
{ | |
//Tie unused ports | |
PAOUT = 0; | |
PADIR = 0xFFFF; | |
PASEL = 0; | |
PBOUT = 0; | |
PBDIR = 0xFFFF; | |
PBSEL = 0; | |
PCOUT = 0; | |
PCDIR = 0xFFFF; | |
PCSEL = 0; | |
PDOUT = 0; | |
PDDIR = 0xFFFF; | |
PDSEL = 0x0003; | |
PEOUT = 0; | |
PEDIR = 0xFEFF; // P10.0 to USB RST pin, | |
// ...if enabled with J5 | |
PESEL = 0; | |
P11OUT = 0; | |
P11DIR = 0xFF; | |
PJOUT = 0; | |
PJDIR = 0xFF; | |
P11SEL = 0; | |
} | |
/**********************************************************************//** | |
* @brief Set function for MCLK frequency. | |
* | |
* | |
* @return none | |
*************************************************************************/ | |
void hal430SetSystemClock(unsigned long req_clock_rate, unsigned long ref_clock_rate) | |
{ | |
/* Convert a Hz value to a KHz value, as required | |
* by the Init_FLL_Settle() function. */ | |
unsigned long ulCPU_Clock_KHz = req_clock_rate / 1000UL; | |
//Make sure we aren't overclocking | |
if(ulCPU_Clock_KHz > 25000L) | |
{ | |
ulCPU_Clock_KHz = 25000L; | |
} | |
//Set VCore to a level sufficient for the requested clock speed. | |
if(ulCPU_Clock_KHz <= 8000L) | |
{ | |
SetVCore(PMMCOREV_0); | |
} | |
else if(ulCPU_Clock_KHz <= 12000L) | |
{ | |
SetVCore(PMMCOREV_1); | |
} | |
else if(ulCPU_Clock_KHz <= 20000L) | |
{ | |
SetVCore(PMMCOREV_2); | |
} | |
else | |
{ | |
SetVCore(PMMCOREV_3); | |
} | |
//Set the DCO | |
Init_FLL_Settle( ( unsigned short )ulCPU_Clock_KHz, req_clock_rate / ref_clock_rate ); | |
} |