STM8时钟管理.docx

上传人:b****6 文档编号:5763219 上传时间:2023-01-01 格式:DOCX 页数:10 大小:17.91KB
下载 相关 举报
STM8时钟管理.docx_第1页
第1页 / 共10页
STM8时钟管理.docx_第2页
第2页 / 共10页
STM8时钟管理.docx_第3页
第3页 / 共10页
STM8时钟管理.docx_第4页
第4页 / 共10页
STM8时钟管理.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

STM8时钟管理.docx

《STM8时钟管理.docx》由会员分享,可在线阅读,更多相关《STM8时钟管理.docx(10页珍藏版)》请在冰豆网上搜索。

STM8时钟管理.docx

STM8时钟管理

STM8库函数学习笔记之时钟管理

STM8库函数学习笔记之时钟管理

相关函数:

voidCLK_DeInit(void);

voidCLK_HSECmd(FunctionalStateNewState);

voidCLK_HSICmd(FunctionalStateNewState);

voidCLK_LSICmd(FunctionalStateNewState);

voidCLK_CCOCmd(FunctionalStateNewState);

voidCLK_ClockSwitchCmd(FunctionalStateNewState);

voidCLK_FastHaltWakeUpCmd(FunctionalStateNewState);

voidCLK_SlowActiveHaltWakeUpCmd(FunctionalStateNewState);

voidCLK_PeripheralClockConfig(CLK_Peripheral_TypeDefCLK_Peripheral,FunctionalStateNewState);

ErrorStatusCLK_ClockSwitchConfig(CLK_SwitchMode_TypeDefCLK_SwitchMode,CLK_Source_TypeDefCLK_NewClock,FunctionalState

ITState,CLK_CurrentClockState_TypeDefCLK_CurrentClockState);

voidCLK_HSIPrescalerConfig(CLK_Prescaler_TypeDefHSIPrescaler);

voidCLK_CCOConfig(CLK_Output_TypeDefCLK_CCO);

voidCLK_ITConfig(CLK_IT_TypeDefCLK_IT,FunctionalStateNewState);

voidCLK_SYSCLKConfig(CLK_Prescaler_TypeDefCLK_Prescaler);

voidCLK_SWIMConfig(CLK_SWIMDivider_TypeDefCLK_SWIMDivider);

voidCLK_CANConfig(CLK_CANDivider_TypeDefCLK_CANDivider);

voidCLK_ClockSecuritySystemEnable(void);

voidCLK_SYSCLKEmergencyClear(void);

voidCLK_AdjustHSICalibrationValue(CLK_HSITrimValue_TypeDefCLK_HSICalibrationValue);

u32CLK_GetClockFreq(void);

CLK_Source_TypeDefCLK_GetSYSCLKSource(void);

FlagStatusCLK_GetFlagStatus(CLK_Flag_TypeDefCLK_FLAG);

ITStatusCLK_GetITStatus(CLK_IT_TypeDefCLK_IT);

voidCLK_ClearITPendingBit(CLK_IT_TypeDefCLK_IT);

 

//-----------------------------------------------------------------------------------------

voidCLK_DeInit(void);

恢复相关的时钟寄存器到默认值

参数:

返回值:

注意:

当要复位CCOR寄存器时,如果CCOEN位被置位,则需要先复位CCOEN位,然后再复位CCOSEL位,复位CCOEN位和复位CCOSEL位的操作必须连续。

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

//-----------------------------------------------------------------------------------------

voidCLK_HSECmd(FunctionalStateNewState);

启用或禁用外部高速振荡器(HSE)

参数:

NewState:

新的状态值

 DISABLE禁用

 ENABLE 启用

返回值:

//-----------------------------------------------------------------------------------------

voidCLK_HSICmd(FunctionalStateNewState);

启用或禁用内部高速振荡器(HSI16MHz)

参数:

NewState:

新的状态值

 DISABLE禁用

 ENABLE 启用

返回值:

//-----------------------------------------------------------------------------------------

voidCLK_LSICmd(FunctionalStateNewState);

启用或禁用内部低速振荡器(LSI128KHz)

参数:

NewState:

新的状态值

 DISABLE禁用

 ENABLE 启用

返回值:

//-----------------------------------------------------------------------------------------

voidCLK_CCOCmd(FunctionalStateNewState);

启用或禁用可配置的时钟输出功能

参数:

NewState:

新的状态值

 DISABLE禁用

 ENABLE 启用

返回值:

//-----------------------------------------------------------------------------------------

voidCLK_ClockSwitchCmd(FunctionalStateNewState);

手动启动或关闭时钟切换

参数:

NewState:

新的状态值

 DISABLE禁用

 ENABLE 启用

返回值:

//-----------------------------------------------------------------------------------------

voidCLK_FastHaltWakeUpCmd(FunctionalStateNewState);

使能或禁止从停机模式(Halt)或活跃停机模式(ActiveHalt)中快速唤醒。

停机模式(Halt):

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

活跃停机模式(ActiveHalt):

保留一个定时唤醒单元AWU工作,CPU和片上设备全停止工作,AWU和外部中断及复位均可唤醒

使能后内部高速振荡器(HSI)会自动打开,且作为主时钟源(fMASTER)(CKM=SWI=HSI),然后从停机模式(Halt)或活跃停机模式(ActiveHalt)中

快速唤醒。

返回值:

//-----------------------------------------------------------------------------------------

voidCLK_SlowActiveHaltWakeUpCmd(FunctionalStateNewState);

启用或禁止活跃停机模式下的电压调节器

但是这个函数并没有字面上的唤醒功能。

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

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

择。

参数:

NewState:

新的状态值

 DISABLE禁用

 ENABLE 启用

返回值:

如果为了能快速从活跃停机模式中唤醒,进入活跃停机前则调用CLK_SlowActiveHaltWakeUpCmd(ENABLE);但功耗较大。

如果进入活跃停机模式前没有调用CLK_SlowActiveHaltWakeUpCmd(ENABLE);或调用了CLK_SlowActiveHaltWakeUpCmd(DISABLE);即默认的情况下

,唤醒时间比较长,但功耗较低。

关于AWU(自动唤醒功能的详细说明请查看手册)

//-----------------------------------------------------------------------------------------

voidCLK_PeripheralClockConfig(CLK_Peripheral_TypeDefCLK_Peripheral,FunctionalStateNewState);

启用或禁用指定的外设时钟,默认所有的外设时钟都是启用的。

参数:

CLK_Peripheral 外设类型

可选值:

 CLK_PERIPHERAL_I2C

 CLK_PERIPHERAL_SPI

 CLK_PERIPHERAL_UART1

 CLK_PERIPHERAL_UART2

 CLK_PERIPHERAL_UART3

 CLK_PERIPHERAL_TIMER6

 CLK_PERIPHERAL_TIMER4

 CLK_PERIPHERAL_TIMER5

 CLK_PERIPHERAL_TIMER2

 CLK_PERIPHERAL_TIMER3

 CLK_PERIPHERAL_TIMER1

 CLK_PERIPHERAL_AWU

 CLK_PERIPHERAL_ADC

 CLK_PERIPHERAL_CAN

NewState:

新的状态值

 DISABLE禁用

 ENABLE 启用

返回值:

//-----------------------------------------------------------------------------------------

ErrorStatusCLK_ClockSwitchConfig(CLK_SwitchMode_TypeDefCLK_SwitchMode,CLK_Source_TypeDefCLK_NewClock,FunctionalStateITState,CLK_CurrentClockState_TypeDefCLK_CurrentClockState);

系统时钟切换配置

参数:

CLK_SwitchMode,切换模式

可选值:

 CLK_SWITCHMODE_MANUAL 手动切换

 CLK_SWITCHMODE_AUTO   自动切换

CLK_NewClock,新的时钟源

可选值:

 CLK_SOURCE_HSI 内部16MHz高速振荡器

 CLK_SOURCE_LSI 内部128KHz低速振荡器

 CLK_SOURCE_HSE 外部时钟

ITState,启用或禁用时钟切换中断

可选值:

 DISABLE  禁用

 ENABLE   启用

CLK_CurrentClockState,当前使用的时钟源在切换到新的时钟源后关闭或继续开启。

可选值:

 CLK_CURRENTCLOCKSTATE_DISABLE 关闭

 CLK_CURRENTCLOCKSTATE_ENABLE  开启

返回值:

 如果切换成功返回SUCCESS,否则返回ERROR 

//-----------------------------------------------------------------------------------------

voidCLK_HSIPrescalerConfig(CLK_Prescaler_TypeDefHSIPrescaler);

配置内部高速振荡器(HSI)的分频器

参数:

HSIPrescaler,分频值

可选值:

 CLK_PRESCALER_HSIDIV1内部高速时钟1分频

 CLK_PRESCALER_HSIDIV2内部高速时钟2分频

 CLK_PRESCALER_HSIDIV4内部高速时钟4分频

 CLK_PRESCALER_HSIDIV8 内部高速时钟8分频

 CLK_PRESCALER_CPUDIV1 CPU时钟1分频

 CLK_PRESCALER_CPUDIV2 CPU时钟2分频

 CLK_PRESCALER_CPUDIV4 CPU时钟4分频

 CLK_PRESCALER_CPUDIV8 CPU时钟8分频

 CLK_PRESCALER_CPUDIV16CPU时钟16分频

 CLK_PRESCALER_CPUDIV32CPU时钟32分频

 CLK_PRESCALER_CPUDIV64CPU时钟64分频

 CLK_PRESCALER_CPUDIV128CPU时钟128分频

返回值:

//-----------------------------------------------------------------------------------------

voidCLK_CCOConfig(CLK_Output_TypeDefCLK_CCO);

配置指定时钟输出引脚(CCO)的时钟

参数:

CLK_CCO:

可选值:

 CLK_OUTPUT_HSI 内部高速振荡器频率16MHz/分频值(HSIDIV)

 CLK_OUTPUT_LSI 内部低速振荡器128KHz

 CLK_OUTPUT_HSE 外部振荡器

 CLK_OUTPUT_CPU CPU时钟

 CLK_OUTPUT_CPUDIV2 CPU时钟2分频

 CLK_OUTPUT_CPUDIV4 CPU时钟4分频

 CLK_OUTPUT_CPUDIV8 CPU时钟8分频

 CLK_OUTPUT_CPUDIV16 CPU时钟16分频

 CLK_OUTPUT_CPUDIV32 CPU时钟32分频

 CLK_OUTPUT_CPUDIV64 CPU时钟64分频

 CLK_OUTPUT_HSIRC  fHSI

 CLK_OUTPUT_MASTER fMASTER

 CLK_OUTPUT_OTHERS fCPU

返回值:

指定的时钟输出引脚必须通过配置寄存器Px_CR1对应的位为1来设置为上拉输入或推挽输出模式。

//-----------------------------------------------------------------------------------------

voidCLK_ITConfig(CLK_IT_TypeDefCLK_IT,FunctionalStateNewState);

启用或禁用指定的时钟中断

参数:

CLK_IT,中断源,中断配置和标志由软件清零

可选值:

 CLK_IT_CSSD 时钟安全系统检测标志

 CLK_IT_SWIF 时钟切换中断标志

NewState:

新的状态值

 DISABLE禁用

 ENABLE 启用

返回值:

//-----------------------------------------------------------------------------------------

voidCLK_SYSCLKConfig(CLK_Prescaler_TypeDefCLK_Prescaler);

配置内部高速振荡器(HSI)和CPU时钟分频器

参数:

CLK_Prescaler,指定HSI或CPU时钟预分频值

可选值:

 CLK_PRESCALER_HSIDIV1 内部高速振荡器1分频

 CLK_PRESCALER_HSIDIV2 内部高速振荡器2分频

 CLK_PRESCALER_HSIDIV4 内部高速振荡器4分频

 CLK_PRESCALER_HSIDIV8 内部高速振荡器8分频

 CLK_PRESCALER_CPUDIV1 CPU时钟1分频

 CLK_PRESCALER_CPUDIV2 CPU时钟2分频

 CLK_PRESCALER_CPUDIV4 CPU时钟4分频

 CLK_PRESCALER_CPUDIV8 CPU时钟8分频

 CLK_PRESCALER_CPUDIV16 CPU时钟16分频

 CLK_PRESCALER_CPUDIV32 CPU时钟32分频

 CLK_PRESCALER_CPUDIV64 CPU时钟64分频

 CLK_PRESCALER_CPUDIV128 CPU时钟128分频

返回值:

//-----------------------------------------------------------------------------------------

voidCLK_SWIMConfig(CLK_SWIMDivider_TypeDefCLK_SWIMDivider);

配置SWIM时钟分频器

参数:

CLK_SWIMDivider,SWIM时钟分频值

可选值:

 CLK_SWIMDIVIDER_2 SWIM时钟2分频

 CLK_SWIMDIVIDER_OTHER SWIM时钟不分频

返回值:

//-----------------------------------------------------------------------------------------

voidCLK_CANConfig(CLK_CANDivider_TypeDefCLK_CANDivider);

配置CAN时钟分频器

参数:

CLK_CANDivider,CAN时钟分频值

可选值:

 CLK_CANDIVIDER_1 CAN时钟频率=HSE/1 

 CLK_CANDIVIDER_2 CAN时钟频率=HSE/2 

 CLK_CANDIVIDER_3 CAN时钟频率=HSE/3 

 CLK_CANDIVIDER_4 CAN时钟频率=HSE/4 

 CLK_CANDIVIDER_5 CAN时钟频率=HSE/5 

 CLK_CANDIVIDER_6 CAN时钟频率=HSE/6 

 CLK_CANDIVIDER_7 CAN时钟频率=HSE/7 

 CLK_CANDIVIDER_8 CAN时钟频率=HSE/8

 

返回值:

//-----------------------------------------------------------------------------------------

voidCLK_ClockSecuritySystemEnable(void);

启用时钟安全系统。

一旦启用就不能禁用,直到下一次复位。

参数:

返回值:

//-----------------------------------------------------------------------------------------

voidCLK_SYSCLKEmergencyClear(void);

重置时钟切换忙(SWBSY)标志,以复位时钟切换过程。

如果由于某种原因时钟切换没有成功,软件可通过清除标志位SWBSY以复位当前的切换操作,

使寄存器CLK_SWR恢复原值(原时钟源)。

如果在同一时间软件尝试置位SWEN和复位SWBSY,复位SWBSY的动作优先。

参数:

返回值:

//-----------------------------------------------------------------------------------------

voidCLK_AdjustHSICalibrationValue(CLK_HSITrimValue_TypeDefCLK_HSICalibrationValue);

修正内部高速振荡器频率

参数:

CLK_HSICalibrationValue,校准值。

可选值:

 CLK_HSITRIMVALUE_0 校准值为0 

 CLK_HSITRIMVALUE_1 校准值为1 

 CLK_HSITRIMVALUE_2 校准值为2 

 CLK_HSITRIMVALUE_3 校准值为3 

 CLK_HSITRIMVALUE_4 校准值为4 

 CLK_HSITRIMVALUE_5 校准值为5 

 CLK_HSITRIMVALUE_6 校准值为6 

 CLK_HSITRIMVALUE_7 校准值为7

 

返回值:

注意:

在大容量产品上,只有位2:

0是可用的。

在中等容量或小容量产品上,位3:

0或2:

0是可用的,取决于选项字节的配置(参见数据手册)。

//-----------------------------------------------------------------------------------------

u32CLK_GetClockFreq(void);

获得系统主时钟频率

参数:

返回值:

32位的主时钟频率

//-----------------------------------------------------------------------------------------

CLK_Source_TypeDefCLK_GetSYSCLKSource(void);

获得系统时钟源

参数:

返回值:

 CLK_SOURCE_HSI 时钟源为内部高速振荡器 

 CLK_SOURCE_LSI 时钟源为内部低速振荡器 

 CLK_SOURCE_HSE 时钟源为外部高速振荡器 

//-----------------------------------------------------------------------------------------

FlagStatusCLK_GetFlagStatus(CLK_Flag_TypeDefCLK_FLAG);

获得指定的时钟标志的置位情况

参数:

CLK_FLAG,要获得的标志

可选值:

 CLK_FLAG_LSIRDY 内部低速振荡器就绪标志

 CLK_FLAG_HSIRDY 内部高速振荡器就绪标志

 CLK_FLAG_HSERDY 外部高速振荡器就绪标志

 CLK_FLAG_SWIF   时钟切换中断标志

 CLK_F

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 学科竞赛

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1