您的位置:首页 > 其它

2、STM32 系统时钟配置

2016-11-27 11:53 211 查看
 
  STM32F103外部接8M的振荡器,经过倍频后最高可达72MHz。目前TI的M3系列芯片最高可达80MHz。在stm32固件库3.0中对时钟频率的选择进行了大大的简化,系统调用函数为 SystemInit();该函数中会对系统各个总线时钟进行如下配置 :

constuint32_t  SystemFrequency = SYSCLK_FREQ_72MHz;           /* 硬件频率 */

constuint32_t  SystemFrequency_SysClk = SYSCLK_FREQ_72MHz;    /* 系统时钟 */

const uint32_t SystemFrequency_AHBClk = SYSCLK_FREQ_72MHz;    /* AHB总线频率  */

constuint32_t  SystemFrequency_APB1Clk = SYSCLK_FREQ_72MHz/2; /* APB1总线频率 */

constuint32_t  SystemFrequency_AHB2Clk = SYSCLK_FREQ_72MHz;   /* APB2总线频率 */

上面的函数只能将时钟设置为72MHz,如果需要自己定义各个总线的时钟,可进行如下初始化 :

void RCC_HSE_Configuration(void)
{
RCC_DeInit(); /* 将外设RCC寄存器重设为缺省值 */
RCC_HSEConfig(RCC_HSE_ON); /* 设置外部高速晶振(HSE)打开 */
if (RCC_WaitForHSEStartUp() == SUNCESS) /* 等待外部晶振HSE起振 */
{
/* 设置AHB时钟HCLK : RCC_SYSCLK_Div1 – AHB时钟 = 系统时钟 */
RCC_HCLKConfig(RCC_SYSCLK_Div1);
/* 设置高速AHB时钟 PCLK2 : RCC_HCLK_Div1 – AHB2时钟 = HCLK */
RCC_PCLK2Config(RCC_HCLK_Div1);

/* 设置低速AHB时钟 PCLK1 : RCC_HCLK_Div2 – AHB1时钟 = HCLK/2 */
RCC_PCLK1Config(RCC_HCLK_Div2);
/* 设置PLL时钟源及倍频系数, 9 表示倍频的倍数 8*9 = 72MHz */
RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);
/* 使能PLL */
RCC_PLLCmd(ENABLE);
/* 检查指定的RCC标志位-PLL是否准备好 */
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);
/* 设置系统时钟 */
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
/* 0x08 : PLL作为系统时钟 */
while(RCC_GetSYSCLKSource() != 0x08);
}
}



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: