金牌会员
 
- 积分
- 1479
- 金钱
- 1479
- 注册时间
- 2016-1-25
- 在线时间
- 260 小时
|
STM32F103 8M晶振改16M晶振:
我们知道,F103默认的外部晶振是8M,系统时钟频率是72M,但实际项目中,多数情况下可能会采用16M,25M晶振等等,如果不注意,很容易就超频,导致单片机无法正常运转,此处以16M晶振为例,说明一下时钟频率的修改。
1.修改stm32f10x.h中HSE_Value的值,8M修改为16M。
#define HSE_Value ((uint32_t)16000000) /*!< Value of the External oscillator in Hz*/
2.修改system_stm32f10x.c中static void SetSysClockTo72(void)函数。
在此函数中,我们不需要修改其他地方,只需修改PLLCLK时钟设置。
/*!< PLLCLK = 8MHz * 9 = 72 MHz */
原来的代码:
// RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMULL));
// RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC | RCC_CFGR_PLLMULL9);
修改后:
RCC_PLLConfig(RCC_PLLSource_HSE_Div2, RCC_PLLMul_9);//先将晶振分频,再倍频, 16 / 2 * 9 = 72,之所以使用这个函数,是因为我当前使用的库有些标志没有。
如果大家使用的库有以下标志,建议大家使用下面的两句话。
/* PLL configuration: PLLCLK = HSE * 9 = 72 MHz */
RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE |
RCC_CFGR_PLLMULL));
RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLXTPRE_HSE_Div2 | RCC_CFGR_PLLMULL9);
|
|