/**
******************************************************************************
* @file stm8l10x_clk.h
* @brief This file contains all functions prototype and macros for the CLK peripherals.
* @author STMicroelectronics - MCD Application Team
* @version V1.1.0
* @date 09/14/2009
******************************************************************************
*
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
* TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY
* DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
* FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
* CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
*
*
© COPYRIGHT 2009 STMicroelectronics
* @image html logo.bmp
******************************************************************************
*/
/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __STM8L10x_CLK_H
#define __STM8L10x_CLK_H
/* Includes ------------------------------------------------------------------*/
#include "stm8l10x.h"
/* Exported variables ------------------------------------------------------- */
/* Exported types ------------------------------------------------------------*/
/** @addtogroup CLK_Exported_Types
* @{
*/
/**
* @brief CLK Clock Output
*/
typedef enum {
CLK_Output_ClockMaster = (uint8_t)0x00, /*!< Clock Output CKM */
CLK_Output_ClockMasterDiv2 = (uint8_t)0x02, /*!< Clock Output CKM/2 */
CLK_Output_ClockMasterDiv4 = (uint8_t)0x04, /*!< Clock Output CKM/4 */
CLK_Output_ClockMasterDiv16 = (uint8_t)0x06 /*!< Clock Output CKM/16 */
} CLK_Output_TypeDef;
/**
* @brief CLK Enable peripheral PCKEN
*/
typedef enum {
CLK_Peripheral_TIM2 = (uint8_t)0x01, /*!< Peripheral Clock Enable 1, TIM2 */
CLK_Peripheral_TIM3 = (uint8_t)0x02, /*!< Peripheral Clock Enable 1, TIM3 */
CLK_Peripheral_TIM4 = (uint8_t)0x04, /*!< Peripheral Clock Enable 1, TIM4 */
CLK_Peripheral_I2C = (uint8_t)0x08, /*!< Peripheral Clock Enable 1, I2C */
CLK_Peripheral_SPI = (uint8_t)0x10, /*!< Peripheral Clock Enable 1, SPI */
CLK_Peripheral_USART = (uint8_t)0x20, /*!< Peripheral Clock Enable 1, USART */
CLK_Peripheral_AWU = (uint8_t)0x40 /*!< Peripheral Clock Enable 1, AWU */
} CLK_Peripheral_TypeDef;
/**
* @brief CLK Clock Divisor
*/
typedef enum {
CLK_MasterPrescaler_HSIDiv1 = (uint8_t)0x00, /*!< High speed internal clock prescaler: 1 */
CLK_MasterPrescaler_HSIDiv2 = (uint8_t)0x01, /*!< High speed internal clock prescaler: 2 */
CLK_MasterPrescaler_HSIDiv4 = (uint8_t)0x02, /*!< High speed internal clock prescaler: 4 */
CLK_MasterPrescaler_HSIDiv8 = (uint8_t)0x03 /*!< High speed internal clock prescaler: 8 */
} CLK_MasterPrescaler_TypeDef;
/**
* @}
*/
/* Exported constants --------------------------------------------------------*/
/** @addtogroup CLK_Exported_Constants
* @{
*/
#define HSI_VALUE ((uint32_t)16000000) /*!< Typical Value of the HSI in Hz */
#define LSI_VALUE ((uint32_t)32000) /*!< Typical Value of the LSI in Hz */
/**
* @}
*/
/* Exported macros -----------------------------------------------------------*/
/* Private macros ------------------------------------------------------------*/
/** @addtogroup CLK_Private_Macros
* @{
*/
/**
* @brief Macro used by the assert function to check the different functions parameters.
*/
/**
* @brief Macro used by the assert function to check the different Output clock.
*/
#define IS_CLK_OUTPUT(OUTPUT) \
(((OUTPUT) == CLK_Output_ClockMaster) ||\
((OUTPUT) == CLK_Output_ClockMasterDiv2) ||\
((OUTPUT) == CLK_Output_ClockMasterDiv4) ||\
((OUTPUT) == CLK_Output_ClockMasterDiv16))
/**
* @brief Macro used by the assert function to check the different periheral to clock.
*/
#define IS_CLK_PERIPHERAL(PERIPHERAL) ((((PERIPHERAL) & (uint8_t)0x80) == (uint8_t)0x00) && ((PERIPHERAL) != (uint8_t)0x00))
/**
* @brief Macro used by the assert function to check the different clock prescaler.
*/
#define IS_CLK_MASTER_PRESCALER(PRESCALER) \
(((PRESCALER) == CLK_MasterPrescaler_HSIDiv1 ) ||\
((PRESCALER) == CLK_MasterPrescaler_HSIDiv2 ) ||\
((PRESCALER) == CLK_MasterPrescaler_HSIDiv4 ) ||\
((PRESCALER) == CLK_MasterPrescaler_HSIDiv8))
/**
* @}
*/
/* Exported functions ------------------------------------------------------- */
/** @addtogroup CLK_Exported_Functions
* @{
*/
void CLK_DeInit(void);
void CLK_CCOCmd(FunctionalState NewState);
void CLK_PeripheralClockConfig(CLK_Peripheral_TypeDef CLK_Peripheral,
FunctionalState NewState);
void CLK_MasterPrescalerConfig(CLK_MasterPrescaler_TypeDef CLK_MasterPrescaler);
void CLK_CCOConfig(CLK_Output_TypeDef CLK_Output);
uint32_t CLK_GetClockFreq(void);
/**
* @}
*/
#endif /* __STM8L10x_CLK_H */
/******************* (C) COPYRIGHT 2009 STMicroelectronics *****END OF FILE****/