新浪博客

STM32的时钟系统RCC详细整理2

2016-01-19 13:21阅读:
四、相关库函数解析
1、库中所涉及到的结构体
typedef struct
{
uint32_t SYSCLK_Frequency;
uint32_t HCLK_Frequency;
uint32_t PCLK1_Frequency;
uint32_t PCLK2_Frequency;
uint32_t ADCCLK_Frequency;
}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晶振稳定且就绪;ERRORHSE晶振未就绪
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_Div2RCC_PLLSource_HSE_Div1RCC_PLLSource_HSE_Div2
//输入:RCC_PLLMul_2RCC_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
void RCC_SYSCLKConfig(uint32_t RCC_SYSCLKSource);//设置系统时钟(SYSCLK)
// RCC_SYSCLKSource_HSIRCC_SYSCLKSource_HSERCC_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
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
void RCC_LSEConfig(uint8_t RCC_LSE);// 设置外部低速晶振(

我的更多文章

下载客户端阅读体验更佳

APP专享