STM32外部时钟更改后程序设置方法

由于STM32F10x库官方采用的是默认的外接8MHz晶振,因此造成很多用户也采用了8MHz的晶振,但是,8MHz的晶振不是必须的,其他频点的晶振也是可行的,只需要在库中做相应的修改就行。

方法(1):

第一步:在main函数中执行下面的函数(红色字体的C语句,根据自己的硬件的外部晶振大小而确定的)

//RCC_HSE_Configuration函数设置HSE作为PLL的时钟源,不设置的话在main函数执行前执行了SystemInit函数

/*************************************

* 执行SystemInit函数后芯片内部时钟为:

* SYSCLK 72MHz

* AHB 72MHz

* PCLK1 36MHz

* PCLK2 72MHz

* PLL 72MHz

**************************************/

void RCC_HSE_Configuration(void)

{

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

RCC_HSEConfig(RCC_HSE_ON);//设置外部高速晶振(HSE) HSE晶振打开(ON)

if(RCC_WaitForHSEStartUp() == SUCCESS)//等待HSE起振,SUCCESS;HSE晶振稳定且就绪

{

RCC_HCLKConfig(RCC_SYSCLK_Div1);//设置AHB时钟(HCLK) RCC_SYSCLK_Div1 ----- AHB时钟 = 系统时钟

RCC_PCLK2Config(RCC_HCLK_Div1);//设置高速AHB时钟(PCLK2) RCC_HCLK_Div1 ----- APB2时钟 = HCLK

RCC_PCLK1Config(RCC_HCLK_Div2);//设置低速AHB时钟(PCLK1) RCC_HCLK_Div2 ----- APB1时钟 = HCLK/2

FLASH_SetLatency(FLASH_Latency_2);//设置FLASH存储器延时时钟周期数FLASH_Latency_2 2延时周期

FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);//选择FLASH预取指缓存的模,预取指缓存使能

RCC_PLLConfig(RCC_PLLSource_HSE_Div2,RCC_PLLMul_9);//设置PLL时钟源及倍频系RCC_PLLConfig(外部时钟分频因子,PLL倍频系数) RCC_PLLCmd(ENABLE);//使能PLL

while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);//检查指定的RCC标志位(PLL准备好标志)设置与否

RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);//设置系统时钟(SYSCLK)

while(RCC_GetSYSCLKSource() != 0x08);//0x08:PLL作为系统时钟

}

}

STM32外部时钟更改后程序设置方法

STM32外部时钟更改后程序设置方法相关文档

最新文档

返回顶部