/*
system_stm32f10x.h - This provides system clock functions and an exported
variable for System init and clock configuration.
includes:
SystemInit, SystemInit_ExtMemCtl, Sys_Sysclk_Update, Sys_GetSysclk_src,
Sys_SetSysclk_src, Sys_HSI_Cmd, Sys_HSE_Cmd, Sys_ExtClock_Cmd,
Sys_PLL_Cmd, Sys_SetPLLClock
Copyright (C) 2011 Houtouridis Christos (http://houtouridis.blogspot.com/)
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see .
Author: Houtouridis Christos
Date: 11/2011
Version: 0.1
*/
#ifndef __stm32f10x_clock_h__
#define __stm32f10x_clock_h__
#ifdef __cplusplus
extern "C" {
#endif
#include
#include "stm32f10x_assert.h"
/* ================ User Defines ======================*/
#define SYSTEM_STARTUP_TIMEOUT (0x500)
/* ================ General Defines ======================*/
#define SYSCLK_HSI_FREQ (8000000)
#ifndef CLOCK
#warning "CLOCK is not defined. Used 8000000 as default value"
#define CLOCK (SYSCLK_HSI_FREQ)
#endif
#if defined (STM32F10X_LD_VL) || (defined STM32F10X_MD_VL) || (defined STM32F10X_HD_VL)
#define SYSTEM_MAX_CLK (24000000)
#define SYSTEM_MIN_CLK (8000000)
#elif defined (STM32F10X_MD)
#define SYSTEM_MAX_CLK (32000000)
#define SYSTEM_MIN_CLK (8000000)
#elif defined (STM32F10X_HD)
#define SYSTEM_MAX_CLK (36000000)
//#define SYSTEM_MAX_CLK (48000000)
//#define SYSTEM_MAX_CLK (72000000)
#define SYSTEM_MIN_CLK (8000000)
#endif
typedef uint32_t CLK_t;
typedef enum
{
// DO NOT change the numbers,
//see STM Reference manual page 83
HSI=0, HSE, PLLCLK
}Sys_CLK_src_t;
typedef enum
{
DIS=0, EN
}Sys_FunctionalState_t;
typedef enum
{
HSI_2=0, PREDIV
}Sys_PLL_src_t;
typedef enum
{
System_OK=0, System_ERROR
}Sys_Exit_t;
/* ================ Exported Functions ======================*/
CLK_t Sys_Sysclk_Update (void);
Sys_CLK_src_t Sys_GetSysclk_src (void);
Sys_Exit_t Sys_SetSysclk_src (Sys_CLK_src_t cs);
Sys_Exit_t Sys_HSI_Cmd (Sys_FunctionalState_t state);
Sys_Exit_t Sys_HSE_Cmd (Sys_FunctionalState_t state);
Sys_Exit_t Sys_ExtClock_Cmd (Sys_FunctionalState_t state);
Sys_Exit_t Sys_PLL_Cmd (Sys_FunctionalState_t state);
Sys_Exit_t Sys_SetPLLClock (CLK_t clk, Sys_PLL_src_t ps);
#ifdef __cplusplus
}
#endif
#endif // #ifndef __stm32f10x_clock_h__