1、时钟控制寄存器(RCC_CR):(复位值为0x0000 xx83,内部低速时钟使能和就绪,内部时钟校准) 主要功能:内外部高速时钟的使能和就绪标志(含内部高速时钟校准调整),外部高速时钟旁路,时钟安全系统CSS使能,PLL使能和PLL就绪标志。 2、时钟配置寄存器(RCC_CFGR):(复位值为0x0000 0000) 主要功能:系统时钟源切换及状态,AHB、APB1、APB2、ADC、USB预分频,PLL输入时钟源选择及HSE输入PLL分频选择,PLL倍频系数,MCO(PA8)引脚微控制器时钟输出。 3、时钟中断寄存器 (RCC_CIR):(复位值: 0x0000 0000) 主要功能:LSI、LSE、HIS、HSE、PLL就绪中断标志,HSE时钟失效导致时钟安全系统中断标志,LSI、LSE、HIS、HSE、PLL就绪中断使能,清除LSI、LSE、HIS、HSE、PLL就绪中断,清除时钟安全系统中断。 4、APB2外设复位寄存器 (RCC_APB2RSTR):(复位值: 0x0000 0000) 主要功能:AFIO、IOPA、IOPB、IOPC、IOPD、IOPE、IOPF、IOPG、ADC1、ADC2、TIM1、SPI1、TIM8、USART1、ADC3复位。 5、APB1外设复位寄存器 (RCC_APB1RSTR) :(复位值: 0x0000 0000) 主要功能:TIM2、TIM3、TIM4、TIM5、TIM6、TIM7、WWDG、SPI2、SPI3、USART2、USART3、USART4、USART5、I2C1、I2C2、USB、CAN、BKP、PWR、DAC复位。 6、AHB外设时钟使能寄存器 (RCC_AHBENR) :(复位值: 0x0000 0014睡眠模式时SRAM、闪存接口电路时钟开启) 主要功能:DMA1、DMA2、SRAM、FLITF、CRC、FSMC、SDIO时钟使能。 7、APB2外设时钟使能寄存器(RCC_APB2ENR) :(复位值: 0x0000 0000) 主要功能:AFIO、IOPA、IOPB、IOPC、IOPD、IOPE、IOPF、IOPG、ADC1、ADC2、TIM1、SPI1、TIM8、USART1、ADC3时钟使能。 8、APB1外设时钟使能寄存器(RCC_APB1ENR) :(复位值: 0x0000 0000) 主要功能:TIM2、TIM3、TIM4、TIM5、TIM6、TIM7、WWDG、SPI2、SPI3、USART2、USART3、USART4、USART5、I2C1、I2C2、USB、CAN、BKP、PWR、DAC时钟使能。 9、备份域控制寄存器 (RCC_BDCR) :(复位值: 0x0000 0000) 主要功能:外部低速振荡器使能和就绪标志及旁路、RTC时钟源选择和时钟使能、备份域软件复位。 10、控制/状态寄存器 (RCC_CSR) :(复位值: 0x0C00 0000 NRST引脚复位标志、上电/掉电复位标志) 主要功能:内部低速振荡器就绪、清除复位标志、NRST引脚复位标志、上电/掉电复位标志、软件复位标志、独立看门狗复位标志、窗口看门狗复位标志、低功耗复位标志。 三、初始化设置 采用8MHz 外部HSE 时钟,在 MDK 编译平台中,程序的时钟设置参数流程如下: 将 RCC 寄存器重新设置为默认值:RCC_DeInit(); 打开外部高速时钟晶振 HSE : RCC_HSEConfig(RCC_HSE_ON); 等待外部高速时钟晶振工作: HSEStartUpStatus = RCC_WaitForHSEStartUp(); 设置 AHB 时钟 (HCLK) : RCC_HCLKConfig(RCC_SYSCLK_Div1); 设置APB 2时钟 (APB2) : RCC_PCLK2Config(RCC_HCLK_Div1); 设置APB1 时钟 (APB1) : RCC_PCLK1Config(RCC_HCLK_Div2); 设置 PLL : RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9); 打开 PLL : RCC_PLLCmd(ENABLE); 等待 PLL 工作: while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET); 设置系统时钟: RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); 判断 PLL 是否是系统时钟: while(RCC_GetSYSCLKSource() != 0x08);
|