![](https://csdnimg.cn/release/download_crawler_static/11069437/bg4.jpg)
RCC_APB2Periph_GPIOF | RCC_APB2Periph_GPIOG |
RCC_APB2Periph_AFIO, ENABLE);
}
使用 HSE 时钟,程序设置时钟参数流程:
1、将 RCC 寄存器重新设置为默认值 RCC_DeInit
2、打开外部高速时钟晶振 HSE RCC_HSEConfig(RCC_HSE_ON);
3、等待外部高速时钟晶振工作 HSEStartUpStatus = RCC_WaitForHSEStartUp();
4、设置 AHB 时钟 RCC_HCLKConfig;
5、设置高速 AHB 时钟 RCC_PCLK2Config;
6、设置低速速 AHB 时钟 RCC_PCLK1Config
7、设置 PLL RCC_PLLConfig
8、打开 PLL RCC_PLLCmd(ENABLE);
9、等待 PLL 工作 while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
10、设置系统时钟 RCC_SYSCLKConfig
11、判断是否 PLL 是系统时钟 while(RCC_GetSYSCLKSource() != 0x08)
12、打开要使用的外设时钟 RCC_APB2PeriphClockCmd()/RCC_APB1PeriphClockCmd()
下面是 TM32 软件固件库的程序中对 RCC 的配置函数(使用外部 8MHz 晶振)
/**************************************************************************
* Function Name : RCC_Configuration
* Description : RCC 配置(使用外部 8MHz 晶振)
* Input : 无
* Output : 无
* Return : 无
**************************************************************************/
void RCC_Configuration(void)
{
/*将外设 RCC 寄存器重设为缺省值 */
RCC_DeInit();
/*设置外部高速晶振(HSE)*/
RCC_HSEConfig(RCC_HSE_ON); //RCC_HSE_ON——HSE 晶振打开(ON)
/*等待 HSE 起振*/
HSEStartUpStatus = RCC_WaitForHSEStartUp();
if(HSEStartUpStatus == SUCCESS) //SUCCESS:HSE 晶振稳定且就绪
{
/*设置 AHB 时钟(HCLK)*/
RCC_HCLKConfig(RCC_SYSCLK_Div1); //RCC_SYSCLK_Div1—AHB 时钟 = 系统时钟
/* 设置高速 AHB 时钟(PCLK2)*/
RCC_PCLK2Config(RCC_HCLK_Div1); //RCC_HCLK_Div1—APB2 时钟 = HCLK= AHB 时钟
/*设置低速 AHB 时钟(PCLK1)*/
RCC_PCLK1Config(RCC_HCLK_Div2); //RCC_HCLK_Div2—APB1 时钟=HCLK/2= AHB 时钟/2
/*设置 FLASH 存储器延时时钟周期数*/
FLASH_SetLatency(FLASH_Latency_2); //FLASH_Latency_2 2 延时周期
/*选择 FLASH 预取指缓存的模式*/