/* 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__