首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

STM32的时钟系统RCC详细整理(5)

STM32的时钟系统RCC详细整理(5)

四、相关库函数解析

1、库中所涉及到的结构体

typedef struct
{

uint32_t SYSCLK_Frequency;
/*!< returns SYSCLK clock frequency expressed in Hz */

uint32_t HCLK_Frequency;
/*!< returns HCLK clock frequency expressed in Hz */

uint32_t PCLK1_Frequency;
/*!< returns PCLK1 clock frequency expressed in Hz */

uint32_t PCLK2_Frequency;
/*!< returns PCLK2 clock frequency expressed in Hz */

uint32_t ADCCLK_Frequency; /*!< returns ADCCLK clock frequency expressed in Hz */
}RCC_ClocksTypeDef;
2、库函数解析

void RCC_DeInit(void);//将外设RCC寄存器设为缺省值;(除RCC_BDCRRCC_CSR

void RCC_HSEConfig(uint32_t RCC_HSE);//设置外部高速晶振(HSE);

//输入:RCC_HSE_OFFRCC_HSE_ONRCC_HSE_Bypass(HSE旁路)
ErrorStatus RCC_WaitForHSEStartUp(void);//等待HSE起振;

//返回值:SUCCESS,HSE晶振稳定且就绪;ERROR,HSE晶振未就绪

void RCC_AdjustHSICalibrationValue(uint8_t HSICalibrationValue);//调整内部高速晶振(HSI)校准值

//输入:校准补偿值(该参数取值必须在00x1F之间)

void RCC_HSICmd(FunctionalState NewState);//使能或者失能内部高速晶振(HSI

//输入:ENABLE或者DISABLE(如果HSI被用于系统时钟,或者FLASH编写操作进行中,那么它不能被停振)

void RCC_PLLConfig(uint32_t RCC_PLLSource, uint32_t RCC_PLLMul);//设置PLL时钟源及倍频系数

//输入:RCC_PLLSource_HSI_Div2,RCC_PLLSource_HSE_Div1,RCC_PLLSource_HSE_Div2
//输入:RCC_PLLMul_2到RCC_PLLMul_16
void RCC_PLLCmd(FunctionalState NewState);// 使能或者失能PLL
//输入:ENABLE或者DISABLE
#if defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || defined (STM32F10X_HD_VL) || defined (STM32F10X_CL)

void RCC_PREDIV1Config(uint32_t RCC_PREDIV1_Source, uint32_t RCC_PREDIV1_Div);//
#endif
#ifdef
STM32F10X_CL

void RCC_PREDIV2Config(uint32_t RCC_PREDIV2_Div);//

void RCC_PLL2Config(uint32_t RCC_PLL2Mul);//

void RCC_PLL2Cmd(FunctionalState NewState);//

void RCC_PLL3Config(uint32_t RCC_PLL3Mul);//

void RCC_PLL3Cmd(FunctionalState NewState);//
#endif /* STM32F10X_CL */
void RCC_SYSCLKConfig(uint32_t RCC_SYSCLKSource);//设置系统时钟(SYSCLK)

// RCC_SYSCLKSource_HSI,RCC_SYSCLKSource_HSE,RCC_SYSCLKSource_PLLCLK
uint8_t RCC_GetSYSCLKSource(void);// 返回用作系统时钟的时钟源

//返回值:0x00 HSI作为系统时钟,0x04 HSE作为系统时钟,0x08 PLL作为系统时钟

void RCC_HCLKConfig(uint32_t RCC_SYSCLK);//设置AHB时钟(HCLK

//输入:RCC_SYSCLK_Div1RCC_SYSCLK_Div2RCC_SYSCLK_Div4RCC_SYSCLK_Div8RCC_SYSCLK_Div16

//RCC_SYSCLK_Div32RCC_SYSCLK_Div64RCC_SYSCLK_Div128RCC_SYSCLK_Div256RCC_SYSCLK_Div512
void RCC_PCLK1Config(uint32_t RCC_HCLK);//
设置低速
AHB时钟(PCLK1

//输入: RCC_HCLK_Div1, RCC_HCLK_Div2, RCC_HCLK_Div4, RCC_HCLK_Div8, RCC_HCLK_Div16
void RCC_PCLK2Config(uint32_t RCC_HCLK);// 设置高速AHB时钟(PCLK2

//输入:RCC_HCLK_Div1, RCC_HCLK_Div2, RCC_HCLK_Div4, RCC_HCLK_Div8, RCC_HCLK_Div16
void RCC_ITConfig(uint8_t RCC_IT, FunctionalState NewState);// 使能或者失能指定的RCC中断

//输入:RCC_IT_LSIRDY
LSI就绪中断->ENABLE或者DISABLE
//RCC_IT_LSERDY
LSE就绪中断,RCC_IT_HSIRDY
HSI就绪中断

//RCC_IT_HSERDY
HSE就绪中断,RCC_IT_PLLRDY
PLL就绪中断

#ifndef STM32F10X_CL

void RCC_USBCLKConfig(uint32_t RCC_USBCLKSource);// 设置USB时钟(USBCLK

//输入:RCC_USBCLKSource_PLLCLK_1Div5USB时钟 = PLL时钟除以1.5
RCC_USBCLKSource_PLLCLK_Div1USB时钟 = PLL时钟

#else

void RCC_OTGFSCLKConfig(uint32_t RCC_OTGFSCLKSource);//
#endif /* STM32F10X_CL */
void RCC_ADCCLKConfig(uint32_t RCC_PCLK2);//
设置
ADC时钟(ADCCLK

//RCC_PCLK2_Div2,ADC时钟 = PCLK / 2;RCC_PCLK2_Div4,ADC时钟 = PCLK / 4;
//RCC_PCLK2_Div6,ADC时钟 = PCLK / 6;RCC_PCLK2_Div8,ADC时钟 = PCLK / 8
#ifdef STM32F10X_CL

void RCC_I2S2CLKConfig(uint32_t RCC_I2S2CLKSource); //


void RCC_I2S3CLKConfig(uint32_t RCC_I2S3CLKSource);//
#endif /* STM32F10X_CL */
void RCC_LSEConfig(uint8_t RCC_LSE);// 设置外部低速晶振(LSE

//输入:RCC_LSE_OFF,LSE晶振OFF;RCC_LSE_ON,LSE晶振ON;
//RCC_LSE_Bypass,LSE晶振被外部时钟旁路

void RCC_LSICmd(FunctionalState NewState);// 使能或者失能内部低速晶振(LSI

//输入:ENABLE或者DISABLE
(IWDG运行的话,LSI不能被失能)
void RCC_RTCCLKConfig(uint32_t RCC_RTCCLKSource);//设置RTC时钟(RTCCLK)源(RTC时钟一经选定即不能更改,除非复位后备域)
//输入:RCC_RTCCLKSource_LSE,选择LSE作为RTC时钟;RCC_RTCCLKSource_LSI,选择LSI作为RTC时钟;RCC_RTCCLKSource_HSE_Div128,选择HSE时钟频率除以128作为RTC时钟

void RCC_RTCCLKCmd(FunctionalState NewState);// 使能或者失能RTC时钟

//输入:ENABLE或者DISABLE

void RCC_GetClocksFreq(RCC_ClocksTypeDef* RCC_Clocks);// 返回时钟的频率

//输入:指向结构RCC_ClocksTypeDef的指针,包含了各个时钟的频率(单位为Hz
继承事业,薪火相传
返回列表