123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382 |
- #ifndef __STM8S_CLK_H
- #define __STM8S_CLK_H
- #include "stm8s.h"
- typedef enum {
- CLK_SWITCHMODE_MANUAL = (uint8_t)0x00,
- CLK_SWITCHMODE_AUTO = (uint8_t)0x01
- } CLK_SwitchMode_TypeDef;
- typedef enum {
- CLK_CURRENTCLOCKSTATE_DISABLE = (uint8_t)0x00,
- CLK_CURRENTCLOCKSTATE_ENABLE = (uint8_t)0x01
- } CLK_CurrentClockState_TypeDef;
- typedef enum {
- CLK_CSSCONFIG_ENABLEWITHIT = (uint8_t)0x05,
- CLK_CSSCONFIG_ENABLE = (uint8_t)0x01,
- CLK_CSSCONFIG_DISABLE = (uint8_t)0x00
- } CLK_CSSConfig_TypeDef;
- typedef enum {
- CLK_SOURCE_HSI = (uint8_t)0xE1,
- CLK_SOURCE_LSI = (uint8_t)0xD2,
- CLK_SOURCE_HSE = (uint8_t)0xB4
- } CLK_Source_TypeDef;
- typedef enum {
- CLK_HSITRIMVALUE_0 = (uint8_t)0x00,
- CLK_HSITRIMVALUE_1 = (uint8_t)0x01,
- CLK_HSITRIMVALUE_2 = (uint8_t)0x02,
- CLK_HSITRIMVALUE_3 = (uint8_t)0x03,
- CLK_HSITRIMVALUE_4 = (uint8_t)0x04,
- CLK_HSITRIMVALUE_5 = (uint8_t)0x05,
- CLK_HSITRIMVALUE_6 = (uint8_t)0x06,
- CLK_HSITRIMVALUE_7 = (uint8_t)0x07
- } CLK_HSITrimValue_TypeDef;
- typedef enum {
- CLK_OUTPUT_HSI = (uint8_t)0x00,
- CLK_OUTPUT_LSI = (uint8_t)0x02,
- CLK_OUTPUT_HSE = (uint8_t)0x04,
- CLK_OUTPUT_CPU = (uint8_t)0x08,
- CLK_OUTPUT_CPUDIV2 = (uint8_t)0x0A,
- CLK_OUTPUT_CPUDIV4 = (uint8_t)0x0C,
- CLK_OUTPUT_CPUDIV8 = (uint8_t)0x0E,
- CLK_OUTPUT_CPUDIV16 = (uint8_t)0x10,
- CLK_OUTPUT_CPUDIV32 = (uint8_t)0x12,
- CLK_OUTPUT_CPUDIV64 = (uint8_t)0x14,
- CLK_OUTPUT_HSIRC = (uint8_t)0x16,
- CLK_OUTPUT_MASTER = (uint8_t)0x18,
- CLK_OUTPUT_OTHERS = (uint8_t)0x1A
- } CLK_Output_TypeDef;
- typedef enum {
- CLK_PERIPHERAL_I2C = (uint8_t)0x00,
- CLK_PERIPHERAL_SPI = (uint8_t)0x01,
- #if defined(STM8S208) || defined(STM8S207) || defined(STM8S007) || defined(STM8AF52Ax) || defined(STM8AF62Ax)
- CLK_PERIPHERAL_UART1 = (uint8_t)0x02,
- #else
- CLK_PERIPHERAL_UART1 = (uint8_t)0x03,
- #endif
- CLK_PERIPHERAL_UART2 = (uint8_t)0x03,
- CLK_PERIPHERAL_UART3 = (uint8_t)0x03,
- CLK_PERIPHERAL_TIMER6 = (uint8_t)0x04,
- CLK_PERIPHERAL_TIMER4 = (uint8_t)0x04,
- CLK_PERIPHERAL_TIMER5 = (uint8_t)0x05,
- CLK_PERIPHERAL_TIMER2 = (uint8_t)0x05,
- CLK_PERIPHERAL_TIMER3 = (uint8_t)0x06,
- CLK_PERIPHERAL_TIMER1 = (uint8_t)0x07,
- CLK_PERIPHERAL_AWU = (uint8_t)0x12,
- CLK_PERIPHERAL_ADC = (uint8_t)0x13,
- CLK_PERIPHERAL_CAN = (uint8_t)0x17
- } CLK_Peripheral_TypeDef;
- typedef enum {
- CLK_FLAG_LSIRDY = (uint16_t)0x0110,
- CLK_FLAG_HSIRDY = (uint16_t)0x0102,
- CLK_FLAG_HSERDY = (uint16_t)0x0202,
- CLK_FLAG_SWIF = (uint16_t)0x0308,
- CLK_FLAG_SWBSY = (uint16_t)0x0301,
- CLK_FLAG_CSSD = (uint16_t)0x0408,
- CLK_FLAG_AUX = (uint16_t)0x0402,
- CLK_FLAG_CCOBSY = (uint16_t)0x0504,
- CLK_FLAG_CCORDY = (uint16_t)0x0502
- }CLK_Flag_TypeDef;
- typedef enum {
- CLK_IT_CSSD = (uint8_t)0x0C,
- CLK_IT_SWIF = (uint8_t)0x1C
- }CLK_IT_TypeDef;
- typedef enum {
- CLK_PRESCALER_HSIDIV1 = (uint8_t)0x00,
- CLK_PRESCALER_HSIDIV2 = (uint8_t)0x08,
- CLK_PRESCALER_HSIDIV4 = (uint8_t)0x10,
- CLK_PRESCALER_HSIDIV8 = (uint8_t)0x18,
- CLK_PRESCALER_CPUDIV1 = (uint8_t)0x80,
- CLK_PRESCALER_CPUDIV2 = (uint8_t)0x81,
- CLK_PRESCALER_CPUDIV4 = (uint8_t)0x82,
- CLK_PRESCALER_CPUDIV8 = (uint8_t)0x83,
- CLK_PRESCALER_CPUDIV16 = (uint8_t)0x84,
- CLK_PRESCALER_CPUDIV32 = (uint8_t)0x85,
- CLK_PRESCALER_CPUDIV64 = (uint8_t)0x86,
- CLK_PRESCALER_CPUDIV128 = (uint8_t)0x87
- } CLK_Prescaler_TypeDef;
- typedef enum {
- CLK_SWIMDIVIDER_2 = (uint8_t)0x00,
- CLK_SWIMDIVIDER_OTHER = (uint8_t)0x01
- }CLK_SWIMDivider_TypeDef;
- #define CLK_TIMEOUT ((uint16_t)0xFFFF)
- #define IS_CLK_SWITCHMODE_OK(MODE) (((MODE) == CLK_SWITCHMODE_MANUAL) || ((MODE) == CLK_SWITCHMODE_AUTO))
- #define IS_CLK_CURRENTCLOCKSTATE_OK(STATE) (((STATE) == CLK_CURRENTCLOCKSTATE_DISABLE) ||\
- ((STATE) == CLK_CURRENTCLOCKSTATE_ENABLE))
- #define IS_CLK_CSSCONFIG_OK(CSSVALUE) (((CSSVALUE) == CLK_CSSCONFIG_ENABLEWITHIT) ||\
- ((CSSVALUE) == CLK_CSSCONFIG_ENABLE) ||\
- ((CSSVALUE) == CLK_CSSCONFIG_DISABLE))
- #define IS_CLK_SOURCE_OK(SOURCE) (((SOURCE) == CLK_SOURCE_HSI) ||\
- ((SOURCE) == CLK_SOURCE_LSI) ||\
- ((SOURCE) == CLK_SOURCE_HSE))
- #define IS_CLK_HSITRIMVALUE_OK(TRIMVALUE) (((TRIMVALUE) == CLK_HSITRIMVALUE_0) ||\
- ((TRIMVALUE) == CLK_HSITRIMVALUE_1) ||\
- ((TRIMVALUE) == CLK_HSITRIMVALUE_2) ||\
- ((TRIMVALUE) == CLK_HSITRIMVALUE_3) ||\
- ((TRIMVALUE) == CLK_HSITRIMVALUE_4) ||\
- ((TRIMVALUE) == CLK_HSITRIMVALUE_5) ||\
- ((TRIMVALUE) == CLK_HSITRIMVALUE_6) ||\
- ((TRIMVALUE) == CLK_HSITRIMVALUE_7))
- #define IS_CLK_OUTPUT_OK(OUTPUT) (((OUTPUT) == CLK_OUTPUT_HSI) ||\
- ((OUTPUT) == CLK_OUTPUT_HSE) ||\
- ((OUTPUT) == CLK_OUTPUT_LSI) ||\
- ((OUTPUT) == CLK_OUTPUT_CPU) ||\
- ((OUTPUT) == CLK_OUTPUT_CPUDIV2) ||\
- ((OUTPUT) == CLK_OUTPUT_CPUDIV4) ||\
- ((OUTPUT) == CLK_OUTPUT_CPUDIV8) ||\
- ((OUTPUT) == CLK_OUTPUT_CPUDIV16) ||\
- ((OUTPUT) == CLK_OUTPUT_CPUDIV32) ||\
- ((OUTPUT) == CLK_OUTPUT_CPUDIV64) ||\
- ((OUTPUT) == CLK_OUTPUT_HSIRC) ||\
- ((OUTPUT) == CLK_OUTPUT_MASTER) ||\
- ((OUTPUT) == CLK_OUTPUT_OTHERS))
- #define IS_CLK_PERIPHERAL_OK(PERIPHERAL) (((PERIPHERAL) == CLK_PERIPHERAL_I2C) ||\
- ((PERIPHERAL) == CLK_PERIPHERAL_SPI) ||\
- ((PERIPHERAL) == CLK_PERIPHERAL_UART3) ||\
- ((PERIPHERAL) == CLK_PERIPHERAL_UART2) ||\
- ((PERIPHERAL) == CLK_PERIPHERAL_UART1) ||\
- ((PERIPHERAL) == CLK_PERIPHERAL_TIMER4) ||\
- ((PERIPHERAL) == CLK_PERIPHERAL_TIMER2) ||\
- ((PERIPHERAL) == CLK_PERIPHERAL_TIMER5) ||\
- ((PERIPHERAL) == CLK_PERIPHERAL_TIMER6) ||\
- ((PERIPHERAL) == CLK_PERIPHERAL_TIMER3) ||\
- ((PERIPHERAL) == CLK_PERIPHERAL_TIMER1) ||\
- ((PERIPHERAL) == CLK_PERIPHERAL_CAN) ||\
- ((PERIPHERAL) == CLK_PERIPHERAL_ADC) ||\
- ((PERIPHERAL) == CLK_PERIPHERAL_AWU))
- #define IS_CLK_FLAG_OK(FLAG) (((FLAG) == CLK_FLAG_LSIRDY) ||\
- ((FLAG) == CLK_FLAG_HSIRDY) ||\
- ((FLAG) == CLK_FLAG_HSERDY) ||\
- ((FLAG) == CLK_FLAG_SWIF) ||\
- ((FLAG) == CLK_FLAG_SWBSY) ||\
- ((FLAG) == CLK_FLAG_CSSD) ||\
- ((FLAG) == CLK_FLAG_AUX) ||\
- ((FLAG) == CLK_FLAG_CCOBSY) ||\
- ((FLAG) == CLK_FLAG_CCORDY))
- #define IS_CLK_IT_OK(IT) (((IT) == CLK_IT_CSSD) || ((IT) == CLK_IT_SWIF))
- #define IS_CLK_HSIPRESCALER_OK(PRESCALER) (((PRESCALER) == CLK_PRESCALER_HSIDIV1) ||\
- ((PRESCALER) == CLK_PRESCALER_HSIDIV2) ||\
- ((PRESCALER) == CLK_PRESCALER_HSIDIV4) ||\
- ((PRESCALER) == CLK_PRESCALER_HSIDIV8))
- #define IS_CLK_PRESCALER_OK(PRESCALER) (((PRESCALER) == CLK_PRESCALER_HSIDIV1) ||\
- ((PRESCALER) == CLK_PRESCALER_HSIDIV2) ||\
- ((PRESCALER) == CLK_PRESCALER_HSIDIV4) ||\
- ((PRESCALER) == CLK_PRESCALER_HSIDIV8) ||\
- ((PRESCALER) == CLK_PRESCALER_CPUDIV1) ||\
- ((PRESCALER) == CLK_PRESCALER_CPUDIV2) ||\
- ((PRESCALER) == CLK_PRESCALER_CPUDIV4) ||\
- ((PRESCALER) == CLK_PRESCALER_CPUDIV8) ||\
- ((PRESCALER) == CLK_PRESCALER_CPUDIV16) ||\
- ((PRESCALER) == CLK_PRESCALER_CPUDIV32) ||\
- ((PRESCALER) == CLK_PRESCALER_CPUDIV64) ||\
- ((PRESCALER) == CLK_PRESCALER_CPUDIV128))
- #define IS_CLK_SWIMDIVIDER_OK(SWIMDIVIDER) (((SWIMDIVIDER) == CLK_SWIMDIVIDER_2) || ((SWIMDIVIDER) == CLK_SWIMDIVIDER_OTHER))
- void CLK_DeInit(void);
- void CLK_HSECmd(FunctionalState NewState);
- void CLK_HSICmd(FunctionalState NewState);
- void CLK_LSICmd(FunctionalState NewState);
- void CLK_CCOCmd(FunctionalState NewState);
- void CLK_ClockSwitchCmd(FunctionalState NewState);
- void CLK_FastHaltWakeUpCmd(FunctionalState NewState);
- void CLK_SlowActiveHaltWakeUpCmd(FunctionalState NewState);
- void CLK_PeripheralClockConfig(CLK_Peripheral_TypeDef CLK_Peripheral, FunctionalState NewState);
- ErrorStatus CLK_ClockSwitchConfig(CLK_SwitchMode_TypeDef CLK_SwitchMode, CLK_Source_TypeDef CLK_NewClock, FunctionalState ITState, CLK_CurrentClockState_TypeDef CLK_CurrentClockState);
- void CLK_HSIPrescalerConfig(CLK_Prescaler_TypeDef HSIPrescaler);
- void CLK_CCOConfig(CLK_Output_TypeDef CLK_CCO);
- void CLK_ITConfig(CLK_IT_TypeDef CLK_IT, FunctionalState NewState);
- void CLK_SYSCLKConfig(CLK_Prescaler_TypeDef CLK_Prescaler);
- void CLK_SWIMConfig(CLK_SWIMDivider_TypeDef CLK_SWIMDivider);
- void CLK_ClockSecuritySystemEnable(void);
- void CLK_SYSCLKEmergencyClear(void);
- void CLK_AdjustHSICalibrationValue(CLK_HSITrimValue_TypeDef CLK_HSICalibrationValue);
- uint32_t CLK_GetClockFreq(void);
- CLK_Source_TypeDef CLK_GetSYSCLKSource(void);
- FlagStatus CLK_GetFlagStatus(CLK_Flag_TypeDef CLK_FLAG);
- ITStatus CLK_GetITStatus(CLK_IT_TypeDef CLK_IT);
- void CLK_ClearITPendingBit(CLK_IT_TypeDef CLK_IT);
- #endif
|