STM8S207时钟树
//STM8S207时钟管理库函数
//CLK_DeInit();//将相关的时钟寄存器恢复到默认值
//CLK_HSECmd(ENABLE);//启用外部高速振荡器HSE
//CLK_HSECmd(DISABLE);//关闭外部高速振荡器HSE
//CLK_HSICmd(ENABLE);//启用内部高速振荡器HSI
//CLK_HSICmd(DISABLE)//关闭内部高速振荡器HSI
//CLK_LSICmd(ENABLE);//启用内部低速振荡器LSI
//CLK_LSICmd(DISABLE);//关闭内部低速振荡器LSI
//CLK_CCOCmd(ENABLE);//启用CCO引脚输出时钟功能
//CLK_CCOCmd(DISABLE);//关闭CCO引脚输出时钟功能
//CLK_ClockSwitchCmd(ENABLE);//启用时钟切换
//CLK_ClockSwitchCmd(DISABLE);//关闭时钟切换
//CLK_FastHaltWakeUpCmd(ENABLE);//启用快速唤醒
//CLK_FastHaltWakeUpCmd(DISABLE);//关闭快速唤醒
//CLK_SlowActiveHaltWakeUpCmd(DISABLE);//启用活跃停机模式下的电压调节器
//CLK_SlowActiveHaltWakeUpCmd(ENABLE);//关闭活跃停机模式下的电压调节器
//CLK_PeripheralClockConfig(CLK_PERIPHERAL_I2C, ENABLE);//启用I2C外设时钟
//CLK_PeripheralClockConfig(CLK_PERIPHERAL_SPI, ENABLE);//启用SPI外设时钟
//CLK_PeripheralClockConfig(CLK_PERIPHERAL_UART1, ENABLE);//启用UART1外设时钟
//CLK_PeripheralClockConfig(CLK_PERIPHERAL_UART2, ENABLE);//启用UART2外设时钟
//CLK_PeripheralClockConfig(CLK_PERIPHERAL_UART3, ENABLE);//启用UART3外设时钟
//CLK_PeripheralClockConfig(CLK_PERIPHERAL_TIMER1, ENABLE);//启用TIMER1外设时钟
//CLK_PeripheralClockConfig(CLK_PERIPHERAL_TIMER2, ENABLE);//启用TIMER2外设时钟
//CLK_PeripheralClockConfig(CLK_PERIPHERAL_TIMER3, ENABLE);//启用TIMER3外设时钟
//CLK_PeripheralClockConfig(CLK_PERIPHERAL_TIMER4, ENABLE);//启用TIMER4外设时钟
//CLK_PeripheralClockConfig(CLK_PERIPHERAL_TIMER5, ENABLE);//启用TIMER5外设时钟
//CLK_PeripheralClockConfig(CLK_PERIPHERAL_TIMER6, ENABLE);//启用TIMER6外设时钟
//CLK_PeripheralClockConfig(CLK_PERIPHERAL_AWU, ENABLE);//启用AWU外设时钟
//CLK_PeripheralClockConfig(CLK_PERIPHERAL_ADC, ENABLE);//启用ADC外设时钟
//CLK_PeripheralClockConfig(CLK_PERIPHERAL_CAN, ENABLE);//启用CAN外设时钟
/*
ErrorStatus clk_return_status;
clk_return_status = CLK_ClockSwitchConfig(CLK_SWITCHMODE_MANUAL, CLK_SOURCE_HSE, ENABLE, CLK_CURRENTCLOCKSTATE_DISABLE);
//手动切换到HSE时钟,切换到HSE时钟源后,关闭旧的时钟源
if (clk_return_status == SUCCESS) //SUCCESS or ERROR
{};
ErrorStatus clk_return_status;
clk_return_status = CLK_ClockSwitchConfig(CLK_SWITCHMODE_AUTO, CLK_SOURCE_HSE, ENABLE, CLK_CURRENTCLOCKSTATE_DISABLE);
//自动切换到HSE时钟,切换到HSE时钟源后,关闭旧的时钟源
if (clk_return_status == SUCCESS) //SUCCESS or ERROR
{};
*/
/*
ErrorStatus clk_return_status;
clk_return_status = CLK_ClockSwitchConfig(CLK_SWITCHMODE_MANUAL, CLK_SOURCE_HSI, ENABLE, CLK_CURRENTCLOCKSTATE_DISABLE);
//手动切换到HSI时钟,切换到HSI时钟源后,关闭旧的时钟源
if (clk_return_status == SUCCESS) //SUCCESS or ERROR
{};
ErrorStatus clk_return_status;
clk_return_status = CLK_ClockSwitchConfig(CLK_SWITCHMODE_AUTO, CLK_SOURCE_HSI, ENABLE, CLK_CURRENTCLOCKSTATE_DISABLE);
//自动切换到HSI时钟,切换到HSI时钟源后,关闭旧的时钟源
if (clk_return_status == SUCCESS) //SUCCESS or ERROR
{};
*/
/*
ErrorStatus clk_return_status;
clk_return_status = CLK_ClockSwitchConfig(CLK_SWITCHMODE_MANUAL, CLK_SOURCE_LSI, ENABLE, CLK_CURRENTCLOCKSTATE_DISABLE);
//手动切换到HLSI时钟,切换到LSI时钟源后,关闭旧的时钟源
if (clk_return_status == SUCCESS) //SUCCESS or ERROR
{};
ErrorStatus clk_return_status;
clk_return_status = CLK_ClockSwitchConfig(CLK_SWITCHMODE_AUTO, CLK_SOURCE_LSI, ENABLE, CLK_CURRENTCLOCKSTATE_DISABLE);
//自动切换到HLSI时钟,切换到LSI时钟源后,关闭旧的时钟源
if (clk_return_status == SUCCESS) //SUCCESS or ERROR
{};
*/
//CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);//设置HSI分频器为1分频
//CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV2);//设置HSI分频器为2分频
//CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV4);//设置HSI分频器为4分频
//CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV8);//设置HSI分频器为8分频
//CLK_SYSCLKConfig(CLK_PRESCALER_HSIDIV1);//HSI内部高速振荡器1分频
//CLK_SYSCLKConfig(CLK_PRESCALER_HSIDIV2);//HSI内部高速振荡器2分频
//CLK_SYSCLKConfig(CLK_PRESCALER_HSIDIV4);//HSI内部高速振荡器4分频
//CLK_SYSCLKConfig(CLK_PRESCALER_HSIDIV8);//HSI内部高速振荡器8分频
//CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV1);//CPU时钟1分频
//CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV2);//CPU时钟2分频
//CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV4);//CPU时钟4分频
//CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV8);//CPU时钟8分频
//CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV16);//CPU时钟16分频
//CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV32);//CPU时钟32分频
//CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV64);//CPU时钟64分频
//CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV128);//CPU时钟128分频
//CLK_SWIMConfig(CLK_SWIMDIVIDER_2);//SWIM时钟2分频
//CLK_SWIMConfig(CLK_SWIMDIVIDER_OTHER);//SWIM时钟不分频
//CLK_ITConfig(CLK_IT_CSSD, ENABLE);//启用时钟安全系统检测中断
//CLK_ITConfig(CLK_IT_SWIF, ENABLE);//启用时钟切换中断
//CLK_CANConfig(CLK_CANDIVIDER_1);//配置CAN时钟频率为HSE/1
//CLK_CANConfig(CLK_CANDIVIDER_2);//配置CAN时钟频率为HSE/2
//CLK_CANConfig(CLK_CANDIVIDER_3);//配置CAN时钟频率为HSE/3
//CLK_CANConfig(CLK_CANDIVIDER_4);//配置CAN时钟频率为HSE/4
//CLK_CANConfig(CLK_CANDIVIDER_5);//配置CAN时钟频率为HSE/5
//CLK_CANConfig(CLK_CANDIVIDER_6);//配置CAN时钟频率为HSE/6
//CLK_CANConfig(CLK_CANDIVIDER_7);//配置CAN时钟频率为HSE/7
//CLK_CANConfig(CLK_CANDIVIDER_8);//配置CAN时钟频率为HSE/8
//CLK_ClockSecuritySystemEnable();//启用时钟安全系统,一旦启用则不能关闭,直到下次复位
//CLK_SYSCLKEmergencyClear();//清除时钟忙标志
//CLK_AdjustHSICalibrationValue(CLK_HSITRIMVALUE_0);//修正HSI内部高速振荡器频率
//CLK_AdjustHSICalibrationValue(CLK_HSITRIMVALUE_7);//修正HSI内部高速振荡器频率
/*
u32 u32_clk_freq;
u32_clk_freq = CLK_GetClockFreq();//获取系统时钟频率
*/
/*
clk_source = CLK_GetSYSCLKSource();
//获取系统时钟源,返回值为CLK_SOURCE_HSI或CLK_SOURCE_LSI或CLK_SOURCE_HSE
if (clk_source == CLK_SOURCE_HSI)
{
}
if (clk_source == CLK_SOURCE_LSI)
{
}
if (clk_source == CLK_SOURCE_HSE)
{
}
*/
/*
FlagStatus flags_tatus;
flags_tatus = CLK_GetFlagStatus(CLK_FLAG_HSERDY);//读HSE外部高速振荡器就绪标志位
if (flags_tatus == SET) //SET or RESET
{};
FlagStatus flags_tatus;
flags_tatus = CLK_GetFlagStatus(CLK_FLAG_HSIRDY);//读HSI内部高速振荡器就绪标志位
if (flags_tatus == SET) //SET or RESET
{};
FlagStatus flags_tatus;
flags_tatus = CLK_GetFlagStatus(CLK_FLAG_LSIRDY);//读LSI内部低速振荡器就绪标志位
if (flags_tatus == SET) //SET or RESET
{};
FlagStatus flags_tatus;
flags_tatus = CLK_GetFlagStatus(CLK_FLAG_SWIF);//读时钟切换中断标志
if (flags_tatus == SET) //SET or RESET
{};
FlagStatus flags_tatus;
flags_tatus = CLK_GetFlagStatus(CLK_FLAG_SWBSY);//读时钟忙标志
if (flags_tatus == SET) //SET or RESET
{};
FlagStatus flags_tatus;
flags_tatus = CLK_GetFlagStatus(CLK_FLAG_CSSD);//读时钟安全系统检测标志
if (flags_tatus == SET) //SET or RESET
{};
FlagStatus flags_tatus;
flags_tatus = CLK_GetFlagStatus(CLK_FLAG_AUX);//读辅助振荡器开关状态位
if (flags_tatus == SET) //SET or RESET
{};
//需要设置"选项字OPT2",将PD0映射为CLK_CCO
//CLK_CCOConfig(CLK_OUTPUT_HSE);//设置HSE时钟通过CCO引脚输出
//CLK_CCOConfig(CLK_OUTPUT_HSIRC);//设置HSI时钟通过CCO引脚输出
//CLK_CCOConfig(CLK_OUTPUT_LSI);//设置LSI时钟通过CCO引脚输出
//CLK_CCOConfig(CLK_OUTPUT_HSI);//设置HSI时钟分频值通过CCO引脚输出
//CLK_CCOConfig(CLK_OUTPUT_CPU);//设置CPU时钟1分频值通过CCO引脚输出
//CLK_CCOConfig(CLK_OUTPUT_CPUDIV2);//设置CPU时钟2分频值通过CCO引脚输出
//CLK_CCOConfig(CLK_OUTPUT_CPUDIV4);//设置CPU时钟4分频值通过CCO引脚输出
//CLK_CCOConfig(CLK_OUTPUT_CPUDIV8);//设置CPU时钟8分频值通过CCO引脚输出
//CLK_CCOConfig(CLK_OUTPUT_CPUDIV16);//设置CPU时钟16分频值通过CCO引脚输出
//CLK_CCOConfig(CLK_OUTPUT_CPUDIV32);//设置CPU时钟32分频值通过CCO引脚输出
//CLK_CCOConfig(CLK_OUTPUT_CPUDIV64);//设置CPU时钟64分频值通过CCO引脚输出
//CLK_CCOConfig(CLK_OUTPUT_MASTER);//设置MASTER时钟通过CCO引脚输出
FlagStatus flags_tatus;
flags_tatus = CLK_GetFlagStatus(CLK_FLAG_CCOBSY);//读CCO引脚时钟输出忙标志
if (flags_tatus == SET) //SET or RESET
{};
FlagStatus flags_tatus;
flags_tatus = CLK_GetFlagStatus(CLK_FLAG_CCORDY);//读CCO引脚时钟输出就绪标志
if (flags_tatus == SET) //SET or RESET
{};
*/
/*
ITStatus flags_tatus;
flags_tatus = CLK_GetITStatus(CLK_IT_CSSD);//读时钟安全系统检测中断标志
if (flags_tatus == SET) //SET or RESET
{
CLK_ClearITPendingBit(CLK_IT_CSSD);//清除时钟安全系统检测中断标志
}
ITStatus flags_tatus;
flags_tatus = CLK_GetITStatus(CLK_IT_SWIF);//读时钟切换中断标志
if (flags_tatus == SET) //SET or RESET
{
CLK_ClearITPendingBit(CLK_IT_SWIF);//清除时钟切换中断标志
}
*/