📄 stm8s_clk.h
字号:
/**
******************************************************************************
* @file stm8s_clk.h
* @brief This file contains all functions prototype and macros for the CLK peripheral.
* @author STMicroelectronics - MCD Application Team
* @version V1.1.1
* @date 06/05/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.
*
* <h2><center>© COPYRIGHT 2009 STMicroelectronics</center></h2>
* @image html logo.bmp
******************************************************************************
*/
/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __STM8S_CLK_H
#define __STM8S_CLK_H
/* Includes ------------------------------------------------------------------*/
/* Contains the description of all STM8 hardware registers */
#include "stm8s.h"
/* Exported types ------------------------------------------------------------*/
/** @addtogroup CLK_Exported_Types
* @{
*/
/**
* @brief Switch Mode Auto, Manual.
*/
typedef enum {
CLK_SWITCHMODE_MANUAL = (u8)0x00, /*!< Enable the manual clock switching mode */
CLK_SWITCHMODE_AUTO = (u8)0x01 /*!< Enable the automatic clock switching mode */
} CLK_SwitchMode_TypeDef;
/**
* @brief Current Clock State.
*/
typedef enum {
CLK_CURRENTCLOCKSTATE_DISABLE = (u8)0x00, /*!< Current clock disable */
CLK_CURRENTCLOCKSTATE_ENABLE = (u8)0x01 /*!< Current clock enable */
} CLK_CurrentClockState_TypeDef;
/**
* @brief Clock security system configuration.
*/
typedef enum {
CLK_CSSCONFIG_ENABLEWITHIT = (u8)0x05, /*!< Enable CSS with detection interrupt */
CLK_CSSCONFIG_ENABLE = (u8)0x01, /*!< Enable CSS without detection interrupt */
CLK_CSSCONFIG_DISABLE = (u8)0x00 /*!< Leave CSS desactivated (to be used in CLK_Init() function) */
} CLK_CSSConfig_TypeDef;
/**
* @brief CLK Clock Source.
*/
typedef enum {
CLK_SOURCE_HSI = (u8)0xE1, /*!< Clock Source HSI. */
CLK_SOURCE_LSI = (u8)0xD2, /*!< Clock Source LSI. */
CLK_SOURCE_HSE = (u8)0xB4 /*!< Clock Source HSE. */
} CLK_Source_TypeDef;
/**
* @brief CLK HSI Calibration Value.
*/
typedef enum {
CLK_HSITRIMVALUE_0 = (u8)0x00, /*!< HSI Calibtation Value 0 */
CLK_HSITRIMVALUE_1 = (u8)0x01, /*!< HSI Calibtation Value 1 */
CLK_HSITRIMVALUE_2 = (u8)0x02, /*!< HSI Calibtation Value 2 */
CLK_HSITRIMVALUE_3 = (u8)0x03, /*!< HSI Calibtation Value 3 */
CLK_HSITRIMVALUE_4 = (u8)0x04, /*!< HSI Calibtation Value 4 */
CLK_HSITRIMVALUE_5 = (u8)0x05, /*!< HSI Calibtation Value 5 */
CLK_HSITRIMVALUE_6 = (u8)0x06, /*!< HSI Calibtation Value 6 */
CLK_HSITRIMVALUE_7 = (u8)0x07 /*!< HSI Calibtation Value 7 */
} CLK_HSITrimValue_TypeDef;
/**
* @brief CLK Clock Output
*/
typedef enum {
CLK_OUTPUT_HSI = (u8)0x00, /*!< Clock Output HSI */
CLK_OUTPUT_LSI = (u8)0x02, /*!< Clock Output LSI */
CLK_OUTPUT_HSE = (u8)0x04, /*!< Clock Output HSE */
CLK_OUTPUT_CPU = (u8)0x08, /*!< Clock Output CPU */
CLK_OUTPUT_CPUDIV2 = (u8)0x0A, /*!< Clock Output CPU/2 */
CLK_OUTPUT_CPUDIV4 = (u8)0x0C, /*!< Clock Output CPU/4 */
CLK_OUTPUT_CPUDIV8 = (u8)0x0E, /*!< Clock Output CPU/8 */
CLK_OUTPUT_CPUDIV16 = (u8)0x10, /*!< Clock Output CPU/16 */
CLK_OUTPUT_CPUDIV32 = (u8)0x12, /*!< Clock Output CPU/32 */
CLK_OUTPUT_CPUDIV64 = (u8)0x14, /*!< Clock Output CPU/64 */
CLK_OUTPUT_HSIRC = (u8)0x16, /*!< Clock Output HSI RC */
CLK_OUTPUT_MASTER = (u8)0x18, /*!< Clock Output Master */
CLK_OUTPUT_OTHERS = (u8)0x1A /*!< Clock Output OTHER */
} CLK_Output_TypeDef;
/**
* @brief CLK Enable peripheral
*/
/* Elements values convention: 0xXY
X = choice between the peripheral registers
X = 0 : PCKENR1
X = 1 : PCKENR2
Y = Peripheral position in the register
*/
typedef enum {
CLK_PERIPHERAL_I2C = (u8)0x00, /*!< Peripheral Clock Enable 1, I2C */
CLK_PERIPHERAL_SPI = (u8)0x01, /*!< Peripheral Clock Enable 1, SPI */
#if defined(STM8S208) || defined(STM8S207)
CLK_PERIPHERAL_UART1 = (u8)0x02, /*!< Peripheral Clock Enable 1, UART1 */
#else
CLK_PERIPHERAL_UART1 = (u8)0x03, /*!< Peripheral Clock Enable 1, UART1 */
#endif
CLK_PERIPHERAL_UART2 = (u8)0x03, /*!< Peripheral Clock Enable 1, UART2 */
CLK_PERIPHERAL_UART3 = (u8)0x03, /*!< Peripheral Clock Enable 1, UART3 */
CLK_PERIPHERAL_TIMER6 = (u8)0x04, /*!< Peripheral Clock Enable 1, Timer6 */
CLK_PERIPHERAL_TIMER4 = (u8)0x04, /*!< Peripheral Clock Enable 1, Timer4 */
CLK_PERIPHERAL_TIMER5 = (u8)0x05, /*!< Peripheral Clock Enable 1, Timer5 */
CLK_PERIPHERAL_TIMER2 = (u8)0x05, /*!< Peripheral Clock Enable 1, Timer2 */
CLK_PERIPHERAL_TIMER3 = (u8)0x06, /*!< Peripheral Clock Enable 1, Timer3 */
CLK_PERIPHERAL_TIMER1 = (u8)0x07, /*!< Peripheral Clock Enable 1, Timer1 */
CLK_PERIPHERAL_AWU = (u8)0x12, /*!< Peripheral Clock Enable 2, AWU */
CLK_PERIPHERAL_ADC = (u8)0x13, /*!< Peripheral Clock Enable 2, ADC */
CLK_PERIPHERAL_CAN = (u8)0x17 /*!< Peripheral Clock Enable 2, CAN */
} CLK_Peripheral_TypeDef;
/**
* @brief CLK Flags.
*/
/* Elements values convention: 0xXZZ
X = choice between the flags registers
X = 1 : ICKR
X = 2 : ECKR
X = 3 : SWCR
X = 4 : CSSR
X = 5 : CCOR
ZZ = flag mask in the register (same as map file)
*/
typedef enum {
CLK_FLAG_LSIRDY = (u16)0x0110, /*!< Low speed internal oscillator ready Flag */
CLK_FLAG_HSIRDY = (u16)0x0102, /*!< High speed internal oscillator ready Flag */
CLK_FLAG_HSERDY = (u16)0x0202, /*!< High speed external oscillator ready Flag */
CLK_FLAG_SWIF = (u16)0x0308, /*!< Clock switch interrupt Flag */
CLK_FLAG_SWBSY = (u16)0x0301, /*!< Switch busy Flag */
CLK_FLAG_CSSD = (u16)0x0408, /*!< Clock security system detection Flag */
CLK_FLAG_AUX = (u16)0x0402, /*!< Auxiliary oscillator connected to master clock */
CLK_FLAG_CCOBSY = (u16)0x0504, /*!< Configurable clock output busy */
CLK_FLAG_CCORDY = (u16)0x0502 /*!< Configurable clock output ready */
}CLK_Flag_TypeDef;
/**
* @brief CLK interrupt configuration and Flags cleared by software.
*/
typedef enum {
CLK_IT_CSSD = (u8)0x0C, /*!< Clock security system detection Flag */
CLK_IT_SWIF = (u8)0x1C /*!< Clock switch interrupt Flag */
}CLK_IT_TypeDef;
/**
* @brief CLK Clock Divisor.
*/
/* Warning:
0xxxxxx = HSI divider
1xxxxxx = CPU divider
Other bits correspond to the divider's bits mapping
*/
typedef enum {
CLK_PRESCALER_HSIDIV1 = (u8)0x00, /*!< High speed internal clock prescaler: 1 */
CLK_PRESCALER_HSIDIV2 = (u8)0x08, /*!< High speed internal clock prescaler: 2 */
CLK_PRESCALER_HSIDIV4 = (u8)0x10, /*!< High speed internal clock prescaler: 4 */
CLK_PRESCALER_HSIDIV8 = (u8)0x18, /*!< High speed internal clock prescaler: 8 */
CLK_PRESCALER_CPUDIV1 = (u8)0x80, /*!< CPU clock division factors 1 */
CLK_PRESCALER_CPUDIV2 = (u8)0x81, /*!< CPU clock division factors 2 */
CLK_PRESCALER_CPUDIV4 = (u8)0x82, /*!< CPU clock division factors 4 */
CLK_PRESCALER_CPUDIV8 = (u8)0x83, /*!< CPU clock division factors 8 */
CLK_PRESCALER_CPUDIV16 = (u8)0x84, /*!< CPU clock division factors 16 */
CLK_PRESCALER_CPUDIV32 = (u8)0x85, /*!< CPU clock division factors 32 */
CLK_PRESCALER_CPUDIV64 = (u8)0x86, /*!< CPU clock division factors 64 */
CLK_PRESCALER_CPUDIV128 = (u8)0x87 /*!< CPU clock division factors 128 */
} CLK_Prescaler_TypeDef;
/**
* @brief SWIM Clock divider.
*/
typedef enum {
CLK_SWIMDIVIDER_2 = (u8)0x00, /*!< SWIM clock is divided by 2 */
CLK_SWIMDIVIDER_OTHER = (u8)0x01 /*!< SWIM clock is not divided by 2 */
}CLK_SWIMDivider_TypeDef;
/**
* @brief External CAN clock dividern.
*/
typedef enum{
CLK_CANDIVIDER_1 = (u8)0x00, /*!< External CAN clock = HSE/1 */
CLK_CANDIVIDER_2 = (u8)0x01, /*!< External CAN clock = HSE/2 */
CLK_CANDIVIDER_3 = (u8)0x02, /*!< External CAN clock = HSE/3 */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -