概述
①首先查看晶振的规格,若为8Mhz,则在stm32f10x.h的第119行与第130行将值改为8000000,
对应位置代码如下
#if !defined HSE_VALUE
#ifdef STM32F10X_CL
#define HSE_VALUE ((uint32_t)25000000) /*!< Value of the External oscillator in Hz */
#else
#define HSE_VALUE ((uint32_t)6000000) /*!< Value of the External oscillator in Hz */ /******************将6000000改为8000000*****************************/
#endif /* STM32F10X_CL */
#endif /* HSE_VALUE */
/**
* @brief In the following line adjust the External High Speed oscillator (HSE) Startup
Timeout value
*/
#define HSE_STARTUP_TIMEOUT ((uint16_t)0x0500) /*!< Time out for HSE start up */
#define HSI_VALUE ((uint32_t)8000000) /*!< Value of the Internal oscillator in Hz*/ /*********************将6000000改为8000000************************/
/**
* @brief STM32F10x Standard Peripheral Library version number
②之后将下方代码放到main.c中,并视情况修改倍频数
void RCC_Configuration(void)
{
ErrorStatus HSEStartUpStatus;
/* 复位系统时钟设置*/
RCC_DeInit();
/* 开启HSE*/
RCC_HSEConfig(RCC_HSE_ON);
/* 等待HSE起震并稳定*/
HSEStartUpStatus = RCC_WaitForHSEStartUp();
/* HSE是否起振成功 */
if(HSEStartUpStatus == SUCCESS)
{
/* HCLK(AHB)时钟源为SYSCLK 1分频*/
RCC_HCLKConfig(RCC_SYSCLK_Div1);
/* PCLK2时钟源为HCLK(AHB) 1分频 */
RCC_PCLK2Config(RCC_HCLK_Div1);
/* PCLK1时钟源为HCLK(AHB) 2分频 */
RCC_PCLK1Config(RCC_HCLK_Div2);
/* 设置FLASH延时周期为2 */
FLASH_SetLatency(FLASH_Latency_2);
/* 使能FLASH预取缓存 */
FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
/* 选择锁相环(PLL)时钟源为HSE 1分频,倍频数为9,则输出频率为72MHz */
RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9 );
/***********采用8MHZ晶振,若要达到输出72MHZ,就需要9倍频*******/
/***********若采用6MHZ晶振,若要达到输出72MHZ,就需要12倍频*******/
RCC_PLLCmd(ENABLE); /* 使能 PLL */
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET); /* 等待 PLL 输出稳定 */
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); //选择SYSCLK的时钟源为PLL
while(RCC_GetSYSCLKSource() != 0x08)
{}
}
}
最后
以上就是任性香氛为你收集整理的stm32f1更换晶振后程序的变动的全部内容,希望文章能够帮你解决stm32f1更换晶振后程序的变动所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复