当前位置:文档之家› STM8时钟树解析

STM8时钟树解析

STM8库函数学习笔记之时钟树解析STM8库函数学习笔记之时钟管理相关函数:void CLK_DeInit(void);void CLK_HSEC md(FunctionalState NewState);void CLK_HSIC md(FunctionalState N ewState);void CLK_LSICmd(FunctionalState NewState);void CLK_CCOCmd(FunctionalState NewState);void CLK_ClockSwitchC md(FunctionalState NewState);void CLK_FastHaltWakeUpCmd(FunctionalState N ewState);void CLK_SlowActiveHaltWakeUpCmd(FunctionalState NewState);void CLK_PeripheralC lockConfig(CLK_Peripher al_TypeDef CLK_Peripheral, FunctionalState NewState);ErrorStatus CLK_C lockSwitchConfig(CLK_SwitchMode_TypeDef CLK_Sw itchMode, C LK_Source_TypeDef CLK_NewClock, FunctionalStateITState, CLK_CurrentClockState_TypeDef CLK_CurrentClockState);void CLK_HSIPr escalerConfig(CLK_Prescaler_TypeDef HSIPrescaler);void CLK_CCOConfig(CLK_Output_TypeD ef CLK_CCO);void CLK_ITConfig(CLK_IT_TypeDef CLK_IT, FunctionalState NewState);void CLK_SYSCLKC onfig(CLK_Pr escaler_TypeDef CLK_Prescaler);void CLK_SWIMConfig(CLK_SWIMD ivider_TypeDef CLK_SWIMDivider);void CLK_CANConfig(CLK_C ANDivider_TypeD ef CLK_CANDivider);void CLK_ClockSecuritySystemEnable(void);void CLK_SYSCLKEmergencyClear(void);void CLK_AdjustHSICalibrationValue(CLK_HSITrimValue_TypeDef CLK_HSIC alibrationValue);u32 CLK_GetC lockFreq(void);CLK_Source_TypeD ef CLK_GetSYSCLKSource(void);FlagStatus CLK_GetFlagStatus(CLK_Flag_TypeDef C LK_FLAG);ITStatus CLK_GetITStatus(CLK_IT_TypeDef CLK_IT);void CLK_ClearITPendingBit(CLK_IT_TypeDef CLK_IT);//-----------------------------------------------------------------------------------------void CLK_DeInit(void);恢复相关的时钟寄存器到默认值参数:无返回值:无注意:当要复位CCOR寄存器时,如果CCOEN位被置位,则需要先复位CCOEN位,然后再复位CCOSEL位,复位CCOEN位和复位CCOSEL位的操作必须连续。

这个理解不知对不对,是根据库函数的帮助来理解的,但测试结果,无论CCOEN是否置位,调用后都能恢复CCOR寄存器。

//-----------------------------------------------------------------------------------------void CLK_HSEC md(FunctionalState NewState);启用或禁用外部高速振荡器(HSE)参数:NewState: 新的状态值DISABLE 禁用ENABLE 启用返回值:无//-----------------------------------------------------------------------------------------void CLK_HSIC md(FunctionalState N ewState);启用或禁用内部高速振荡器(HSI 16MHz)参数:NewState: 新的状态值DISABLE 禁用ENABLE 启用返回值:无//-----------------------------------------------------------------------------------------void CLK_LSICmd(FunctionalState NewState);启用或禁用内部低速振荡器(LSI 128KHz)参数:NewState: 新的状态值DISABLE 禁用ENABLE 启用返回值:无//-----------------------------------------------------------------------------------------void CLK_CCOCmd(FunctionalState NewState);启用或禁用可配置的时钟输出功能参数:NewState: 新的状态值DISABLE 禁用ENABLE 启用返回值:无//-----------------------------------------------------------------------------------------void CLK_ClockSwitchC md(FunctionalState NewState);手动启动或关闭时钟切换参数:NewState: 新的状态值DISABLE 禁用ENABLE 启用返回值:无//-----------------------------------------------------------------------------------------void CLK_FastHaltWakeUpCmd(FunctionalState N ewState);使能或禁止从停机模式(Halt)或活跃停机模式(Active Halt)中快速唤醒。

停机模式(Halt):CPU和片上设备完全停止工作,定时唤醒单元AWU也停止,仅由外部中断及复位唤醒。

活跃停机模式(Active Halt):保留一个定时唤醒单元AWU工作,CPU和片上设备全停止工作,AWU和外部中断及复位均可唤醒使能后内部高速振荡器(HSI)会自动打开,且作为主时钟源(fMASTER)(CKM=SWI=HSI),然后从停机模式(Halt)或活跃停机模式(Active Halt)中快速唤醒。

返回值:无//-----------------------------------------------------------------------------------------void CLK_SlowActiveHaltWakeUpCmd(FunctionalState NewState);启用或禁止活跃停机模式下的电压调节器但是这个函数并没有字面上的唤醒功能。

但是跟自动唤醒(AWU)功能有关。

一旦MCU进入活跃停机模式时,主电压调节器将默认关闭(DISABLE),从而唤醒时间将比较长,所以这个函数就为了在快速唤醒与低功耗之间选择。

参数:NewState: 新的状态值DISABLE 禁用ENABLE 启用返回值:无如果为了能快速从活跃停机模式中唤醒,进入活跃停机前则调用CLK_SlowActiveH altWakeUpCmd(ENABLE);但功耗较大。

如果进入活跃停机模式前没有调用CLK_SlowActiveHaltWakeUpCmd(ENABLE);或调用了CLK_SlowActiveHaltWakeUpCmd(DISABLE);即默认的情况下,唤醒时间比较长,但功耗较低。

关于AWU(自动唤醒功能的详细说明请查看手册)//-----------------------------------------------------------------------------------------void CLK_PeripheralC lockConfig(CLK_Peripher al_TypeDef CLK_Peripheral, FunctionalState NewState);启用或禁用指定的外设时钟,默认所有的外设时钟都是启用的。

参数:CLK_Peripher al 外设类型可选值:CLK_PERIPHERAL_I2CCLK_PERIPHERAL_SPICLK_PERIPHERAL_UAR T1CLK_PERIPHERAL_UAR T2CLK_PERIPHERAL_UAR T3CLK_PERIPHERAL_TIMER6CLK_PERIPHERAL_TIMER4CLK_PERIPHERAL_TIMER5CLK_PERIPHERAL_TIMER2CLK_PERIPHERAL_TIMER3CLK_PERIPHERAL_TIMER1CLK_PERIPHERAL_AWUCLK_PERIPHERAL_ADCCLK_PERIPHERAL_CANNewState: 新的状态值DISABLE 禁用ENABLE 启用返回值:无//-----------------------------------------------------------------------------------------ErrorStatus CLK_C lockSwitchConfig(CLK_SwitchMode_TypeDef CLK_Sw itchMode, C LK_Source_TypeDef CLK_NewClock, FunctionalStateITState, CLK_CurrentClockState_TypeDef CLK_CurrentClockState);系统时钟切换配置参数:CLK_Sw itchMode, 切换模式可选值:CLK_SWITCHMODE_MANUAL 手动切换CLK_SWITCHMODE_AU TO 自动切换CLK_NewC lock,新的时钟源可选值:CLK_SOURCE_HSI 内部16MH z高速振荡器CLK_SOURCE_LSI 内部128KHz低速振荡器CLK_SOURCE_HSE 外部时钟ITState,启用或禁用时钟切换中断可选值:DISABLE 禁用ENABLE 启用CLK_CurrentClockState,当前使用的时钟源在切换到新的时钟源后关闭或继续开启。

相关主题